这是学习笔记的第 1856篇文章
在问这个问题之前,我们先简单来聊下:DBA到底要不要掌握开发技能。
在回答这个问题之前,以下摘自一些网友的疑问和评论:
- 一直在做DBA,但是不懂开发,现在想学一门语言,大家提点建议,学什么语言好 ?
- 最近总有冲动想去学编程,但是有怕学下来在工作上没啥用
- 应该要懂吧,虽然不是专职的开发人员,但有时要测试之类的要使用啊,读懂代码还是有必要的。
- 编程知识总是有用的,学习一下思路和总体的运行情况,任何一个系统都是应用与数据库的整合才行。
- C、C++和java是编程语言,DBA和这些有什么关系?你了解相应的sql不就行了
里面的很多评论是在2012-2013年左右的,在当时看来是一个待确认的问题,现在看来答案是铁定的:需要,而且需要熟练掌握。
先从招聘需求来看,但凡是招聘系统运维和DBA的岗位,几乎很少能看到不需要开发技能的,运维开发技能已经默认成为了招聘的一个硬需求。或者退一步来说,数据库技能水平可以再培养,但是不懂开发技术,没有开发基础,要通关拿到offer还是很难的。
看看现在DBA的招聘需求,再来看看多年以前,你会发现一个明显的道理:不进则退。
我会从几个维度来解释。
DBA在行业的定位,是和运维保障紧密联系起来的,我们经常会说运维DBA,运维行业的潜规则就是背锅,背系统的锅,背数据库的锅,背网络故障的锅。。。运维行业的三板斧是重启、重装、回滚,不要问为什么,看起来神奇的问题总有解决的门道。运维部门的痛点是只花钱不挣钱,每每到了评业绩的时候,我们能体现出的最好指标就是节省了多少钱,而研发部门是挣了多少钱,虽然听起来差不多,实际上从定位上来说差别大了去了。
所以慢慢的就会形成一种很特殊的文化,做了又没好处,做得多出错的概率越高,还倒扣分,与其这样还不如不做。所以在保障范围内,还是相对保守一些。
当然这种情况是在一个可控维度内的,但是业务要发展,需求会升级,所以原来的那些慢慢就会跟不上了。比如你维护了20台服务器,现在手工还完全搞的定,搞什么自动化,再来20台,辛苦点,加个班也能搞定。但是再翻倍,那人工基本就没戏了。这个时候懒政不作为已经不起作用了,现在已经影响到基本的保障需求了。
近些年来提出来的DevOps不是空穴来风,很多都是基于实践的理念。
这个时候有两个分支,一个是运维保障,一个是运维服务。
运维保障是份内的事情,对外可能是不透明的,就比如数据库的灾备,高可用,其实很多时候业务压根不关心,但是DBA要关心。这些在没有问题的时候都是鸡肋,这一层面的工作我们可以理解为体现的是技术价值,这也就是很多业务同学不理解DBA的一个原因。
对于业务来说,能够和他关联紧密,并且能够直接感受到的,就是业务服务了。比如业务要做一个数据迁移,要开通一个权限,要做下数据变更等,DBA得支持,以前是能支持,现在在运维保障的基础上要支持的好。
简单来说,就是下面的三个维度:
- 响应业务需求
- 提高服务效率
- 提升服务质量
下面是一个数据库方向的运维规划图,仅供参考。
我们可以看到对于业务可见的其实就是业务服务。这些工作看起来简单,但是很琐碎而且实际上没那么简单。要实现这样的一个需求,势必就要你有一些基础的铺垫。
说了这么多,其实是通过一个更加全局的角度来理解DBA的定位,DBA的核心定位早已经不是数据恢复了,而是提供高质量的数据服务。
所以在敏捷运维的大背景下,我们是希望快速响应业务,尽可能提高业务价值,同时夯实技术价值,两者缺一不可。
数据管理如何统一,这是第一个现实问题,以前是个人主义的excel就可以搞定,做了什么事情小本本上都记得清清楚楚,现在要平滑对接,对接的粒度就是流程,所以有元数据的建设,有后续的流程的建设,这些都需要以前的技术积累,也需要一定的开发技能。在这里需要明确的是DBA不需要花太多精力在前端技术上,而是需要更多关注后端的架构和实现。脚本开发技术本质上不属于运维开发技能范畴,你需要一门高级编程语言来辅助你的工作。
而这些要投入精力去做,会发现需要的不仅仅是开发技能,还需要学习产品思维。
产品思维能够体现出你是否已经深刻理解了要做的事情。而这在很多技术方面的同学是极为欠缺的。一个比较常见的情况就是设计出来的前端惨不忍睹,后端需要10个参数,前端绝对就是10个框或者10个按钮,所以我刚说不要投入太多的精力在前端上,只有深刻理解了业务需求和定位,你才能摆脱一些技术上的束缚,能够设计出更加完善的服务产品,单纯在技术层面深入只会让你走入一个死胡同。最直白的情况就是你设计了一个系统,功能强大,但是使用成本高,学习曲线高,导致用不起来,业务同学不买账。
专业的人做专业的事情,我们作为DBA是专业的,那么我们提供的数据服务也应该是专业的,流程不应该沉睡在你的脚本里面,而是应该通过一种更加友好的方式去体现,掌握开发技能仅仅这是我们职业生涯转型的一个小插曲,我们需要在夯实基础的前提下,更加深入的理解业务,无论你是做DBA还是其他行业,你都应该会成为一个行家里手。