说了N年,是时候终结 “DBA消亡论” 了丨话题接力

一直努力营业的 2021-10-29 14:16:50
云计算自2006年提出至今,“DBA消亡”的话题也由此生。近几年,云计算技术突飞猛进,国内外的云计算市场规模都爆发式增长,再加上政府纷纷推出“云优先”政策,云计算技术日趋完善,但也引起了传统DBA们的焦虑。

 

图片

来源:中国信通院、智研咨询
 
无独有偶,近几年来DBA工程师招聘数量也变化。据相关资料统计,2019-2021年的 DBA 工程师招聘数量一直是下降趋势;令人关注的 DBA 薪资,在经历了2016-2019年持续增长的4年之后,2019年也开始骤降。
 

图片

DBA薪资情况(图片来源:职友集
 
从原先的技术侧重长期对峙,到现在提倡开发运维协同一体化(DevOps),DBA的工作重心也随之变化,并且,如今还提出了“开发需要具备DBA能力”的要求。
 
由此看来,传统DBA的处境似乎不容乐观,数据上云、自动化运维、人工智能等新型技术的发展给 DBA 们提出了新的需求和挑战。但无论是危言耸听还是先见之明,我们从来不是为了制造焦虑,而是要解决焦虑。
 
我们该如何看待DBA的未来?DBA如何去适应云环境下的工作变化?工作重心需要作何调整?为此,我们采访了走在技术前沿的3位数据库专家平安银行数据库团队经理-王鹏冲京东科技数据库团队负责人-高新刚、货拉拉数据库部门负责人-蔡鹏,一起来听听他们的观点: 

 

Q1
目前形式看,云时代的到来,会不会让DBA失业?“DBA消亡论”是否危言耸听?
 
 
蔡鹏

“危机必然存在,能力模型才是关键”

 

首先我对这种言论的第一反应是:这是一种对新技术的一种焦虑感(回顾过去11年职业生涯经历的历次“类DBA将死”的言论)。

 

这种危机言论的产生,跟云对基础设施的完善有很大的关系(云在正在对传统IT技术产生深刻影响跟变革),云上最大的特点就是资源池化,使用的水电煤化,这很大程度上,降低DBA日常工作的复杂性不可替代性,尤其在中小公司,对DBA的需求上确实减少了很多,因此“消亡论”是存在的。

 

但是从我个人在货拉拉多云环境的实践上看,基于云,确实简化了DBA在自建时代,围绕基础设施稳定性做的大量工作。但是我们又面临了新的一些问题,比如:如何用好云,更好的基于云的一些特性,比如极致弹性能力做到合理使用云,做到成本最小化,这本身就是一个新的问题。

 

再比如:未来企业肯定是基于不同云产品的特性&能力,甚至价格优势进行多云化选择,那如何指导业务进行产品技术选型?本身就需要DBA在对云产品有深入的理解(过去DBA深入研究数据库内核,现在要深入研究云产品)。那因此伴随而来的,就是多云产品技术选型下,如何提供一致性的运维及研发体验?这是DBA面临的新问题。

 

围绕这些问题,DBA仍旧要做大量的技术投入(所以不要误以为上云,DBA就没有技术含量了,只是要解决的问题变了),任何一次的技术进步,都伴随着新的挑战跟机会,消亡的不是DBA本身,而是缺乏对新事务的探索与好奇心。

 

云时代下,DBA的角色将更加复杂化,对DBA的要求也会越来越高,DBA多元化的能力模型,是保持竞争力的关键。

 

一点点忠告:在多年工作经验中,我也看到很多DBA过早的抛弃了对技术原理的探索,停留在基本的操作层面,误以为将这些日常的操作玩的很溜,就代表了能玩转数据库,我也多次跟组内的同学灌输原理的重要性,这是DBA的基础技术底蕴。

 
高新刚

“仍是核心主力军,但要与时俱进”

 

因为我是DBA出身,所以我觉得云原生时代的到来,对我们DBA确实有一些这种技术上,或者说重心上的这种转变,但是至于说“DBA消亡论”,我觉得确实有点危言耸听了。

 

从我的角度来说,至少近期或者之后很长一段时间,DBA仍然是整个基础设施运维的核心主力军,是不可缺少的一环,对于我从事多年数据库运维的经验来看,其实我认为云原生时代的到来,使得我们 DBA这个行业确实是发生了一些技术栈上的改变。

 

从以前关注底层的操作系统、存储、网络,再到上层的各类数据库,以及数据库周边生态的一些工具,都可能需要做从0~1的建设。

 

而到了云原生时代,我们很多底层的服务,是通过云原生的自动化运维的平台去实现的。所以说从技术栈上说,我们可能更偏向后端,去做一些应用链路,去做一些数据库优化相关的事情。

 

所以我觉得从这么多年的运维经验来看, DBA仍然是全栈工程师的代名词,他是在原有的数据库技术和原有的系统运维,以及周边的一些应用能力技术之上,去做一些扩容,然后增加这种云原生、容器、微服务相关的技术。

 

但是我们的核心的能力是没有变的,依然是围绕着数据库的稳定性、数据库的数据安全、容灾能力,去展开相关的工作,然后去做一些预防、应急相关的事情,包括一些体系化的建设。

 
王鹏冲

“保持原生竞争力的同时,学习多领域知识,

迎接时代的到来”

 

我始终认为,是金子哪里都会发光。问题在于人才要紧跟时代的需求,比如目前我对我们团队的人员要求是,至少要懂3种以上的数据库,至少掌握1⻔运维开发语言,至少能够实现常⻅运维场景的脚本化编写,至少掌握1-2项数据库技术体系以外的技术,比如你可以同时对容器很精通,或者对于整体系统架构的设计非常擅⻓。试问,对于这样的人才,无论什么时代来到,都会是比较抢手的人才吧?

 

Q2
如何理解:云时代,要让研发具备DBA的能力?
 
 
蔡鹏

“云时代的倒车,DBA更具全局优势”

 

个人理解:让研发具备DBA的能力,本身是“开云时代的倒车”。因为云本身,不管是在屏蔽底层基础设施的稳定性上,还是在自身产品内核的完善建设上,都具有更强的容错及兼容能力,因此云不仅要提供一个稳定的基础设施,更是屏蔽了诸多研发过程中的一些复杂性、容错性,让研发更加注重对业务自身的建设上。

 

不管是在云时代,还是自建时代,研发都需要对数据库本身做一定程度的理解,比如合理的设计范式、结构设计、索引设计、SQL写法等,但是我们也看到云数据库越来越智能化,甚至能对SQL智能改写、索引自动优化做到了很高程度的自动化,这进一步削弱了研发对数据库本身的关注度。

 

但凡事也有例外,比如数据库类型越来越多,不同场景可能使用不同类似的数据库更加具有优势,过去这种选型由DBA来主导完成。基于云DB对研发复杂度的屏蔽,研发可以根据自己对云数据库产品的理解程度,进行合理的选型,不过这里面是有潜在的风险的。

 

比如早期货拉拉就有类似的实践:研发自行做了很多数据库选型,最终导致的结果是服务治理失控,同时也带来很严重的业务风险(比如一条数据既写MySQL,又写MongoDB,跟ElasticSearch最后还要刷一份到Redis缓存,有吐血的修数据历史)。因此这部分工作仍旧需要DBA来指导完成,因为DBA在这方面相对而言会有更好的大局观。

 
高新刚

“互相成就,融合是趋势”

 

在我的分享中也说到了研发赋能的问题:DBA怎么去给研发赋能?怎么让研发能够去关注到数据库?去主动优化数据库?这其实是一种趋势。

 

因为在云原生的大背景下,数据库的可能会变成一种大规模海量场景,那么在这种场景下,单凭DBA自己的这种运维力量,可能并不能完全覆盖所有的数据库运维场景,那么DBA通过自动化运维平台,通过可视化的界面,包括把一些专业技术指标转化成可理解、可读性的图形化的界面,把这个平台赋能给研发,让研发通过这个平台去了解数据库,去主动的去优化数据库,这样是一个非常好的趋势。

 
王鹏冲

“研发具备DBA能力,是设计程序之本,

无关云时代影响”

 

我们现在强调的是开发运维的一体化、协同,我理解起码包括两个层面:研发要有运维的意识来去开发设计程序,运维要以软件工程的理论来指导自动 化运维的落地。首先任何人开发出来的系统是为了让它稳定运行,这个观点相信大家都认同。

 

研发开发设计程序之初,就要考虑这套系统后续的可维护性,那么怎么让它能够达到运维标准呢?以数据库为例,你设计的表是否创建了合适的索引,SQL代码是否有高效的执行计划等,这些我认为都是最基本的要求。很多公司并没有专⻔的DBA,那就要求开发必须具备这样的能力。这个跟是否云时代没有必然的关系,只是云上的应用更加强调了这个能力。

 

Q3

云时代的DBA职责有什么转变?应该提前做些什么?

 
 
蔡鹏

“巧用云来赋能,转变成架构师角色”

 

转变:

  • 数据库的可靠性、稳定性,在云能力加持下,不再是核心工作(比如部分SLA的工作由云来保障

  • 如何科学合理的使用云能力,赋能业务在架构设计方案规划,以及节约成本会显得更重要。

准备:

  • 在对云的理解上:对云产品进行积极学习、了解各家云的套路玩法;

  • 个人能力建设上:复合多元化的能力建设、做到懂数据库、懂平台、懂研发、实现DBA到架构师的转变。

 
高新刚

“落实研发能力,深究智能运维”

 

这个问题非常好,就是说在云原生时代到来之后,包括我们整个的自动化,或者AIOps发展到一定阶段的时候,其实是要求我们的DBA要有一定的研发能力的。

 

这种研发的能力不仅只是对某些研发语言的这种掌握,还要有对云原生技术的掌握。因为DBA需要去结合相应的云原生的原有的功能,然后再把这种功能串联到运维的场景,这样的话才能够使得我们整个运营体系,能够随之去发生相应的变化和成长。

 

本身后期我们是要去做一些智能化AIOps建设的,所以在这个过程中,DBA可能需要学习的一是研发,二是智能化,DBA一定要有走出舒适圈的驱动力。

 
王鹏冲

趋向全栈工程师,成为复合型人才

 

就像前面讲的一样,运维领域目前更加需要一个全栈工程师,复合型人才。在系统规模有限,数据库实例个数有限,靠单独个人的能力确实能够优化、维护好每一套系统。但当你的实例规模达到成千上万的时候,就不能单纯靠数据库技术去完成工作。比如要搭建CMDB、自动化运维平台、SQL审核与发布工具等,或者要跟开发一起进行系统的分布式架构设计,规划系统与系统间的数据调用、数据交互等,如何能够在K8s上面实现MySQL、Redis的快速交付等,这些都要求我们的 DBA人员,要深刻认识到这种变化和迫切的改变,紧跟技术发展方向。

 

从目前的趋势来看,DBA这个职业不会消失,技术的发展就伴随着数据井喷式增长,有数据就有数据库管理员。但云的出现,决传统DBA大部分的运维工作,在故障诊断和性能分析上,也有了相应的自动化、智能化方案DBA的门槛会随之增高。
 
同时,DBA未来可能会越来越转向 SRE 和 DevOps 这样的角色,DBA 职责和能力模型会发生一些改变,所以就需要DBA树立全局思维,增设研发能力,提高技术水平。云产品、新技术的成熟和触达业务需要有相当长的时间,但趋势不可逆,所以不管怎样,DBA必须要现在就开始行动了。

 

特别鸣谢

 
 
最后,感谢3位老师的倾情分享,有了你们的宝贵经验和建议,相信DBA同学们未来的职业进阶之路将走得更加顺畅。小伙伴们还有什么独到见解,欢迎在留言区评论~

图片

 

 

最新评论
访客 2021年09月03日

有没有1000多张表

访客 2021年08月28日

metrics =》 metrix 错误

访客 2021年08月25日

只看到如何避免,如何减少书写慢 sql

访客 2021年08月25日

没看到如何治理呀

访客 2021年07月23日

果然k8s不是神!

活动预告