查看原文
其他

1:1000,新能源车企如何将数据库管理效能发挥到极致

cy Bytebase 2023-05-09

1:1000 的数据库变更管理困境
在数字化转型的浪潮下,越来越多的企业扩大了软件研发团队的规模以加速业务系统的迭代升级,从而应对快速变化的市场竞争环境。新能源汽车作为近年的风口行业,更加注重研发的投入,以 Bytebase 的某新能源车企客户为例,仅研发人员就超过千人。然而业务迭代并非简单的越快越好,因为快而忽略了质量,可能造成难以估量的损失,作为系统中最关键一环的数据库,每一次变更都要尤为谨慎。
该企业的数据库管理团队已经建立了基础的变更管理流程,每一次对数据库的改动都要求业务开发团队在系统中提交申请,DBA 审核完成后再由专人正式发布。但就像多数研发组织一样,该企业同样面临数据库管理人员严重不足的问题,甚至达到了 1:1000 的悬殊比例,而快速发展的业务又带来了极为频繁的数据库变更需求,这让日常的数据库管理工作陷入了困境:
  • 业务开发提交变更脚本繁琐。需要将语句复制粘贴到文档中,文字描述待变更目标库,再通过 IM 等协作管理工具发送给审核人,割裂的流程导致沟通成本极高。
  • 人工审核流于形式。随着变更请求快速增多,人工审核逐渐难以应对,最终只能抓大放小,甚至完全跳过审核阶段。
  • 手工发布效率低下。DBA 需要下载对应脚本再连接目标库执行,一旦出错需要反复沟通修改
  • 变更管理占用大量时间。由于变更频繁,DBA 日常花费大量时间处理相关工作,为了不影响变更时效,团队成员甚至需要时刻随身携带电脑。
这种困境亟待改变。


构建全新变更管理流程

通过引入 Bytebase,该企业构建了全新的变更管理流程,通过与上下游的研发工具打通,从变更发起,审核,再到最终发布实现全流程自动化,极大提升了人效,在确保变更质量的同时,DBA 节约了大量时间用于更多高价值的工作。

利用代码仓库管理 SQL 脚本并直接发起变更请求

SQL 脚本作为代码的一种,同样要求有序、一致,利用代码仓库进行管理无疑是最佳的选择。利用 Bytebase 的能力,实现了与代码仓库的集成,所有 SQL 脚本只要合并入指定分支,即可自动触发部署工单。对于企业的业务开发团队而言,在自己最熟悉的 GitLab 工作界面即可完成所有工作,大幅提效的同时也降低了来回复制代码出错的概率。

工单触发 IM 通知

由 GitLab 发送的变更脚本将在 Bytebase Console 生成工单,同时会自动在飞书中生成相应的消息通知审核人员可以第一时间查看工单,而业务开发团队也能第一时间获知工单状态变化。

SQL 脚本全自动审核

通过 Bytebase 内置的自动审核能力,该团队定义了不同的审核策略,实现了全自动的工单审核流程,诸如语法错误、性能隐患等问题在正式执行前即可被自动检测工具发现。同时,业务开发团队也可以实时获知审核结果,减少了沟通成本。

自动变更发布

通过审核的变更工单将自动发布到目标数据库,并即时反馈执行结果,免去了 DBA 手动执行的繁琐流程,也杜绝了误操作的可能。

移动端审批

对于一些小型变更,DBA 甚至无需登录 Bytebase Console,在 IM 中即可实现审阅与核准,大幅提升了业务团队的体验,这种便捷的审核模式极为适合这种业务变化频繁,审核需求多而迫切的业务场景。

数据库变更版本化管理

所有的变更都将进行版本化管理,相关的变更脚本、变更前后的数据库结构变化、工单审核流程等信息,全部都是可追溯的,数据库全生命周期尽在掌握。


企业的落地实践

在实践新一代数据库变更管理流程的过程中,该企业的 DBA 团队也总结出了一些落地经验。

自动、自动、还是自动

该团队核心理念就是贯彻自动化,通过应用一系列工具,将数据库的 CI/CD 的绝大多数环节实现了自动化,大幅解放了多个团队的生产力。当然,数据库的复杂性也决定了难以实现完全的自动化,对于特定场景的人工介入,仍然是一种必要的补充。

以 DevOps 为理念的自助管理

以 DevOps 的理念为指引,该团队非常强调让业务开发参与变更管理工作。这一过程关键是寻找到不影响开发团队工作习惯的模式,最合适的莫过于将相关工作内容植入开发团队常用工作界面,如 GitLab 与 IM 等工具。

合理分类数据库

为了有序引导开发团队参与变更管理工作,包括提交工单以及参与工单的审核流程,需要精准的界定权限。在这种理念下,不能简单延续传统集中化管理模式中按照维护等级进行分类的模式,更要按照产品线、项目组等维度进行划分,从而确保每一个开发者只能参与自身所属项目的数据库变更流程。

合理规划代码仓库目录

由于利用了代码仓库进行 SQL 脚本的管理,同样需要对其目录结构进行合理规划。总体上可以延用 monorepo 的理念,将所有脚本集中在一个仓库中存放。具体的子目录设计则与 Bytebase 中的项目组划分进行一一对应,确保同一个项目下的数据库脚本存放在同一个子目录下。

协作,而非单纯的管控

协作提效是最终目的,而非强制性管控。在实践中,DBA  对各类策略的制定都会与相关团队进行充分的讨论,可以有效降低新流程落地的阻力。

持续宣贯的必要性

面对上千人的开发团队,任何流程的落地都不会太简单,在早期难免有一些同事不习惯或是易于犯错,通过更新流程说明并进行持续性的宣贯,经过  2-3  周的适应期即可进入正常运转。
目前,该团队仍在不断优化管理流程,并持续探索诸如自助审核、自助优化、查询脱敏等能力赋能开发团队,后续我们也将邀请相关负责人给大家做一个正式的分享,敬请期待。(✪ω✪)


    Bytebase 1.12.1 - 支持 OAuth 2.0 的单点登录 (SSO)
    利用 Bytebase 与 Terraform 实现 TiDB Cloud 的一站式变更管理
    Bytebase 和 GitHub 签署 Technology Partner 技术合作伙伴协议
    Star History 月度开源精选|2023 年 1 月

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

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