DevOps 溫故知新
DevOps的出現(xiàn)是“左移運動”的具體體現(xiàn),是為了按時交付軟件產(chǎn)品和服務(wù),可看作開發(fā)、運維和質(zhì)量保障三者的交集,旨在通過改善這三個部門之間的協(xié)作,提高組織提供應(yīng)用程序和服務(wù)的速度,從而更好地為客戶服務(wù)并在市場中保持競爭力。遺憾的是, 在經(jīng)典DevOps 環(huán)中的“Test”并沒有凸顯QA團隊的作用。
圖片
DevOps的實施涉及到多個方面,包括自動化工具的使用、持續(xù)集成/持續(xù)部署(CI/CD)的實踐、監(jiān)控和日志分析系統(tǒng)的建立等。通過這些實踐,DevOps可以確保軟件在開發(fā)、測試、部署和運維等各個環(huán)節(jié)中都能夠保持高效、可靠和一致。
DevOps 的技術(shù)組成
DevOps 涉及了技術(shù)、組織、文化等多個領(lǐng)域,就相關(guān)技術(shù)技能而言, 大約包括以下幾個層次:
圖片
基礎(chǔ)的技術(shù)技能包括版本控制、Linux 操作系統(tǒng)的操作、編程技能、數(shù)據(jù)庫和網(wǎng)絡(luò)操作等,其中與Ops相關(guān)的編程主要是Shell 和Python。CI/CD 是DevOps 的關(guān)鍵環(huán)節(jié),常見的工具包括Jenkins、Github Action,GitLab CI 等。容器化技術(shù)保證了CI/CD 的環(huán)境一致性,同時為服務(wù)和網(wǎng)絡(luò)的編排提供了工具。就具體的部署環(huán)境而言, IaC 是實現(xiàn)面向混合云快速部署的關(guān)鍵。監(jiān)控和日志與傳統(tǒng)運維領(lǐng)域的技術(shù)類似,區(qū)別可能是顆粒度不同。
DevOps 中CI/CD 流水線
CI/CD 是DevOps 的關(guān)鍵技術(shù)點,工作流及其流水線是工程效率提升的主要體現(xiàn)。
圖片
CI/CD有助于從初始代碼提交到部署的軟件開發(fā)過程。通過自動化流水線,它消除了傳統(tǒng)上將代碼運送到生產(chǎn)環(huán)境所需的大量手動人工干預(yù)。
持續(xù)集成(CI)包括自動化構(gòu)建、執(zhí)行測試以及將單個開發(fā)人員的代碼合并到共享存儲庫中。持續(xù)集成的主要目標(biāo)是有效地將源代碼集成到共享存儲庫中。一旦將更改提交給版本控制系統(tǒng),就會執(zhí)行自動構(gòu)建和測試用例,以確保代碼的功能和有效性。這些過程驗證源代碼如何編譯以及測試用例在執(zhí)行期間如何執(zhí)行。
其中代碼入庫可以做成一個單獨的流水線:
圖片
構(gòu)建和測試作為另一條流水線:
圖片
持續(xù)部署(CD)是 CI/CD 流水線中 CI 之后的下一步,是自動部署將自動測試階段傳遞到生產(chǎn)環(huán)境的每個代碼更改的實踐。其典型的流水線如下:
圖片
持續(xù)部署的重點是在生產(chǎn)環(huán)境中快速部署代碼變更。它的根源可以追溯到敏捷宣言,強調(diào)“早期和持續(xù)交付的有價值的軟件”來滿足客戶。真正的持續(xù)部署是具有挑戰(zhàn)性的,而且沒有像 CI 那樣被廣泛采用,但是一個更常見的實踐方式是持續(xù)交付(Continuous delivery)。持續(xù)交付和持續(xù)部署的主要區(qū)別在于,持續(xù)交付可能側(cè)重于“ready for production”,不是自動完成上線,而是完成上線準(zhǔn)備。
從DevOps 到MLOps
如果對DevOps中的Dev 進行領(lǐng)域劃分和擴展,就會形成XOps。隨著人工智能的廣泛使用, 機器學(xué)習(xí)成為了Dev 中的一個重要領(lǐng)域,從而形成了DevOps 的一個變體——MLOps。
MLOps的核心思想是將DevOps的流程和工具應(yīng)用于機器學(xué)習(xí)領(lǐng)域,以實現(xiàn)機器學(xué)習(xí)應(yīng)用的持續(xù)集成、持續(xù)交付和持續(xù)部署。MLOps的目標(biāo)是通過使機器學(xué)習(xí)的開發(fā)、測試和部署更加自動化來增強軟件開發(fā)的效率和質(zhì)量。
MLOps可以更好地管理機器學(xué)習(xí)模型的生命周期,包括數(shù)據(jù)準(zhǔn)備、傳輸和轉(zhuǎn)換、模型訓(xùn)練和優(yōu)化、模型評估和選擇、模型部署和監(jiān)控等。同時,MLOps也可以幫助團隊管理開發(fā)和生產(chǎn)環(huán)境之間的差異,保證模型在生產(chǎn)環(huán)境中的穩(wěn)定性和可靠性。簡單而言,MLOps增加了領(lǐng)域特殊性的環(huán)節(jié)——持續(xù)訓(xùn)練(Continuous Training,CT)。
圖片
MLOps的引入,使得機器學(xué)習(xí)模型的開發(fā)和部署流程更加高效,從而加快了AI應(yīng)用的創(chuàng)新速度并降低了錯誤率,還有助于加強數(shù)據(jù)安全性和合規(guī)性,并提高機器學(xué)習(xí)應(yīng)用的可靠性和可維護性。
至于LLMOps, 后續(xù)會有專門的文章重點總結(jié)。
面向基礎(chǔ)設(shè)施的DevOps
DevOps 不僅僅適用于軟件交付,而是面向整個IT交付領(lǐng)域。那么,如何將DevOps應(yīng)用于基礎(chǔ)設(shè)施呢?如何高效、智能地管理和配置基礎(chǔ)設(shè)施呢?
這就需要IaC,IaC 是面向基礎(chǔ)設(shè)施的DevOps 的關(guān)鍵技術(shù)。面對基礎(chǔ)設(shè)施尤其是網(wǎng)絡(luò)環(huán)境的多樣化和差異性,對網(wǎng)絡(luò)進行建模是實現(xiàn)IaC的前提。
通過模型驅(qū)動的方式,IaC是一種將基礎(chǔ)設(shè)施管理過程自動化的方法,通過使用編程語言來描述和管理基礎(chǔ)設(shè)施資源,實現(xiàn)對基礎(chǔ)設(shè)施的快速部署、配置和管理。