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

news2025/2/3 10:04:37

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。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习PLC时为什么要学习上位机?

PLC是一种常用于工业自动化控制系统的设备。它用于监控和控制各种机器和过程,以实现自动化和优化生产。 学习PLC的过程中,了解和学习上位机是非常重要的。上位机是与PLC连接的计算机,它可以通过特定的软件与PLC进行通信、监控和控制。 以下…

【RabbitMQ教程】第七章 —— RabbitMQ - 发布确认高级

💧 【 R a b b i t M Q 教程】第七章—— R a b b i t M Q − 发布确认高级 \color{#FF1493}{【RabbitMQ教程】第七章 —— RabbitMQ - 发布确认高级} 【RabbitMQ教程】第七章——RabbitMQ−发布确认高级💧 🌷 仰望天空&#xff0c…

分布式ID解决方案

常用的分布式 ID 的设计方案有哪些?Snowflake 是否受冬令时切换影响? 典型回答 首先,我们需要明确通常的分布式 ID 定义,基本的要求包括: 全局唯一,区别于单点系统的唯一,全局是要求分布式系…

NLP——Information Extraction信息提取

文章目录 Information Extraction 步骤Named Entity Recognition (NER)Typical Entity Tags 典型实体标签IO taggingIOB tagging神经网络做 NER Relation ExtractionRule-basedSupervised Relation ExtractionSemi-supervisedSemantic Drift 语义漂移Distant supervision 远程监…

chatgpt赋能python:在Python中添加NumPy

在Python中添加NumPy Python是一种功能强大且广泛使用的编程语言。它被广泛用于数据科学、人工智能和机器学习等领域。NumPy是一种用于数学和科学计算的Python库。本文将介绍在Python中如何添加NumPy库。 什么是NumPy? NumPy是一个开源的Python库,它提供了大量的…

ROCKETMQ极简介绍,顺序,事务示例

整体架构 Name Server 管理Broker实例的注册,提供心跳检测机制 路由管理: Producer和Conumser通过NameServer可以获取整个Broker集群的路由信息 生产者 Producer 以生产者组的形式出现,一个生产者组可以同时发送多个主题的消息 Broker …

计算机组成原理 之 第五章 中央处理器

1. CPU的功能和基本结构 (1-1)运算器的基本结构 a. 寄存器与ALU通讯方式一:专用数据通路方式 是专用数据通路方式(并行传递) 多路选择器(MUX)或三态门 b. 寄存器与ALU通讯方式二:CP…

chatgpt赋能python:Python中添加SEO元素的实践

Python中添加SEO元素的实践 在SEO(Search Engine Optimization)优化中,添加正确的SEO元素对网站的排名和可见性至关重要。Python作为一种广泛应用于网络开发的编程语言,提供了许多用于添加和管理SEO元素的工具和技术。在这篇文章…

chatgpt赋能python:Python怎么求完数

Python怎么求完数 什么是完数? 在数学中,完数指一个正整数,它的所有因子(除了本身以外)之和恰好等于该数本身。例如,6是一个完数,因为6的因子为1、2和3,而1 2 3 6。 Python如何…

springboot+vue在线课程大纲知识点管理系统

对于之前在线课程管理系统的管理,大部分都是使用传统的人工方式去管理,这样导致了管理效率低下、出错频率高。而且,时间一长的话,积累下来的数据信息不容易保存,对于查询、更新还有维护会带来不少问题。对于数据交接也…

每天一道算法题第3天--排序子序列

排序子序列 1.题目2.题目解析3.代码 1.题目 链接: 排序子序列 2.题目解析 【题目解析】: 本题要求解的是排序子序列,排序子序列为非递增或者非递减,很多同学在这个非递增、非递减问题上很纠 结,注意:非递减就是a[i…

facebook文本生成音乐项目-audiocraft 安装教程

文章目录 所需环境安装ffmpeg克隆项目仓库安装相关依赖库运行项目模型下载自动下载模型失败MusicGen 模型下载地址 所需环境 ffmpegpython>3.9gitcuda118(torch>2.0) 安装ffmpeg 下载地址 下载后解压,然后将解压后的目录配置到系统…

chatgpt赋能python:Python怎么求最大值

Python怎么求最大值 如果您正在寻找一种简便快捷的方法来从一组数字中找到最大值,那么Python就是您的选择。作为一种易于学习和使用的编程语言,Python在数据处理和分析方面越来越受欢迎。本文将介绍如何使用Python来找出一组数字中的最大值,…

MySQL数据库基本命令操作

MySQL数据库基本命令操作 一、MySQL基本命令操作指令二、查看数据库结构1.查看当前服务器中的数据库2.查看数据库中包含的表3.查看表的结构(字段) 三、SQL语句1、SQL语言分类 四、SQL语句操作1、创建及删除数据库和表2…

Nucleo-F411RE (STM32F411)LL库体验 2 -sysclk的配置

Nucleo-F411RE (STM32F411)LL库体验 2 -sysclk的配置 1、Nucleo-F411RE 时钟源 Nucleo-F411RE开发版只有一个8M的晶振,看起来像是给st-link提供时钟的,所以猜测F411RE时钟的来源应该来自st-link(stm32F103c8t6&#…

数据库是什么?为什么要使用它?

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、数据库是什么? 二、为什么要⽤数据库 1、方便用户 2、安全的保存数据 3、利用数据库分析 三、数据库的分类 1、关…

chatgpt赋能python:Python添加包的方法

Python添加包的方法 Python是一种高级编程语言,拥有着强大的库和模块。在开发过程中,很大一部分时间会用于查找、安装和更新各种包或依赖库。本文将介绍Python添加包的方法,以帮助开发者更快地找到并安装所需的包及依赖库。 什么是包 在Py…

Java 中的重载(overload)和重写(override)

​ 重载和重写都是面向对象编程中的概念,但我们或许还听说过一种叫做覆写(overwrite)的概念。C 是拥有这个概念的,Java 只有 overload 和 override,Python 只有隐式的 overload 和 override,没有 o…

海思平台上USB WIFI的移植与局域网无线调试和视频流预览

目录 1.海思平台上USB WIFI移植概述 1.1、移植WIFI背景 1.2、移植的起点 1.3、实验案例 2.AP模式USB WIFI驱动移植 2.1、源码 2.2、修改移植 3.AP模式USB WIFI传输视频实战 3.1、部署USB WIFI驱动使之工作为AP 3.2、准备测试用例 3.3、测试实验 4.USB WIFI做sta模式…

python函数详解(超详细)

❄️作者介绍:奇妙的大歪❄️ 🎀个人名言:但行前路,不负韶华!🎀 🐽个人简介:云计算网络运维专业人员🐽 前言 首先零基础是能学python的,很多编程大神入门之前…