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