大概是2011年,我第一次听到了行业内去ioe的声音。那会刚毕业,还在一家中小银行工作,而工作中的三件套恰恰就是ioe。当时的领导也很想挑战一下去ioe,包括我自己也对这事很有兴趣。
十年后,已经辗转多个公司和岗位,和当年的同事问起当年三件套的现状,他给我的答案是,i全去掉了,e去掉的一大半,o非但没去掉,使用的规模还扩大了很多。这个答案倒也在我预料范围内。一家中小银行,it部门正式编制的员工不到20人,其中多数人都是项目经理或者系统负责人的身份,所有系统都是外包开发的模式。人员编制和组织结构决定了,很多东西怎么省事怎么来。
十年前去i的时候,正好赶上pc服务器突飞猛进,成本优势逐渐显现出来。越来越的系统基于x86架构开发,无论从哪个角度,用它们替掉小型机都成为了大多数公司的首选。从另一个角度,以前的我所在的银行使用的小型机只有ibm一家,各种后续支持服务如果有问题,也没得选。替掉这些小型机之后,一下子多了好几个厂商的硬件可以选择。过去几年哪家服务好设备稳定,就多采购点,反过来就减少采购量。用这个办法也调动起来了几家客户经理的积极性。
emc的存储相对没有那么好容易去,毕竟emc的存储在行业内是第一梯队,那会不用emc从稳定性以及性能考虑,也没有多少选择余地。更何况在银行,业务稳定性压倒一切。没有哪个it领导敢拿着自己的饭碗去冒这个风险。所以去e面临的现状要比去i要麻烦很多。核心业务系统至今还在使用emc的存储,而外围系统以及一些灾备环境,使用了其他品牌。从规模上来看,去掉了一大半。
去o是最复杂的,核心系统以及很多重要的业务系统都是基于oracle开发的,去o几乎就等同于推倒重做了。2013年核心系统替换的时候,db2、oracle、sybase都曾经作为备选,但是没有任何人敢去提用开源的mysql或者当时国内使用人数很少的pg。而且非常重要的是,现有的运维人员都没有过长期运维其他数据库的经验。要么从外面招要么让现有的运维人员学习。从外面招就得挤压其他编制,现有人员学习就要接受打怪升级阶段遇到的各种问题。最后开了半年的会,正行长拍板,继续使用oracle,确保稳定性与连续性。而诸如理财、风控、网银这些重要系统,继续保持使用oracle。几年下来,伴随着新业务不断增多,oracle的使用规模反而扩大了。而一些不那么重要的系统,比如oa、员工关怀、差旅预订之类的,则陆陆续续使用了mysql、pg以及其他数据库。从另一个维度上,提高了其他数据库的使用比例。
事实上,这家中小银行是很具有代表性的。中国很多的传统企业,对于it部门的编制卡得都很严格。阿里当年去ioe是有足够的工程师来支撑,但是面对很多中小企业一人多职能的需求,显然做不到拿出大量的运维人员去折腾开源的东西。风险越低越好,投入编制越少越好,厂商能力越强越好。最后兜兜转转发现,还是得选一个稳定强大的商业数据库。以前用oracle的继续用oracle,用sql server的也别乱替。oracle贵不假,但是分摊到全年的预算里,好像又没有那么高。去o在很多传统企业面前,反而就没有那么急迫了。
到了外资银行,几乎就没有开源数据库被使用。除了我刚入职的时候为了补充本地监控配了一套zabbix mysql,生产环境清一色的oracle、sql server、sybase。公司在全球几十个国家都有业务,全球采购授权服务之后,分摊到各个国家的分公司,成本已经非常低。更何况和中国企业不同的是,外企有大量的四五十岁员工,很多都是扎根在oracle二三十年的老前辈。谁敢说用开源数据库替掉oracle,等于直接动摇了他们在公司的根基,这种事情绝对不会发生。在离职前的最后一年,我做过多次分享,尤其是pg,和oracle有很多相似之处,在国外的认可程度也非常高。这些资深的dba和开发人员听完之后,都会拿出少有的委婉来告诉我,这些东西很酷,我们也觉得会是一件很有前途的事,不过和公司目前的各种规定和策略不是很匹配,而且没有人能拍板去做这件事情。
到了上家公司,自己熬成了名义上的dba团队老大,有了更多的权限。而和很多中国民营企业一样,数据库的种类、版本、服务标准,都没有一个成文的规定。都是项目经理和软件公司沟通,选一个最稳定最易用的数据库。相当一部分比例的数据库都是oracle和sql server。经历过多次有关去o的探索和经历之后,我对于去o这件事情的热情和是否去o都已经有了不一样的认识。这一次我不再纠结于是否真的要去o,而是更多地从业务和系统本身考虑,来决定选择哪种数据库。
例如财务类系统,需要审计同时又要保证稳定性的,一般就默认使用oracle,因为现阶段除了oracle没有哪个方案更合适,也不要给自己找麻烦。一些对于复杂查询没有那么多需求,同时数据量又可控的系统,选择用mysql来支持。数据量比较大,但是没有审计要求的,我会建议项目经理考虑一下要不要用pg。
几年下来,让我明白一件事情,在现有的产品选择以及人力配置下,去o是做不到的。去o只是手段,但不是目的。从dba的角度,最终的目的有两个,一个是确保每年的运维成本是可控的,既包含了硬件的预算,也有每年付给oracle和微软的软件授权。另一个是不要显著增加自身的工作量。在述职报告中,我不再用去o这个字眼,而是改用减o。减少对oracle不必要的成本投入。甚至可以和领导说,今年dba团队在完成更大规模数据库运维的情况下,成本没有明显提升甚至持平,能不能给大家涨点工资。
最近两年,我们都处在信创的浪潮之中。越来越多的国产数据库应运而生。这在十年前是一件难以想象的事情。作为一个中国人,有着家国情怀,何尝不希望有一天,我们中国人自己的数据库,能够在全球数据库领域独树一帜。然而这一块,我们缺课缺的太多了,oracle、微软积累了几十年的优势,绝不是三五年就能追上的。去o固然是一个很美好的愿景,然而我们仍然要铭记,不要为了去而去,仍然要从实际出发,脚踏实地地做好每一项数据库相关的工作。
十年,从去o到减o,也是我在工作中,不断思考不断调整自己的一个过程。