数据库DevOps这个话题我讲过很多次了,在阿里的数据库环境,已经是成熟的实践经验。现在离开阿里,以独立数据库工具厂商的身份去讲这个话题,还是有一些不一样的思考。
09年,刚加入淘宝DBA团队的前几年,其实是很痛苦的。最早还没有工具和平台的思维,很多事情都是"手挑肩扛"。不过生产环境的数据库数量增长很快就远超团队人员增长速度。最早,淘宝内部将DBA分为"系统DBA",负责数据库的安装/部署、监控、备份、性能监控报警、故障诊断等工作;还有一部分是"产品DBA",负责面向上层业务的数据库支持,包括数据库的设计与发布、架构选型、业务优化、容量规划等。
当时我在"系统DBA"团队,为了解决人员与系统增长不匹配的问题,当时也在前辈建立的"北斗"数据库管理基础上进行改进,并构建了淘宝数据库环境内首个MySQL数据库管理平台”天机“,取名字也是来自"北斗"七星中的"天玑",不过取自"天机不可泄露"便取"天机"。而后,这个平台也几经改造与重构,发展为内部一套完整、健壮的DBaaS系统。
而"产品DBA"也面临着同样的问题,表现上略有不同。主要问题包括:业务/研发爆发式增长,"数据库的设计与发布、架构选型、业务优化(性能管理)、容量规划"这些原本DBA的工作,已经不可能再靠有限的DBA人力完成了。于是,内部的开始尝试通过一些简单的工具尝试解决这个矛盾。最早,先是使用WebSQLPlus
解决数据查询的问题、而后是dbtask
解决了数据库DDL发布的问题。再之后,对于研发、DBA如何一起共同支撑起业务发展,从而构建出了全新的iDB平台,并且在iDB从3.0升级到4.0版本时候,重新对平台做了定位,由一个面向DBA的工具,转变为面向研发使用数据库的产品,也是在这个时候,正式提出了数据库DevOps
的理念。
在2017年,这套产品也在阿里云上正式商业化发布,开始从一个服务阿里内部的系统正式的以商业化的形式服务云上的更多企业。
2021年,离开了阿里,一方面是很冲动,另一个很重要的原因是认为,这套系统应该是一个独立于某个云厂商的、第三方的系统,这样可以更好的服务当前企业用户,无论企业用户的数据库是在阿里云、还是在华为云、腾讯云、AWS、百度云,亦或者是在自己筹建的IDC之内,都可以很好的使用这个产品,用这个理念去管理数据库,去解决研发、DBA与数据库的问题。
记得特别清楚,有一年端午节,在内部p8->p9的晋升答辩上,有一个评委问我:“DMS/DTS”等这些工具产品,交由第三方厂商去做是不是更好?当时回答得很凌乱…,现在可以给评委一个简单的回答了:“是的”。
关于这次分享的详细内容可以参考,这篇文章:《企业级数据库 DevOps 最佳实践,通过 NineData 实现高效安全的数据库开发》。分享的片子如下:
orczhou-database-devops-best-practice-dtcc-2024