2023 年 7 月 10 日,TiDB Serverless 正式商用。這是一個(gè)完全托管的數(shù)據(jù)庫(kù)服務(wù)平臺(tái)(DBaaS),提供靈活的集群配置和基于用量的付費(fèi)模式。緊隨其后,TiDB Serverless Branching 的測(cè)試版也發(fā)布了。
TiDB Serverless Branching 功能使用戶(hù)能夠?yàn)槠?TiDB Serverless 集群創(chuàng)建分支。這些分支可以實(shí)現(xiàn)并行開(kāi)發(fā),促進(jìn)新功能快速迭代,排查故障,開(kāi)發(fā)者無(wú)需中斷生產(chǎn)數(shù)據(jù)庫(kù)的運(yùn)行。該功能不僅簡(jiǎn)化了開(kāi)發(fā)和部署過(guò)程,還保持了生產(chǎn)環(huán)境中數(shù)據(jù)庫(kù)的穩(wěn)定性和可靠性。
分支是什么?
對(duì)于集群而言,分支是一個(gè)獨(dú)立的實(shí)例,其中包含一份原始集群的數(shù)據(jù)快照。它建立了一個(gè)隔離的環(huán)境,以便在不影響原始集群的情況下進(jìn)行各種操作。
當(dāng)為集群創(chuàng)建一個(gè)分支時(shí),該分支中的數(shù)據(jù)與原始集群開(kāi)始分叉,這意味著在原始集群或分支中進(jìn)行的后續(xù)更改將不會(huì)被同步。
TiDB Serverless 采用了寫(xiě)時(shí)復(fù)制 (copy-on-write )技術(shù),以實(shí)現(xiàn)快速、平穩(wěn)地創(chuàng)建分支。這種方法允許原始集群與其分支之間共享數(shù)據(jù)。這個(gè)操作一般在幾分鐘內(nèi)就能完成,對(duì)用戶(hù)來(lái)說(shuō)是無(wú)感知的,對(duì)原始集群的性能也不會(huì)有影響。
平衡軟件開(kāi)發(fā)速度和質(zhì)量
在軟件開(kāi)發(fā)中,快速推出新功能和全面測(cè)試之間的微妙平衡是一個(gè)挑戰(zhàn)。找到正確的平衡可以實(shí)現(xiàn)敏捷開(kāi)發(fā)、更快的迭代,并及時(shí)收到寶貴的客戶(hù)反饋,同時(shí)不會(huì)影響軟件的質(zhì)量和可靠性。TiDB Serverless Branching 提供了一種方式來(lái)找到這個(gè)最佳平衡。
為開(kāi)發(fā)人員提供獨(dú)立環(huán)境
在日常開(kāi)發(fā)和測(cè)試活動(dòng)中使用數(shù)據(jù)庫(kù)時(shí),開(kāi)發(fā)人員經(jīng)常面臨配額限制、高成本、資源限制和數(shù)據(jù)質(zhì)量等挑戰(zhàn)。所以通常在團(tuán)隊(duì)內(nèi)共享數(shù)據(jù)庫(kù)更實(shí)際。但共享數(shù)據(jù)庫(kù)往往會(huì)導(dǎo)致環(huán)境的沖突,開(kāi)發(fā)人員不得不花費(fèi)額外的精力在應(yīng)用中添加一些隔離的邏輯。
TiDB Serverless Branching 通過(guò)為每個(gè)開(kāi)發(fā)人員提供獨(dú)立的開(kāi)發(fā)和測(cè)試環(huán)境來(lái)解決這些問(wèn)題。通過(guò)消除資源共享和任務(wù)干擾,提高生產(chǎn)效率并促進(jìn)高效的團(tuán)隊(duì)協(xié)作。
通過(guò)類(lèi)似生產(chǎn)的分支進(jìn)行高效測(cè)試
為了 消除資源共享和任務(wù) 間干擾帶來(lái)的煩惱 ,開(kāi)發(fā)人員通常會(huì)在進(jìn)行開(kāi)發(fā)工作時(shí)使用單獨(dú)的數(shù)據(jù)庫(kù)環(huán)境,比如在服務(wù)器上設(shè)置自己的數(shù)據(jù)庫(kù)或在 Docker 上啟動(dòng)數(shù)據(jù)庫(kù)容器。 然而,這些環(huán)境與生產(chǎn)環(huán)境存在顯著差異,很難模擬出實(shí)際的性能和延遲狀態(tài)。 對(duì)于功能測(cè)試,則總是需要大量的數(shù)據(jù)準(zhǔn)備工作,可能卻仍然無(wú)法與實(shí)際的生產(chǎn)環(huán)境相匹配。 為了確保數(shù)據(jù)質(zhì)量,開(kāi)發(fā)人員可以選擇生成生產(chǎn)數(shù)據(jù)庫(kù)的快照,并在測(cè)試環(huán)境中還原它,或者費(fèi)力地構(gòu)建模擬數(shù)據(jù)。 然而,這兩種方法都很繁瑣,會(huì)顯著降低開(kāi)發(fā)效率。
通過(guò) TiDB Serverless Branching,開(kāi)發(fā)人員將能夠在幾分鐘內(nèi)快速創(chuàng)建與生產(chǎn)環(huán)境相同的分支。這些分支有助于使用最新的生產(chǎn)數(shù)據(jù)進(jìn)行測(cè)試,并快速檢測(cè)問(wèn)題。此外,這些分支完全與生產(chǎn)集群隔離,可以進(jìn)行更安全的功能測(cè)試和故障排除。
與持續(xù)集成和持續(xù)部署(CICD)流程無(wú)縫集成
自動(dòng)化場(chǎng)景需要先進(jìn)的環(huán)境管理和質(zhì)量控制。TiDB Serverless Branching 可以輕松集成到自動(dòng)化的 CICD 工作流中,通過(guò)分支整合, 代碼質(zhì)量的把控和測(cè)試流程都變得更加流暢 。這確保了產(chǎn)品的質(zhì)量,同時(shí)遵循了高效的軟件開(kāi)發(fā)實(shí)踐。
與 GitHub 集成的分支管理
結(jié)合 TiDB Serverless Branching 功能,我們推出了 TiDB Cloud 分支管理 GitHub App。如果開(kāi)發(fā)人員使用 GitHub flow (?https://docs.github.com/en/get-started/quickstart/github-flow?),該應(yīng)用能夠極大程度地簡(jiǎn)化將分支集成到 CI 流水線中的工作。有關(guān)該 GitHub App 的更多詳細(xì)信息,請(qǐng)參閱我們的文檔 (?https://docs.pingcap.com/tidbcloud/branch-github-integration?)。
將?TiDB?Serverless Branching 與 GitHub?CI?流水線集成
我們將使用 tidbcloud-branch-gorm-example (?https://github.com/shiyuhang0/tidbcloud-branch-gorm-example?) 來(lái)演示集成過(guò)程。tidbcloud-branch-gorm-example (?https://github.com/go-gorm/playground?)是一個(gè)適用于 TiDB Serverless Branching 的 gorm playground 項(xiàng)目的分支版本 。操作如下:
- 按照說(shuō)明將您的 TiDB Serverless 集群與 GitHub 倉(cāng)庫(kù)連接起來(lái)。這將在您的 GitHub 帳戶(hù)上安裝 TiDB Cloud 分支管理 GitHub App。每次創(chuàng)建 pull request 時(shí), 都會(huì)觸發(fā)創(chuàng)建一個(gè)新的對(duì)應(yīng) TiDB Serverless 分支。
- 調(diào)整 CI 流水線,使用新創(chuàng)建的 TiDB Serverless 分支來(lái)運(yùn)行測(cè)試。
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
為了簡(jiǎn)化 CI 流水線,我們開(kāi)發(fā)了 wait-for-tidbcloud-branch (?https://github.com/tidbcloud/wait-for-tidbcloud-branch?),這是一個(gè)輔助的 GitHub Action。它會(huì)等到 pull request 對(duì)應(yīng)的 TiDB Serverless 分支就緒后,創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)用戶(hù)供后續(xù)使用。
在完成設(shè)置后,每當(dāng)創(chuàng)建 pull request 時(shí),TiDB Cloud 分支管理 GitHub App 將為拉取請(qǐng)求生成一個(gè) TiDB Serverless 分支。然后,CI 流程將等待分支就緒并將其用于測(cè)試。這確保您使用這些分支執(zhí)行的任何測(cè)試都可以映射到生產(chǎn)數(shù)據(jù)庫(kù)中的數(shù)據(jù),從而更容易及時(shí)發(fā)現(xiàn)任何潛在問(wèn)題。
一個(gè)具體的開(kāi)發(fā)案例
比如你正在開(kāi)發(fā) 一個(gè) 添加唯一索引的 功能 ,但生產(chǎn)數(shù)據(jù)庫(kù)中已經(jīng)存在重復(fù)的行。 借助 Ti DB Serverless Branching,CI 流水線可以迅速識(shí)別出這類(lèi)問(wèn)題。 這是因?yàn)闇y(cè)試負(fù)載在與生產(chǎn)數(shù)據(jù)庫(kù)鏡像一致的分支中執(zhí)行,可以在早期檢測(cè)到潛在問(wèn)題。 然而,如果是在模擬數(shù)據(jù)上進(jìn)行測(cè)試,這類(lèi)問(wèn)題很容易被忽視,甚至可能會(huì)遺漏到生產(chǎn)環(huán)境。
在上面的示例中,我們?cè)跀?shù)據(jù)庫(kù)中執(zhí)行了一個(gè)簡(jiǎn)單的 DDL 更改。TiDB 支持在線 DDL (?https://docs.pingcap.com/tidb/stable/ddl-introduction#execution-principles-and-best-practices-of-ddl-statements?)變更,用戶(hù)無(wú)需擔(dān)心影響應(yīng)用工作負(fù)載。然而,隨著應(yīng)用的擴(kuò)展和測(cè)試涉及到更多的業(yè)務(wù)邏輯,分支對(duì)于效率提高和質(zhì)量保證變得越來(lái)越有益。
使用 TiDB Serverless Branching 定制 CI/CD 工作流
TiDB Cloud Branching 工作流專(zhuān)門(mén)設(shè)計(jì)成與流行的應(yīng)用程序框架兼容,開(kāi)發(fā)人員可以將其簡(jiǎn)單地集成到現(xiàn)有的 CI 流水線中。 如 果 TiDB Serverless Branching GitHub App 不能完全滿(mǎn)足你的需求,在 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 工作流。
結(jié)論
借助 TiDB Serverless Branching,開(kāi)發(fā)人員可以并行工作,快速進(jìn)行新功能的迭代而不影響生產(chǎn)數(shù)據(jù)庫(kù)的正常穩(wěn)定運(yùn)行。該功能簡(jiǎn)化了開(kāi)發(fā)和部署過(guò)程,同時(shí)確保了生產(chǎn)數(shù)據(jù)庫(kù)的穩(wěn)定性和可靠性。
我們希望更多的開(kāi)發(fā)人員能夠使用到 TiDB Serverless Branching,我們也將不斷改進(jìn)和擴(kuò)展這一功能,以滿(mǎn)足大家不斷變化的需求,敬請(qǐng)期待!
點(diǎn)擊鏈接,立即試用 TiDB Serverless Branching,獲取更簡(jiǎn)化、快速的應(yīng)用程序開(kāi)發(fā)體驗(yàn)!文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-686213.html
TiDB Cloud文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-686213.html
到了這里,關(guān)于TiDB Serverless Branching:通過(guò)數(shù)據(jù)庫(kù)分支簡(jiǎn)化應(yīng)用開(kāi)發(fā)流程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!