“危机必然存在,能力模型才是关键”
首先我对这种言论的第一反应是:这是一种对新技术的一种焦虑感(回顾过去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项数据库技术体系以外的技术,比如你可以同时对容器很精通,或者对于整体系统架构的设计非常擅⻓。试问,对于这样的人才,无论什么时代来到,都会是比较抢手的人才吧?
“云时代的倒车,DBA更具全局优势”
个人理解:让研发具备DBA的能力,本身是“开云时代的倒车”。因为云本身,不管是在屏蔽底层基础设施的稳定性上,还是在自身产品内核的完善建设上,都具有更强的容错及兼容能力,因此云不仅要提供一个稳定的基础设施,更是屏蔽了诸多研发过程中的一些复杂性、容错性,让研发更加注重对业务自身的建设上。
不管是在云时代,还是自建时代,研发都需要对数据库本身做一定程度的理解,比如合理的设计范式、结构设计、索引设计、SQL写法等,但是我们也看到云数据库越来越智能化,甚至能对SQL智能改写、索引自动优化做到了很高程度的自动化,这进一步削弱了研发对数据库本身的关注度。
但凡事也有例外,比如数据库类型越来越多,不同场景可能使用不同类似的数据库更加具有优势,过去这种选型由DBA来主导完成。基于云DB对研发复杂度的屏蔽,研发可以根据自己对云数据库产品的理解程度,进行合理的选型,不过这里面是有潜在的风险的。
比如早期货拉拉就有类似的实践:研发自行做了很多数据库选型,最终导致的结果是服务治理失控,同时也带来很严重的业务风险(比如一条数据既写MySQL,又写MongoDB,跟ElasticSearch最后还要刷一份到Redis缓存,有吐血的修数据历史)。因此这部分工作仍旧需要DBA来指导完成,因为DBA在这方面相对而言会有更好的大局观。
“互相成就,融合是趋势”
在我的分享中也说到了研发赋能的问题:DBA怎么去给研发赋能?怎么让研发能够去关注到数据库?去主动优化数据库?这其实是一种趋势。
因为在云原生的大背景下,数据库的可能会变成一种大规模海量场景,那么在这种场景下,单凭DBA自己的这种运维力量,可能并不能完全覆盖所有的数据库运维场景,那么DBA通过自动化运维平台,通过可视化的界面,包括把一些专业技术指标转化成可理解、可读性的图形化的界面,把这个平台赋能给研发,让研发通过这个平台去了解数据库,去主动的去优化数据库,这样是一个非常好的趋势。
“研发具备DBA能力,是设计程序之本,
无关云时代影响”
我们现在强调的是开发运维的一体化、协同,我理解起码包括两个层面:研发要有运维的意识来去开发设计程序,运维要以软件工程的理论来指导自动 化运维的落地。首先任何人开发出来的系统是为了让它稳定运行,这个观点相信大家都认同。
研发开发设计程序之初,就要考虑这套系统后续的可维护性,那么怎么让它能够达到运维标准呢?以数据库为例,你设计的表是否创建了合适的索引,SQL代码是否有高效的执行计划等,这些我认为都是最基本的要求。很多公司并没有专⻔的DBA,那就要求开发必须具备这样的能力。这个跟是否云时代没有必然的关系,只是云上的应用更加强调了这个能力。
云时代的DBA职责有什么转变?应该提前做些什么?
“巧用云来赋能,转变成架构师角色”
转变:
数据库的可靠性、稳定性,在云能力加持下,不再是核心工作(比如部分SLA的工作由云来保障);
如何科学合理的使用云能力,赋能业务在架构设计方案规划,以及节约成本会显得更重要。
准备:
在对云的理解上:对云产品进行积极学习、了解各家云的套路玩法;
个人能力建设上:复合多元化的能力建设、做到懂数据库、懂平台、懂研发、实现DBA到架构师的转变。
“落实研发能力,深究智能运维”
这个问题非常好,就是说在云原生时代到来之后,包括我们整个的自动化,或者AIOps发展到一定阶段的时候,其实是要求我们的DBA要有一定的研发能力的。
这种研发的能力不仅只是对某些研发语言的这种掌握,还要有对云原生技术的掌握。因为DBA需要去结合相应的云原生的原有的功能,然后再把这种功能串联到运维的场景,这样的话才能够使得我们整个运营体系,能够随之去发生相应的变化和成长。
本身后期我们是要去做一些智能化AIOps建设的,所以在这个过程中,DBA可能需要学习的一是研发,二是智能化,DBA一定要有走出舒适圈的驱动力。
“趋向全栈工程师,成为复合型人才”
就像前面讲的一样,运维领域目前更加需要一个全栈工程师,复合型人才。在系统规模有限,数据库实例个数有限,靠单独个人的能力确实能够优化、维护好每一套系统。但当你的实例规模达到成千上万的时候,就不能单纯靠数据库技术去完成工作。比如要搭建CMDB、自动化运维平台、SQL审核与发布工具等,或者要跟开发一起进行系统的分布式架构设计,规划系统与系统间的数据调用、数据交互等,如何能够在K8s上面实现MySQL、Redis的快速交付等,这些都要求我们的 DBA人员,要深刻认识到这种变化和迫切的改变,紧跟技术发展方向。
特别鸣谢
如果字段的最大可能长度超过255字节,那么长度值可能…
只能说作者太用心了,优秀
感谢详解
一般干个7-8年(即30岁左右),能做到年入40w-50w;有…
230721