乐趣区

关于tidb:TiDB-Serverless-Branching通过数据库分支简化应用开发流程

2023 年 7 月 10 日,TiDB Serverless 正式商用。这是一个齐全托管的数据库服务平台(DBaaS),提供灵便的集群配置和基于用量的付费模式。紧随其后,TiDB Serverless Branching 的测试版也公布了。

TiDB Serverless Branching 性能使用户可能为其 TiDB Serverless 集群创立分支。这些分支能够实现并行开发,促成新性能疾速迭代,排查故障,开发者无需中断生产数据库的运行。该性能不仅简化了开发和部署过程,还放弃了生产环境中数据库的稳定性和可靠性。

一. 分支是什么?

对于集群而言,分支是一个独立的实例,其中蕴含一份原始集群的数据快照。它建设了一个隔离的环境,以便在不影响原始集群的状况下进行各种操作。

当为集群创立一个分支时,该分支中的数据与原始集群开始分叉,这意味着在原始集群或分支中进行的后续更改将不会被同步。

TiDB Serverless 采纳了写时复制(copy-on-write)技术,以实现疾速、安稳地创立分支。这种办法容许原始集群与其分支之间共享数据。这个操作个别在几分钟内就能实现,对用户来说是无感知的,对原始集群的性能也不会有影响。

二. 均衡软件开发速度和品质

在软件开发中,疾速推出新性能和全面测试之间的奥妙均衡是一个挑战。找到正确的均衡能够实现麻利开发、更快的迭代,并及时收到贵重的客户反馈,同时不会影响软件的品质和可靠性。TiDB Serverless Branching 提供了一种形式来找到这个最佳均衡。

2.1 为开发人员提供独立环境

在日常开发和测试流动中应用数据库时,开发人员常常面临配额限度、高老本、资源限度和数据品质等挑战。所以通常在团队内共享数据库更理论。但共享数据库往往会导致环境的抵触,开发人员不得不破费额定的精力在利用中增加一些隔离的逻辑。

TiDB Serverless Branching 通过为每个开发人员提供独立的开发和测试环境来解决这些问题。通过打消资源共享和工作烦扰,进步生产效率并促成高效的团队合作。

2.2 通过相似生产的分支进行高效测试

为了 打消资源共享和工作 间烦扰带来的懊恼,开发人员通常会在进行开发工作时应用独自的数据库环境,比方在服务器上设置本人的数据库或在 Docker 上启动数据库容器。然而,这些环境与生产环境存在显著差别,很难模拟出理论的性能和提早状态。对于功能测试,则总是须要大量的数据筹备工作,可能却依然无奈与理论的生产环境相匹配。为了确保数据品质,开发人员能够抉择生成生产数据库的快照,并在测试环境中还原它,或者费劲地构建模仿数据。然而,这两种办法都很繁琐,会显著升高开发效率。

通过 TiDB Serverless Branching,开发人员将可能在几分钟内疾速创立与生产环境雷同的分支。这些分支有助于应用最新的生产数据进行测试,并疾速检测问题。此外,这些分支齐全与生产集群隔离,能够进行更平安的功能测试和故障排除。

2.3 与继续集成和继续部署(CICD)流程无缝集成

自动化场景须要先进的环境治理和品质管制。TiDB Serverless Branching 能够轻松集成到自动化的 CICD 工作流中,通过分支整合,代码品质的把控和测试流程都变得更加晦涩。这确保了产品的品质,同时遵循了高效的软件开发实际。

三. 与 GitHub 集成的分支治理

联合 TiDB Serverless Branching 性能,咱们推出了 TiDB Cloud 分支治理 GitHub App。如果开发人员应用 GitHub flow (https://docs.github.com/en/get-started/quickstart/github-flow),该利用可能极大水平地简化将分支集成到 CI 流水线中的工作。无关该 GitHub App 的更多详细信息,请参阅咱们的文档 (https://docs.pingcap.com/tidbcloud/branch-github-integration)。

3.1 TiDB Serverless Branching 与 GitHub CI 流水线集成

咱们将应用 tidbcloud-branch-gorm-example (https://github.com/shiyuhang0/tidbcloud-branch-gorm-example) 来演示集成过程。tidbcloud-branch-gorm-example (https://github.com/go-gorm/playground)是一个实用于 TiDB Serverless Branching 的 gorm playground 我的项目的分支版本。操作如下:

  1. 依照阐明将您的 TiDB Serverless 集群与 GitHub 仓库连接起来。这将在您的 GitHub 帐户上装置 TiDB Cloud 分支治理 GitHub App。每次创立 pull request 时,都会触发创立一个新的对应 TiDB Serverless 分支。
  2. 调整 CI 流水线,应用新创建的 TiDB Serverless 分支来运行测试。
name: tests

on:
  pull_request:
    branches: [master]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: tidbcloud/wait-for-tidbcloud-branch@v0
        id: wait-for-branch
        with:
          token: ${{secrets.GITHUB_TOKEN}}
          public-key: ${{secrets.TIDB_CLOUD_PUBLIC_KEY}}
          private-key: ${{secrets.TIDB_CLOUD_PRIVATE_KEY}}
          timeout-seconds: 600
      
      - name: Set up Go 1.19
        uses: actions/setup-go@v2
        with:
          go-version: 1.19

      - name: go mod pakcage cache
        uses: actions/cache@v2
        with:
          path: ~/go/pkg/mod
          key: ubuntu-latest-go-1.19-${{hashFiles('go.mod') }}

      - name: Tests
        run: |
          GORM_ENABLE_CACHE=true GORM_DIALECT=tidb GORM_DSN="${{steps.wait-for-branch.outputs.username}}:${{steps.wait-for-branch.outputs.password}}@tcp(${{ steps.wait-for-branch.outputs.host}}:${{steps.wait-for-branch.outputs.port}})/test?parseTime=true&tls=tidb" ./test.sh

为了简化 CI 流水线,咱们开发了 wait-for-tidbcloud-branch (https://github.com/tidbcloud/wait-for-tidbcloud-branch),这是一个辅助的 GitHub Action。它会等到 pull request 对应的 TiDB Serverless 分支就绪后,创立一个新的数据库用户供后续应用。

在实现设置后,每当创立 pull request 时,TiDB Cloud 分支治理 GitHub App 将为拉取申请生成一个 TiDB Serverless 分支。而后,CI 流程将期待分支就绪并将其用于测试。这确保您应用这些分支执行的任何测试都能够映射到生产数据库中的数据,从而更容易及时发现任何潜在问题。

3.2 一个具体的开发案例

比方你正在开发 一个 增加惟一索引的 性能,但生产数据库中曾经存在反复的行。借助 Ti DB Serverless Branching,CI 流水线能够迅速辨认出这类问题。这是因为测试负载在与生产数据库镜像统一的分支中执行,能够在晚期检测到潜在问题。然而,如果是在模仿数据上进行测试,这类问题很容易被忽视,甚至可能会脱漏到生产环境。

在下面的示例中,咱们在数据库中执行了一个简略的 DDL 更改。TiDB 反对在线 DDL (https://docs.pingcap.com/tidb/stable/ddl-introduction#executi…)变更,用户无需放心影响利用工作负载。然而,随着利用的扩大和测试波及到更多的业务逻辑,分支对于效率进步和质量保证变得越来越无益。

四. 应用 TiDB Serverless Branching 定制 CI/CD 工作流

TiDB Cloud Branching 工作流专门设计成与风行的应用程序框架兼容,开发人员能够将其简略地集成到现有的 CI 流水线中。如 果 TiDB Serverless Branching GitHub App 不能齐全满足你的需要,在 TiDB Cloud CLI (https://docs.pingcap.com/tidbcloud/get-started-with-cli)、setup-tidbcloud-cli (https://github.com/tidbcloud/setup-tidbcloud-cli) 和 GitHub Actions 的帮忙下,你也能够定制分支的 CI/CD 工作流。

五. 论断

借助 TiDB Serverless Branching,开发人员能够并行工作,疾速进行新性能的迭代而不影响生产数据库的失常稳固运行。该性能简化了开发和部署过程,同时确保了生产数据库的稳定性和可靠性。

咱们心愿更多的开发人员可能应用到 TiDB Serverless Branching,咱们也将不断改进和扩大这一性能,以满足大家一直变动的需要,敬请期待!

点击链接,立刻试用 TiDB Serverless Branching,获取更简化、疾速的利用程序开发体验!

https://tidbcloud.com/free-trial

退出移动版