从 Google 删库,到蚂蚁跑路,Care 与 Fear 点燃的 Flare

Bytebase 第一次完成融资后写了一篇文章,主要讲了从行业层面做 Bytebase 的逻辑。一年过去了,这一年我们所处的开源/infra/数据库/企业服务赛道从热点归于平静,尤其在国内,又习惯性地反应过度,直接降到冰点。但从全球来看,整体行业其实是在继续加速发展的,年初我们的一篇「苍狼白鹿,星霜几度|万字长文回顾 2022 年数据库行业」在中英文渠道都获得了不少的关注,而今年我们能写出的内容还能更加的丰富。而今天这篇文章想讲一段个人的经历,回到做 Bytebase 的初心。也算是到年底了,给这一年来支持我们的朋友和用户一份回顾和展望吧,Enjoy。

正文

2015 年某一天下午,Google 加州山景城总部 CL2 一楼,Google 云数据库工程团队所在地。彼时一个工程师正盯着屏幕,校对着一组亟待修复的数据库实例,准备采取下一步行动。「啪」,沐浴在加州阳光下的金手指敲下了按键,指令立马顺着 Google 错综复杂的网络,横穿大半个美国,飞奔到了千里之外的爱荷华数据中心。眼看着待办任务上又划掉了一项,工程师习惯性地往后靠了靠座椅。只是紧接着几秒之后,就看到他把头伸到了屏幕前,双眼瞪大,紧盯着眼前的文字:

Instance XXX has been successfully deleted.

file

升迁,跳槽,转行,这些都可以作为职业生涯的分割点。而对我来说,一个重要的分割点,就是 2015 年这个敲下指令的瞬间,因为在这一刻,我也不幸毕业,加入了误删过生产数据库的大军。多年以后,我依然能很清晰地回忆出之后的每一个行动细节,先是后背立马冒出冷汗,呆滞了几十秒的时间,脑海快速检索各种急救方案,无果之后,从工位起身,走到 TL 旁边,强装镇定地告诉对方自己刚误删了数据库。TL 沉思了片刻,然后说到,这个是有版本管理的,可以尝试恢复一下?我被一下子点醒,慌乱之中,居然忘了这套当年 Google 云创始团队写的基于 Bigtable 上的 Megastore 上的 VFS,存储性能虽然糟糕,但是实现了强悍的增量变更和版本化,所以撤销误删数据库,只要一个简单的版本回退,相当容易。

file

劫后余生后,可能伤疤也是战士的功勋章,我承担起了更多管理数据库的职责,再加上业务本身的发展,万级,十万级,一直到 2018 年离开 Google 的时候,我负责的已经是全球数一数二体量的数据库实例集群。而接下来的一站,则是回到中国,加入当时如日中天的蚂蚁金服,也延续我在 Google 的数据库老本行,负责蚂蚁内部的数据库平台。蚂蚁的数据库平台业务主要分为三块,一个是面向 DBA 的运维管理平台,一个是面向业务研发和 DBA 协同的开发者平台,还有一个是做数据库诊断的智能平台。通过这几个平台,收拢了所有蚂蚁内部开发者和 DBA 们对数据库的变更和运维操作。

file

虽然自己不再像在 Google 那样,在一线操作数据库,但压力却又高了一个数量级。毕竟负责的平台要保驾护航的,是那些支撑着支付宝,余额宝,花呗这些国民级应用的核心数据库。一开始加入时,团队同学先给我这个外来和尚科普了下国内等保的概念,然后指着屏幕上的数据库列表告诉我,看,这几个都是最高等保级别的,一定要好好看着,可都是能要了公司命的!到后来渐渐和大家混熟后,他们再给我讲当年出了严重的数据库事故后,7x24 连轴转,享受着全程被所有总裁们站在身后围观的待遇。

file

置身于这样的环境中,偶尔我也会产生一种似乎能手握着一家千亿美金估值公司命脉的错觉,但下一秒马上被钉钉里的告警通知拉回打工人的现实。蚂蚁的技术水位整体比不上 Google,但这套内部的数据库平台,有些方面却还是领先的(最近不又中了一篇 SIGMOD)。毕竟业务场景是工具平台最好的试炼,蚂蚁支撑的业务事关民生,金融,保险,蚂蚁在业务层面的创新力也强于 Google。数据库平台团队,每天就在被各种变态的业务场景蹂躏中走向成熟。但饶是如此,身为局中人,自己当然也知道平台本身的各种不完善。记得有一次线上 P1 故障,就是因为一个危险操作按钮,没有加二次确认,导致了 DBA 的误操作。蚂蚁内部的故障是要定责的,定责又是和绩效挂钩的。所以到了故障复盘会那天,业务方和数据库团队坐在一起,前面的基本都是铺垫,最后定责的那一刻才是高潮,开始互相甩锅。但锅总有甩不掉的时候,我在数据库团队呆了一年,而这一年里背的故障,比我其余整个职业生涯加起来的还要多。但当我告别团队的时候,却还是由衷地感谢大家,没有提前终结我在蚂蚁的生涯。

file

数据库团队之后,我被调去了开发者工具部门,后来又去了生产力协同平台。不同部门有各自的精彩和挑战,但在数据库团队时的压力无疑是最大的。在巨大的压力面前,会暴露出更真实的人性,有些是负面的,但也有不少的善意。比如我们和业务团队掰扯故障定责败了,就把故障带回到数据库团队内部消化。到了内部一切还是好商量的,DBA,平台,引擎这几块的主管在一起,盘一下身上已经背的故障,再结合今年团队的情况,匀一下。蚂蚁的技术在整个业界其实还是挺领先的,但是蚂蚁的业务总又是走在技术的前面,许多时候都是没条件先硬上。所以故障分完,马上大家都还是要背靠背去支援前线的业务。这样一年下来,数据库团队背的故障数总是遥遥领先。到了这里,就又体现了老板们的管理智慧,因为还是会给数据库团队一些照顾,如果真的按照故障数打绩效,那数据库团队基本就年年认领 3.25 了。

file

其实前面提到和业务团队开复盘会的互相甩锅也是调侃,身为平台技术团队的我们也知道,自己一开始 YY 出来的轮子都是方的,业务团队都是硬着头皮开着方轮子的车,踏上征途,再在旅程中一点点把轮子磨圆。一路颠簸,不时抛锚,偶尔翻车,但大家一边骂骂咧咧,一边还是一起把车扶起来,继续赶路。有人问我,国内做 infra 有什么优势,能想到的还是那服基建狂魔的祖传药方,场景多,人心齐,脑子活,干劲足。

没有圆模子的车间只能生产方的轮子,那就一边赶路一边把轮子磨圆,越磨越圆,纵情向前。

团队间日常撕的虽狠,但一起扛过了一场场硬仗,发现最终沉淀下的还是战友般的信任。大家团结一心,努力工作,为自己,为家庭,也为世界带来更多微小而美好的改变。支付宝,支托付,蚂蚁对内对外最强调的都是信任二字。确实只要信任的招牌不倒,队伍就能重新集结,业务一时被锤,也有重整的一天。

file

虽然我负责的业务没有被捶,但后来我还是从蚂蚁跑路了,因为自己想要做一款工具,就是 Bytebase。一直说做产品要从自身的痛点出发,光这点,Bytebase 是完美符合的。Bytebase 是一款面向研发和 DBA 协同的数据库开发者工具,放眼整个业界,这也是一个新品类,因为是我从蚂蚁三段跨界经历,数据库,开发者工具,生产力协同中提炼出来的。但说到底这还是一个数据库领域专业性很强的工具,而设计内核基于的是在 Google 以及蚂蚁数据库团队经历的痛点。

把这个设计内核掰开来看就是两半,一半是 Care,一半是 Fear

Care 的部分,在于我看到但凡要和数据库打交道的一线同学,无论是业务研发还是 DBA,都有点像部队里扫雷的工兵,任务风险高,但部队要推进,又不得不做。Google,蚂蚁的工兵装备倒是挺完善了,虽然也是险象丛生,但踩雷了还能幸存。但其他公司,扫雷的任务还是要做,可是又没有基本的作业装备,那我希望 Bytebase 就能成为他们的出门装备,帮助他们高效安全地作业。 Fear 的部分,在于我身为技术负责人,也害怕数据库误操作导致的毁灭性打击。我在 Google 算是逃过一劫,但是每当想起,我还是会后怕,假设那个数据库真的被删掉无法恢复了,对于我自己,我的主管,整个产品甚至公司品牌会带来多大的负面影响。在蚂蚁数据库团队,所幸团队给力,否则也有可能因为数据库误操作引发公共事件,而我作为主管,也很可能要承担责任,被扫地出门。有经验的技术负责人一定是希望尽量统一数据库操作入口,数据库规范和操作变更流程的,以避免诸如 #删库跑路 导致的团灭。所以对于技术负责人,我也希望 Bytebase 能成为落地他们这些想法的工具。

file

而说到 #删库跑路,它之所以能成为梗甚至破圈,也是因为它能先在广大程序员群体产生共情,因为有经验的程序员都知道带上#删库跑路的徽章是一个概率事件,要做的就是如何把这个风险降到尽可能的低:

  • 个人养成良好的操作习惯,降低 20% 概率
  • 公司建立标准化的操作流程及培训体系,降低 20% 概率
  • 技术架构简单,降低 20% 概率
  • 文档清晰,降低 20% 概率

而通过引入专业的数据库开发工具,把理念和流程通过工具进行承载,减少甚至完全避免手工直接操作数据库的机会,则又能降低至少 50% 的概率。

file

而说到引入工具,我在蚂蚁的平台部门,无论是做数据库工具,开发者工具还是协同工具,当把新工具推广到业务线的时候,总是会迎来反弹。一线的业务研发总会觉得,前线业务已经忙不过来了,平台部门又在搞什么幺蛾子来卡我们。现实中,许多被引入的平台工具确实是只重视了管控,但忽略了一线的使用感受,反而拖累了整体的生产力。 所以当我们在设计 Bytebase 的时候,最核心的任务是去做中央管控和业务线灵活度之间的平衡。用户引入 Bytebase 的目的是希望提高全局的总生产力,所以管控/流程这些都是需要的,但不同公司达到最高生产力的控制点是不一样的,所以 Bytebase 也留了一定的调节空间,让不同公司可以做不同的配置。

file

同行还有投资人常会问我 2 个问题

  • Bytebase 这个场景很窄,为什么选了它 - 这个问题,说服有难度,因为没有相似的经历可以共情。Bytebase 的初心,既始于我带着一线研发帽子的 care,也源自我换成技术主管帽子的 fear,两者交织起来,点燃了内心冲动的 flare。
  • Bytebase 这个东西国外没有对标,为什么你们能做 - 这个问题,我其实也反感回答。因为对方直接上来假设了 infra 类工具只有国外团队可以无中生有,却忽略了我们团队已被国内外最严苛场景千锤百炼的事实。

限制中国 infra 团队走向全球的往往不是客观的条件,而是主观的成见。

从 Google 删库,到蚂蚁跑路,这一串的经历不仅赋予了我设计 Bytebase 的思路,也给了我足够的底气。因为我知道整个数据库开发工具领域目前的上限在哪里,Google 也不是在所有地方做的都是最好的,蚂蚁和阿里也有不少走在业界的最前沿。

而中西合璧的 Bytebase 还能把整个领域带到一个新的高度,帮助全球不同的团队在他们各自的倒 V 型曲线上,找到数据库开发生产力的最高点。

Stay young, be simple, sometimes naive.

file


💡 你可以访问官网,免费注册云账号,立即体验 Bytebase。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/28795.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Apache RocketMQ RCE漏洞复现(CVE-2023-33246)

RocketMQ RocketMQ是阿里巴巴在2012年开发的分布式消息中间件,专为万亿级超大规模的消息处理而设计,具有高吞吐量、低延迟、海量堆积、顺序收发等特点。它是阿里巴巴双十一购物狂欢节和众多大规模互联网业务场景的必备基础设施。 漏洞概述 在其5.1.0版…

基于Servlet+mysql+jsp学生宿舍信息管理系统

基于Servletmysqljsp学生宿舍信息管理系统 一、系统介绍二、功能展示1.用户登陆2.学生-主页面3.学生-缺勤记录4.学生-修改密码5.宿舍管理员-主页面6.宿舍管理员-学生查看7.宿舍管理员-缺勤记录8.系统管理员-宿舍管理员管理9.系统管理员-学生管理10.系统管理员-宿舍楼管理11.系统…

5大趋势与10大应用场景!未来的智能工厂要这么建...

在经济下行压力、人口红利消失、消费结构升级、疫情冲击等多种因素推动下,制造企业加快转型步伐,工厂正向高效化、智能化、绿色化方向跃迁升级,不断涌现出技术创新、应用领先、成效显著的智能工厂。 近日,中国信息通信研究院发布…

外观模式(十三)

每天都是全新的一天,感谢今日努力的自己。 上一章简单介绍了组合模式(十二), 如果没有看过, 请观看上一章 一. 外观模式 引用 菜鸟教程里面的外观模式介绍: https://www.runoob.com/design-pattern/facade-pattern.html 外观模式(Facade Pattern&…

OpenCV 项目开发实战--用 (C++ / Python)实现伪着色

文末附相关测试代码下载链接 在本教程中,我们将首先展示一种使用 OpenCV 的预定义颜色图对灰度图像进行伪彩色/伪彩色 的简单方法。如果您更愿意使用自己的颜色图,我们还将展示一种定义自定义颜色图的方法。 行星和太空中其他物体的灰度图像通常是伪彩色的,以显示细…

Vue中如何进行滚动吸顶与侧边栏固定

Vue中如何进行滚动吸顶与侧边栏固定 在Vue应用程序中,当需要实现滚动吸顶和侧边栏固定效果时,我们可以使用一些技术来实现。这些技术包括CSS和JavaScript,可以帮助我们实现各种各样的滚动效果。 如何实现滚动吸顶? 滚动吸顶是指…

[Halcon3D] 3D鞋点胶的点云边界提取

📢博客主页:https://loewen.blog.csdn.net📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢本文由 丶布布原创,首发于 CSDN,转载注明出处🙉📢现…

JavaWeb之JSP

文章目录 JSP的基本介绍JSP的本质JSP的三种语法JSP头部的page指令language属性contentType属性image.pngpageEncoding属性import属性autoFlush属性 - 给out输出流使用buffer属性 - 给out输出流使用errorPage属性isErrorPage属性session属性extends属性 JSP中的常用脚本声明脚本…

什么是oa系统,什么是工单系统,有啥区别?

什么是oa系统,什么是工单系统,有啥区别? 一、OA系统与工单系统介绍 1、什么是OA系统 OA系统全称为Office Automation,即办公自动化系统。它是一种专门为企业和机构的日常办公工作提供服务的综合性软件平台,具有信息…

Python抓取商品详情方法的几种方法比较

抓取商品详情的方法有很多种,以下是其中几种常见的方法及其优缺点: 1.使用requests库发送HTTP请求,然后解析HTML或JSON格式的数据: 优点:这种方法可以抓取几乎所有网站上的数据,支持GET和POST请求&#xff…

佩戴比较舒适的蓝牙耳机有哪些?值得入手的蓝牙耳机分享

​对于年轻人来说,耳机使用场景丰富,时尚追求度高,喜好的音乐类型也是多种多样,需求侧重也不尽相同。下面我来推荐几款相当不错的蓝牙耳机给大家,总会有喜欢那款! 一、南卡OE蓝牙耳机 佩戴舒适度打分&…

界面开发框架Qt新手入门指南 - 使用Calendar组件创建日历(一)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 本文中的CalendarWi…

快速傅里叶变换python实现

img { margin: auto; display: block } 一、前言 我想认真写好快速傅里叶变换(Fast Fourier Transform,FFT),所以这篇文章会由浅到细,由窄到宽的讲解,但是傅里叶变换对于寻常人并不是很容易理解的,所以对于基础不牢的人…

RK3588平台开发系列讲解(USB篇)USB Device端口组合配置过程

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、configfs二、configfs 配置过程2.1、使能相关的宏2.2、挂载configfs2.3、创建名为g1的usb复合设备2.4、配置PID和VID2.5、创建并配置strings子目录2.6、创建configuration和字符串2.7、创建functions2.8、将functi…

【C#】并行编程实战:任务并行性(上)

在 .NET 的初始版本中,我们只能依赖线程(线程可以直接创建或者使用 ThreadPool 类创建)。ThreadPool 类提供了一个托管抽象层,但是开发人员仍然需要依靠 Thread 类来进行更好的控制。而 Thread 类维护困难,且不可托管&…

【半监督图像分割 2023 CVPR】UniMatch

【半监督图像分割 2023 CVPR】UniMatch 论文题目:Revisiting Weak-to-Strong Consistency in Semi-Supervised Semantic Segmentation 中文题目:重新审视半监督语义分割中的强弱一致性 论文链接:https://arxiv.org/abs/2208.09910 论文代码&a…

功能测试常用的测试用例大全

登录、添加、删除、查询模块是我们经常遇到的,这些模块的测试点该如何考虑 1)登录 ① 用户名和密码都符合要求(格式上的要求) ② 用户名和密码都不符合要求(格式上的要求) ③ 用户名符合要求,密码不符合要求(格式上的要求) ④ 密码符合要求,…

大数据时代——生活、工作与思维的重大变革

最近读了维克托迈尔 – 舍恩伯格的《大数据时代》,觉得有不少收获,让我这个大数据的小白第一次理解了大数据。 作者是大数据的元老级先驱。 放一张帅照,膜拜下。 不过这本书我本人不推荐从头读一遍,因为书中的核心理念并不是特…

Mini热风枪 制作过程

首先引个流吧 立创开源广场:https://oshwhub.com/abby_qi/mini-re-feng-qiang 哔哩哔哩: 实物图 然后说一下硬件的选型和图 风扇:3010无刷风扇 额定电压3.7V(其实这个风扇还有其他额定电压的,比如9V12V,…

linux文件的增量备份 Shell命令脚本

简单的增量备份脚本,自己用到了之后把部分择出来记录一下,方便日后查阅 # 昨天对应的月份 n_mon$(date -d -1day %Y%m) # 组合文件夹路径 path/home/admin/"$n_mon" # 昨天的0点作为增量备份起始时间,今日0点作为截止时间 s_date$…