在最近这些年里,我一直在思考DBA的未来是如何的,此前我一直保持乐观,不过随着时间的推移,一种不安的感觉越来越凝重起来。
上周五在去参加一个会议的路上,我正好和海文同车。说到一件事儿,就是说在未来的数年间DBA和应用开发的关系。我们两个都觉得在所见到的行业里有一个趋势,那就是应用在不断向前,而数据库在不断退后。周一我看到海文发了一篇同样题目的文章,今天我从另外一个角度也来探讨一下这个问题。
历史总是在不断循环的,从DBA苦研发久矣,到研发苦DBA久矣。这是一个历史的轮回。我刚工作的时候,计算机和数据库都比较弱小,因此应用 研发是IT系统的主宰,程序员是神一样的存在。不过随后信息技术高速发展,服务器与数据库都在往前发展,而应用则在不断后退。数据库与服务器的进步让应用开发变得越来越简单,越来越多技术不是很强的人也都能成为程序员了,于是程序员从神变成了码农。
在这个阶段,应用系统中大量的复杂性让服务器、存储系统和数据库承担了,特别是数据库,承担了极为复杂的计算和逻辑推理任务。程序员的工作变得简单了,而DBA的工作日渐复杂。这时候DBA的价值是在不断升值的。2000年代的最初几年里,DBA的工资待遇开始超越程序员,后来甚至形成了碾压。我当时经营过一家软件公司,这家公司同时也在做数据库服务,一些优秀的程序员都希望能够转型成为DBA。
物极必反,随着数据库不断向前侵蚀应用的领地,数据库和服务器变得不堪重负了。企业的IT主管突然发现,数据库成为IT系统中明显的堵点,因为其他组件都是可集群化的,集中式数据库不能。
互联网架构的出现给了企业IT一个新的选择,那就是分布式架构。随着越来越多的传统企业将应用架构改造为分布式架构,数据库这个中心点被打散了,似乎以前不堪重负的数据库服务不会成为瓶颈了。
就这样随着应用不断向前,数据库不断向后,DBA所控制的阵地在不断的向后退,而研发则在不断的向前进。掌握通用IT基础设施的DBA所掌握的技能是很容易替代的,但是研发是与业务高度集成的,他所掌握的技术不仅仅是技术本身,还包括更为复杂的业务,他们的不可替代性超越了DBA。在这场斗争中,研发的话语权会日渐增大,而DBA的话语权则不断丧失。
这种互联网架构也不是毫无问题,首先是将原本高聚合的应用拆解的过程并非易事,这需要更高水平的研发团队才能完成,这意味着更高的研发投入。另外一点是IT成本的提升,原本学习互联网的经验是为了节约成本,不过很多企业很快发现,硬件成本降低只是相对小型机时代的降低。如果按照X86的成本来评估,分布式改造后的总体IT投入要远大于以前依赖数据库进行计算的集中式架构。随着PC服务器和数据库技术的发展,这种趋势越来越明显。
前阵子和一些行业ISV交流,他们觉得以前的业务系统只要把一些核心的PL/SQL存储过程写好,后面的研发其实是很简单的 。后来为了让应用能够适应不同类型的数据库,以及分布式架构的改造。这些存储过程都被JAVA模块替代了 。JAVA替代的坏处有两个,一个是效率大大下降了,因为JAVA程序与数据库的多次网络交互,让复杂一点的应用的性能下降明显;另外就是业务逻辑分散后管理起来十分困难了。JAVA程序员不会像以前一样直接调用集中化的存储过程,而是将一些业务代码不断拷贝 粘贴修改。
我突然想到目前国产化数据库都是兼容Oracle 的PL/SQL,今后数据库的存储过程不兼容问题得到了极大的改善,那不是又可以回归使用存储过程了?现实是悲观的,他们都觉得随着那一代对业务理解十分透彻的PL/SQL程序员的老去,现在已经找不到能够写出复杂存储过程的业务专家了。研发的方式一旦发生改变,就很难逆转。
最近十年服务器与数据库的技术进步并没有在这场数据库与应用的争夺中逆转局面,数据库并没有实现向前收复失地。这些年企业在总体投资上,也将更多的经费投入到了应用研发上,这大大挤压了对于运维的投入。应用向前,数据库向后的局面依然维持。
随着数据库国产化替代的开始,以目前国产数据库的能力而言,更没有能力像Oracle那样向前攻占应用的领地。随着数据库国产化替代的不断深入,应用还将继续向前侵占数据库的领地。
信创时代DBA的价值和生存空间是否会急剧缩小,对这个问题的看法,最近我有所改变。最近我的观点是,DBA的价值 空间会被更快地压缩。在目前我和一些国产数据库用户的交流中,我发现国产数据库DBA可以做的事情比Oracle DBA少多了。一方面是他们没法深度掌握国产数据库运维中的关键技术,一方面是因为使用了国产数据库,应用开发变得更加规范,对数据库的使用变得相对收敛,不会肆意使用数据库了。
说得更直白点的话,那就是在国产数据库替换时代,企业会逼着应用开发团队提升能力,来抵消国产数据库能力不足这个事实,这意味着企业进一步加大对研发的投入。对DBA来说,更高水平的应用开发团队并非好事。因为时间长了,DBA所擅长的工作大多数可以被研发接替了。今后数据库安装部署都被云平台和数据库自带的云管平台解决了,数据库的扩缩容都是一键完成了,数据库的慢SQL都自动审计了,SQL优化也更适合研发人员来完成,IT基础设施的问题都被智能化监控管理得很好了,那么DBA的价值在哪里呢?研发+DBA+三线专家/原厂服务这个体系可能会变成研发+三线专家/原厂服务,DBA被短路了。
作为DBA肯定是不希望这种情况发生的,那么DBA的思想必须做出转变,从不关心业务的IT基础设施管理者转向面向业务的信息系统管理者。积极向前探索,争取将数据库原厂的工作和一些研发的工作承担起来。这就需要DBA去研究和熟悉业务与应用的特点,帮助研发人员解决研发工作中的难题。如果不这样,当DBA被逼退到悬崖边上的时候,再想反击,可能就来不及了。
其实应用持续挤压数据库也并非易事,这意味着持续增加的研发投入。而随着企业降本增效以及人力成本的不断提升,持续加大研发投入也是有极限的。2023、2024年对大型软件企业的调查发现,中国软件行业的利润下降超过90%,这一点和我的观察是一致的。软件研发是否需要降低成本?如何才能降低成本?这个问题可能已经有很多人在思考了。不过最大的问题是国产数据库的能力是否能够支撑我们采用更加节约成本的方式去做研发?这场应用与数据库的博弈仍将继续下去。