掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流
數(shù)據(jù)庫更改是應用程序開發(fā)過程中一個棘手的部分:它通常涉及來自不同環(huán)境的多個數(shù)據(jù)庫和跨團隊協(xié)作,此外,數(shù)據(jù)庫是一觸即發(fā)的。它讓我們思考:我們可以像對待應用程序代碼一樣對待數(shù)據(jù)庫嗎?

創(chuàng)新互聯(lián)長期為上1000家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為林芝企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站制作,林芝網(wǎng)站改版等技術服務。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
DORA(DevOps Research & Assessment)指出,將數(shù)據(jù)庫工作整合到軟件交付過程中,對持續(xù)交付有積極的貢獻。是時候讓數(shù)據(jù)庫成為 CI/CD 周期的一部分了。
但它是如何工作的?
要回答“如何”,我們首先需要梳理一下典型的數(shù)據(jù)庫變更工作流程。在 SQL 語句可以安全地應用于數(shù)據(jù)庫之前,有兩個關鍵步驟:review & change。
此步驟是為了確保更改:
在這里,開發(fā)人員通常負責前者的任務,而 DBA 則負責后者。DevOps 理念旨在通過集成 Ops 和 Devs 來解決這個問題?,F(xiàn)實情況是,當組織中存在 DBA 時,很難將兩個團隊直接合并。一種可能的解決方案是保留 DBA 的任務,同時讓開發(fā)團隊能夠預審 SQL。這種左移方法可以顯著減少發(fā)布延遲的機會。此外,如果組織中沒有 DBA,那么賦予開發(fā)團隊以確保 SQL 不會對數(shù)據(jù)庫造成嚴重破壞的能力就更加重要。
此步驟是為了確保:
為了避免與變更相關的錯誤,減少手動方面也很重要:自動化的事情越多,發(fā)生錯誤的機會就越少。預配置管道以自動將 SQL 應用于數(shù)據(jù)庫?聽起來不錯。為避免對常規(guī)業(yè)務運營產(chǎn)生負面影響,應采用各種零停機更改技術,尤其是對于具有大型數(shù)據(jù)集的數(shù)據(jù)庫。
因此,實施數(shù)據(jù)庫 CI/CD 的關鍵要素應該使開發(fā)團隊能夠執(zhí)行 SQL 審查并簡化 SQL 更改推出。
讓我們首先探討如何讓開發(fā)團隊自己執(zhí)行 SQL 審查。
很少有開發(fā)人員是審查 SQL 語句“架構正確性”的專家,即使對于高級 DBA,手動檢查也可能非常低效且容易出錯。幸運的是,業(yè)界通過集成不同的 SQL 檢查規(guī)范創(chuàng)建了各種自動審查工具。
然而,這些工具有一個共同的問題——它們都是為 DBA 設計的。一方面,這些工具往往需要更高的數(shù)據(jù)庫操作權限,因此不適合開發(fā)人員直接使用。另一方面,開發(fā)人員擁有自己的 IDE,而單獨的外部仲裁器是他們最不需要的東西。想象一下,當您必須在多個工具之間復制和粘貼代碼時會有多糟糕。
那么開發(fā)人員友好的 SQL 審查工具應該是什么樣的呢?
我們通常在版本控制系統(tǒng) (VCS) 上執(zhí)行傳統(tǒng)的代碼審查流程,SQL 也應如此。因此,應該將 SQL 審查工具集成到代碼審查工作流程中。啟用后,當您在 GitHub 上提交 PR 時,將觸發(fā)GitHub Marketplace 上可用的 SQL Review Action 。
讓我們看看如何實現(xiàn)簡化的 SQL 更改推出。
獨立的 SQL 部署工具并不少見。這些工具通常手動上傳 SQL 腳本,通過審批流程繼續(xù)部署,然后在部署完成后提供反饋。該模型準確地描述了開發(fā)人員和 DBA 如何獨立工作,而分散的流程是延遲發(fā)布的最常見原因之一。畢竟,當您在多個系統(tǒng)之間不斷手動移動 SQL 腳本時,誰能保證永遠不會出錯?
我們需要一個更高效和自動化的發(fā)布流程。讓我們回顧一下應用程序代碼的經(jīng)典 CI/CD 工作流程:提交更改 > 代碼審查 > 合并分支 > 自動構建 > 自動部署。既然我們已經(jīng)在 GitHub Actions 上實現(xiàn)了 SQL 審查,為什么不能包括后續(xù)的推出流程呢?
嗯,是的,我們可以!
用于數(shù)據(jù)庫 CI/CD 的 SQL 更改推出工具應該能夠與 VCS 集成。一旦您的 SQL 腳本經(jīng)過審查并合并到目標分支中,就會觸發(fā)發(fā)布過程,并且腳本會自動推送到 Bytebase。當然,DBA 可以在針對目標數(shù)據(jù)庫執(zhí)行 SQL 之前執(zhí)行另一次完整性檢查。
在這里,我們展示了一個完整的數(shù)據(jù)庫 CI/CD 工作流程:
此工作流程非常適合現(xiàn)有的 CI/CD 流程,并且對開發(fā)人員來說很自然。敏銳的讀者可能已經(jīng)發(fā)現(xiàn)所描述的步驟是具有里程碑意義的文章Evolutionary Database Design的實現(xiàn)。

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流