柚子快報激活碼778899分享:運維 DevOps 溫故知新
柚子快報激活碼778899分享:運維 DevOps 溫故知新
【引】伴隨著微服務架構以及云技術的廣泛使用,DevOps相應地引起了人們的關注,尤其在互聯網企業(yè)展開了大量的探索和實踐。去年賦閑在家的時候, 有幸精讀了三本書,分別是《持續(xù)架構實踐——敏捷和DevOps時代下的軟件架構》,《精益DevOps——快速安全的IT交付寶典》和《基礎設施即代碼——模型驅動的DevOps》, 于是,溫故知新,老碼農對DevOps 又有了不同的體會。
DevOps的出現是“左移運動”的具體體現,是為了按時交付軟件產品和服務,可看作開發(fā)、運維和質量保障三者的交集,旨在通過改善這三個部門之間的協(xié)作,提高組織提供應用程序和服務的速度,從而更好地為客戶服務并在市場中保持競爭力。遺憾的是, 在經典DevOps 環(huán)中的“Test”并沒有凸顯QA團隊的作用。
DevOps的實施涉及到多個方面,包括自動化工具的使用、持續(xù)集成/持續(xù)部署(CI/CD)的實踐、監(jiān)控和日志分析系統(tǒng)的建立等。通過這些實踐,DevOps可以確保軟件在開發(fā)、測試、部署和運維等各個環(huán)節(jié)中都能夠保持高效、可靠和一致。
DevOps 的技術組成
DevOps 涉及了技術、組織、文化等多個領域,就相關技術技能而言, 大約包括以下幾個層次:
基礎的技術技能包括版本控制、Linux 操作系統(tǒng)的操作、編程技能、數據庫和網絡操作等,其中與Ops相關的編程主要是Shell 和Python。CI/CD 是DevOps 的關鍵環(huán)節(jié),常見的工具包括Jenkins、Github Action,GitLab CI 等。容器化技術保證了CI/CD 的環(huán)境一致性,同時為服務和網絡的編排提供了工具。就具體的部署環(huán)境而言, IaC 是實現面向混合云快速部署的關鍵。監(jiān)控和日志與傳統(tǒng)運維領域的技術類似,區(qū)別可能是顆粒度不同。
DevOps 中CI/CD 流水線
CI/CD 是DevOps 的關鍵技術點,工作流及其流水線是工程效率提升的主要體現。
CI/CD有助于從初始代碼提交到部署的軟件開發(fā)過程。通過自動化流水線,它消除了傳統(tǒng)上將代碼運送到生產環(huán)境所需的大量手動人工干預。
持續(xù)集成(CI)包括自動化構建、執(zhí)行測試以及將單個開發(fā)人員的代碼合并到共享存儲庫中。持續(xù)集成的主要目標是有效地將源代碼集成到共享存儲庫中。一旦將更改提交給版本控制系統(tǒng),就會執(zhí)行自動構建和測試用例,以確保代碼的功能和有效性。這些過程驗證源代碼如何編譯以及測試用例在執(zhí)行期間如何執(zhí)行。
其中代碼入庫可以做成一個單獨的流水線:
構建和測試作為另一條流水線:
持續(xù)部署(CD)是 CI/CD 流水線中 CI 之后的下一步,是自動部署將自動測試階段傳遞到生產環(huán)境的每個代碼更改的實踐。其典型的流水線如下:
持續(xù)部署的重點是在生產環(huán)境中快速部署代碼變更。它的根源可以追溯到敏捷宣言,強調“早期和持續(xù)交付的有價值的軟件”來滿足客戶。真正的持續(xù)部署是具有挑戰(zhàn)性的,而且沒有像 CI 那樣被廣泛采用,但是一個更常見的實踐方式是持續(xù)交付(Continuous delivery)。持續(xù)交付和持續(xù)部署的主要區(qū)別在于,持續(xù)交付可能側重于“ready for production”,不是自動完成上線,而是完成上線準備。
從DevOps 到MLOps
如果對DevOps中的Dev 進行領域劃分和擴展,就會形成XOps。隨著人工智能的廣泛使用, 機器學習成為了Dev 中的一個重要領域,從而形成了DevOps 的一個變體——MLOps。
MLOps的核心思想是將DevOps的流程和工具應用于機器學習領域,以實現機器學習應用的持續(xù)集成、持續(xù)交付和持續(xù)部署。MLOps的目標是通過使機器學習的開發(fā)、測試和部署更加自動化來增強軟件開發(fā)的效率和質量。?
MLOps可以更好地管理機器學習模型的生命周期,包括數據準備、傳輸和轉換、模型訓練和優(yōu)化、模型評估和選擇、模型部署和監(jiān)控等。同時,MLOps也可以幫助團隊管理開發(fā)和生產環(huán)境之間的差異,保證模型在生產環(huán)境中的穩(wěn)定性和可靠性。簡單而言,MLOps增加了領域特殊性的環(huán)節(jié)——持續(xù)訓練(Continuous Training,CT)。
MLOps的引入,使得機器學習模型的開發(fā)和部署流程更加高效,從而加快了AI應用的創(chuàng)新速度并降低了錯誤率,還有助于加強數據安全性和合規(guī)性,并提高機器學習應用的可靠性和可維護性。
至于LLMOps, 后續(xù)會有專門的文章重點總結。
面向基礎設施的DevOps
DevOps 不僅僅適用于軟件交付,而是面向整個IT交付領域。那么,如何將DevOps應用于基礎設施呢?如何高效、智能地管理和配置基礎設施呢?
這就需要IaC,IaC 是面向基礎設施的DevOps 的關鍵技術。面對基礎設施尤其是網絡環(huán)境的多樣化和差異性,對網絡進行建模是實現IaC的前提。
通過模型驅動的方式,IaC是一種將基礎設施管理過程自動化的方法,通過使用編程語言來描述和管理基礎設施資源,實現對基礎設施的快速部署、配置和管理。
與傳統(tǒng)的手動管理方式相比,IaC具有更高的靈活性、可擴展性和可維護性,能夠幫助企業(yè)降低運營成本、提高運維效率。
從DevOps 到 DevSecOps
DevSecOps是DevOps實踐的自然演變,其重點是將安全性集成到軟件開發(fā)和部署過程中。術語“DevSecOps”代表了開發(fā)(Dev)、安全(Sec)和運營(Ops)實踐的融合,強調了安全在整個軟件開發(fā)生命周期中的重要性。在QCon 2022的關于工程師成長專題中,我曾分享過《工程師成長的金字塔思維》,其中涉及了DevSecOps 的敏捷安全金字塔。
DevSecOps的核心理念是“業(yè)務應用生命周期的每個環(huán)節(jié)都需要為安全負責,安全是整個IT團隊(包括開發(fā)、測試、運維及安全團隊)所有成員的責任,并且需要貫穿到從研發(fā)至運營的全過程”。相較于傳統(tǒng)的研發(fā)運營安全,它更注重在開發(fā)階段就考慮并融入安全因素,而不是僅僅在測試及運營階段進行安全威脅的檢測、識別、修復和防御。
DevSecOps是DevOps概念的延續(xù),可以最大限度在軟件上線前減少產品的漏洞,并完全地被最終用戶使用。由于每個流程和相關工作流程都通過嚴格的安全檢查實現自動化,因此可以更準確地滿足安全要求。
DevOps 的方法論
我們很容易理解DevOps為IT服務交付帶來的諸多益處,但對如何讓DevOps 真正融入我們的軟件工程中往往缺乏真正有意義的指導方法。也就是說,DevOps的落地確實是個難題,它不僅需要技術層面的支持,還需要組織文化、流程管理、團隊協(xié)作等多方面的配合。
“他山之石,可以攻玉”,我們可以參考借鑒其他領域的反法論來實現DevOps,例如精益管理。精益管理是由豐田精益生產方式創(chuàng)生出的具有全新思維方式和行為方式的管理,在制造業(yè)取得了巨大的成功。精益思想是適于任何組織消除浪費、創(chuàng)造價值的最強有??具?;诰嫠枷氲腄evOps能有效地減少交付摩擦和管理服務交付風險,應用OODA循環(huán),可以通過管理不可預測性來提升組織的執(zhí)行力,
DevOps 本身就是把精益思想應用到技術價值流中的結果,而技術價值流是把業(yè)務構想轉化為向客戶交付價值的、由技術驅動的服務所需要的流程。精益思想是DevOps乃至敏捷開發(fā)的魂魄,也是指引DevOps及敏捷開發(fā)落地的燈塔。
【關聯閱讀】
《精益DevOps》譯者序DevOps 全棧必備雙刃劍《基礎設施即代碼(IaC)》譯者序架構軟件工程的未來遠程軟件工程師的10個最佳實踐全棧的技術棧設想面向全棧的技術管理全棧必備:系統(tǒng)架構設計的10個思維實驗API協(xié)議設計的10種技術機器學習模型性能的10個指標淺析多模態(tài)機器學習大模型應用的10種架構模式
柚子快報激活碼778899分享:運維 DevOps 溫故知新
精彩文章
本文內容根據網絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯系刪除。