查看原文
其他

看 Bytebase SQL 审核七十二变

candy Bytebase 2022-12-19

通过前篇「别拿 SQL 不当代码,那些年我们一起埋过的坑,大家了解了一些 SQL 审核规范背后的含义。那么,在落地阶段,有没有什么办法可以将 SQL 审核丝滑地集成到开发上线流程中去呢?


Bytebase 提供三种集成方案

本文将结合 Bytebase 提供的 SQL 审核功能向大家介绍 3 种不同的集成方案:

  • 使用 Bytebase Console 在数据库变更前进行 SQL 审核。
  • 与 GitHub 和 GitLab 集成,在代码审核时完成 SQL 审核。
  • 通过 API 与自研系统集成,自定义 SQL 审核的时机。

    使用 Bytebase Console 进行 SQL 审核对象命名规范

    Bytebase 提供基于 web 的图形交互工具 Bytebase Console,支持不同角色的用户通过协同的方式对数据库变更生命周期进行管理。SQL 审核是其中的一项核心功能。业务团队开发者在提交数据库变更工单后,只有 SQL 审核(需配置 SQL 审核策略)通过后,审核人(通常是业务开发团队负责人或 DBA)才能批准应用数据库变更。为保证数据库变更的正确性提供了很好的检查机制。

    无论团队中是否有专职 DBA,都可以通过 Bytebase Console 为数据库变更提供更安全更便捷的管理。SQL 审核策略配置详见文档 https://www.bytebase.com/docs/sql-review/review-rules/create-schema-review-policy。

    在 GitHub 或 GitLab 中进行 SQL 审核

    数据库变更脚本文件也是代码文件的一部分,Bytebase 支持在代码审核时进行 SQL 审核,即在提交的 PR 或者 MR 中如果包含数据库变更脚本文件,会自动触发 SQL 审核,无缝融入 GitHub 和 GitLab 的 CI/CD 流程中。
    对于 GitHub 和 GitLab,Bytebase 提供的集成方式略有不同:
    • GitHub 代码仓库可选择安装 GitHub Action,GitHub App 或 SQL Review CI。

    • GitLab 代码仓库仅支持安装 SQL Review CI。

    具体的操作步骤详见文档 https://www.bytebase.com/docs/sql-review/sql-advisor/overview。

    在自研系统中进行 SQL 审核

    部分团队使用自研平台来管理日常的开发上线流程, SQL 审核能力可直接集成 Bytebase 提供的 SQL 审核 API。Bytebase 的 SQL 审核 API 具有跟 Bytebase Console 等同的 SQL 审核能力,可根据自己的业务需求自定义审核规则的等级,设置运行 SQL 审核的环境,具体的集成方式可参见文档 https://www.bytebase.com/docs/sql-review/sql-advisor/api。


    构建 SQL 审核最佳实践

    不同的研发组织可结合自身管理特点选择不同的方案,但仍然有一种我们较为推荐的、适合大多数研发组织的集成模式,即结合「与 GitHub 和 GitLab 集成的审核」 和「Bytebase Console 集成的审核」 两种模式,实现开发团队提交应用代码时预审,DBA 团队执行变更前终审的「两级协同审核」模式。
    在以往的工作中,DBA 仅在临上线前启动 SQL 审核工作,这种模式的弊端很多,典型的就是常常由于业务上线压力而降低 SQL 审核标准,导致应用程序出错。那为什么不能在更早阶段启动 SQL 审核呢?有 3 种可能的原因:
    • DBA 资源紧张几乎是所有企业的现状,在更早期阶段的介入审核是心有余而力不足。

    • 若要求开发团队自主审核,其并不具备 SQL 审核能力。

    • 若依赖传统的审核工具,复杂操作流程和糟糕的用户体验让团队使用动力不足。
    Bytebase 是一款基于 DevOps 理念打造的工具,很好的解决了上述困境。在 GitHub 或 GitLab 代码仓库中集成 SQL 审核,既赋予了业务开发团队审核能力,又能无缝融入其工作流程中,丝滑的工作体验使得开发团队预审核成为可能。使用 Bytebase Console 审核则更符合 DBA 的工作习惯,作为数据库变更上线前的最后保障,二次审核极为必要。除此之外,DBA 还可以在 Bytebase 平台上查看所有数据库相关的变更记录,有助于排查和回溯问题。了解两级协同 SQL 审核解决方案更详细的信息,可查看基于 GitHub 的数据库 CI/CD 最佳实践


    总结

    目前 Bytebase 的 SQL 审核策略中,为 MySQL 提供了 48 条可配置的规则,能满足绝大多数常用审核需求,与 Yearning 和 Archery 审核能力相当;同时,Bytebase 也提供对 PostgreSQL 的审核规则,暂仅支持了 14 条,更多规则正在开发中,将会达到与 MySQL 相同的规则覆盖度。
    无论大家是使用 Bytebase Console 进行 SQL 审核,还是将 SQL 审核集成到 GitHub 和 GitLab 的 CI/CD 流程中,或者是集成 Bytebase API,甚至是采用两级协同 SQL 审核的方案,都可以自定义配置 Bytebase 为 MySQL 和  PostgreSQL 提供的审核规则。


    别拿 SQL 不当代码,那些年我们一起埋过的坑
    程序员黑话集
    DevJoy,一场办给开发者的游园会
    中国首个,Bytebase 进入 CNCF Landscape CI/CD 目录

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

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