查看原文
其他

云时代数据库DevOps:硅谷调研(上)

Ni Demai 云数据库技术 2024-03-04

走向DevOps:云时代数据库开发硅谷调研总结

作为一个数据库内核老兵,一直欠缺从应用开发和DBA/DevOps的视角,尤其是经过云时代的革命之后,在现实世界中如何使用数据库的经验?好奇心驱动笔者在过去两个月,拜访了一些在硅谷的高科技公司,今天将这个第一手的不全面的小结分享给大家。


数据库是任何业务最关键核心的组建,尤其是传统型事务数据库OLTP。以最简单的架构为例,用户数据比如账号管理在MySQL/PG中存储;后台通过Java的应用程序来交换访问处理数据;前台通过客户端,如手机端或者是网页端来跟最终的用户交互。在介绍本次调研中,笔者将会把调研对象的软件和组织架构对照这个例子简化

一、挑战:Stateless业务应用开发与stateful数据库的稳定态

在这个过程中数据库是stateful的状态机,从一个稳定态向下一个稳定态转变。传统前云(pre-cloud)阶段,数据库的变化主要指它的schema(数据库对象,比如表格,索引)演进和用户数据本身的变化(在上面的例子中就是个人账户的余额);云时代引入第三个变量:资源管理。显而易见,用户数据的变化大部分是通过java的应用程序来完成的;schema演进即可通过应用程序,常常是拥有特殊权限的管理员(为方便理解,本文还是采用传统方式,称他们为DBA或系统管理员admin);资源管理,很多是管理员手工操作,越来越多地转向IaC(Infra as Code, 如openAPI/Terraform)。

应用程序的发布,必须同步数据库的scheme的变化,有时要协调云上资源的伸缩。在敏捷开发的同时,还有特别关注对于数据库稳定状态的保护,诸如管理员误操作rm -rf 和 delete/truncate ... t1;或应用程序中的低质量查询害群之马 select * from t1,t2,t3把整个系统砸打死;更有甚者,极端情况下的有意破坏,俗称“删库跑路”。

对于上述情况,公司常常“膝跳反应”的提高员工“素质”并且设立“军规”。一个高水平的技术人员当然会提高产品质量,事物的两面性就代表人工成本的增加;设立“军规”甚至会出现搞笑的结果,笔者曾亲眼见到某办公室的半面墙贴满了”最佳实践“,又称”禁止操作“50条。太多的准则超过了普通人类的操作能力。而且无论多少”军规“都无法解决大项目/软件工程的团队协调问题。

另一个挑战,对于数据库它本身的变化并没有像对于一个应用程序开发那样很好的管理工具。于是在近10多年,业内引入了数据库开发: Database DevOps的概念。期望把数据库开发的尽量的融合在应用程序的概念中,似乎很合理。日常工作中通常是如下手段:

  • • 用权限管理和SQL规则封堵。比如阿里的DMS产品中的安全与规范;

  • • 引入数据库开发流程:testing, staging,deployment, 开发、测试到发布过程中强制注入Code review和审批。以人工保证SQL质量

  • • 将应用软件变更与数据库状态机绑定,如Liquibase提出的UnifyAllCode的理念。

理论、理念和创业公司讲故事,看起来很美,在现实世界是如何实现的呢?带着好奇心,笔者走访了多家硅谷的企业。以下是我的笔记。

二、四类公司和老爷爷老奶奶们

概念是概念,理论是理论,故事讲了,这些操作在现实中是怎样操作的?笔者在过去两个月时间拜访了在硅谷的资深技术leader们,去看看他们团队的实操情况。

我把这些公司大概分成了如下四类

  • • 一、老爷爷老奶奶公司:最早上船的RDBMS使用者。比如在DB2主机和软件输出时代的oracle的客户

  • • 二、 传统互联网公司:99/ 2000年第一波互联网,可能还没有上云,但不排斥

  • • 三、 成熟互联网公司:2008次贷危机前后出现的,已经上公有云或者有很好的云架构

  • • 四、 初创公司:近5~7年,工程师有经验,知道什么是正确的,公司成长和生存的优先级超过形成规范标准流程的需要

第一类是非常成熟的公司,他们是第一批商用计算机的先行者,在70和80年代已经完成了数字化转变,比如说各大传统银行,石油公司,制造商(Boeing, Caterpillar)和发达国家的政府机构,比如美国劳工部。他们早已把整个行业应用转移到了Oracle和DB2/zOS(mainframe)上,有定义清晰(并且壁垒分明)的应用开发程序员和DBA的团队和职责划分。

岁月的沉淀使老爷爷老奶奶公司有一套自己独立的开发和维护流程,演进的非常缓慢慢,在很稳定的系统在其上做任何流程上的改动都是有很大的风险。类似老爷爷老奶奶走路,不摔倒比速度重要的多。他们的员工积累多年的实践经验,虽然没有最先进的工具,但正常情况下也能保证老屋不塌,破船不漏,小车不倒只管推。比如在疫情初期,New Jersey州政府就急招在主机上的COBOL开发人员,因为政府的失业救济系统还建立在这个老朽的系统上,已经不堪重负(https://www.cnbc.com/2020/04/06/new-jersey-seeks-cobol-programmers-to-fix-unemployment-system.html)。

老爷爷老奶奶们是财富100(Fortune 100)的主力,属于典型的金主,然而他们(自己也承认)并不代表新的技术潮流,所以不是我们今天讨论的主要对象。

我们更加关注的传统和成熟的互联网公司。敬请期待 下一篇: 《云时代数据库DevOps:硅谷调研(中)- “大禹治水,疏导为主” Data Service团队的出现》

调研如西溪高庄“啸月”窥亭


继续滑动看下一个

云时代数据库DevOps:硅谷调研(上)

Ni Demai 云数据库技术
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存