2021年DevOps之終極進(jìn)化
本文轉(zhuǎn)載自微信公眾號「新鈦云服」,作者徐磊 翻譯。轉(zhuǎn)載本文請聯(lián)系新鈦云服公眾號。
一、文檔說明
DevOps顧名思義,是讓機(jī)器自動(dòng)處理軟件部署和運(yùn)維生命周期中的重復(fù)性工作,以便操作員可以更快,更有效的實(shí)現(xiàn)代碼更新和部署迭代,更可靠的運(yùn)行他們的系統(tǒng)。
自2009年創(chuàng)造DevOps一詞以來,自動(dòng)化已經(jīng)從開發(fā)、集成和交付工作的自動(dòng)化發(fā)展到當(dāng)今運(yùn)維方面的前沿,在那里我們看到了自動(dòng)化可觀察性、可靠性和修復(fù)的新工具。
二、為什么要實(shí)現(xiàn) DevOps ?
從開發(fā)人員的角度來看,DevOps 工具賦予開發(fā)團(tuán)隊(duì)權(quán)力并提高他們的效率。通過減少跨團(tuán)隊(duì)依賴性、避免手動(dòng)配置發(fā)布流程,開發(fā)人員可以提高發(fā)布頻率并更快地收到反饋,從而改善他們的整體體驗(yàn)。
從業(yè)務(wù)角度來看,DevOps 自動(dòng)化縮短了部署功能的準(zhǔn)備時(shí)間。自動(dòng)化會(huì)減少由人為錯(cuò)誤導(dǎo)致的問題、環(huán)境不一致引起的故障來提高平臺(tái)的可靠性和可用性。此外,它消除了對大型團(tuán)隊(duì)的需求,最大限度地減少了來自不同開發(fā)團(tuán)隊(duì)的重復(fù)工作,并減少了跨團(tuán)隊(duì)摩擦。
自動(dòng)化如何開始?
如果您正在尋找將自動(dòng)化工作重點(diǎn)放在何處,我們建議您從最大的瓶頸所在開始。
- 事件響應(yīng)的自動(dòng)化
 - 資源可按需提供給開發(fā)人員
 - 應(yīng)用程序是基于業(yè)務(wù)手段重新架構(gòu)的
 - 安全團(tuán)隊(duì)參與設(shè)計(jì)和開發(fā)
 
為此,建設(shè)一系列自動(dòng)化階段,解決一路上的常見問題,包括緩慢的服務(wù)供應(yīng)(過于復(fù)雜或需要太多工作和跨團(tuán)隊(duì)協(xié)作)以及設(shè)置測試和部署管道的困難。
一旦實(shí)現(xiàn)了自動(dòng)化,大大加快了流程中的構(gòu)建速度,他們就會(huì)開始研究在維護(hù)階段,當(dāng)軟件投入生產(chǎn)并提供業(yè)務(wù)價(jià)值時(shí),他們可以自動(dòng)化什么。
這些任務(wù)被描述為手動(dòng)、重復(fù)、可自動(dòng)化且缺乏持久價(jià)值。減少重復(fù)、可循環(huán)的工作可以使工程師做更有意義的工作。
如何自動(dòng)化 DevOps 流程
處理好您的自動(dòng)化問題后,確定現(xiàn)有哪些工具可以解決您的問題。
作為一般規(guī)則,使用現(xiàn)成的工具和標(biāo)準(zhǔn)通常比構(gòu)建和維護(hù)自己的工具和標(biāo)準(zhǔn)更有效。
在向您的技術(shù)堆棧中添加新工具時(shí),請考慮:
- 直接成本(許可和托管)
 - 推廣工作(初始投資)
 - 維護(hù)工作(持續(xù)投資)
 - 系統(tǒng)增加了復(fù)雜性
 - 可靠性和支持要求
 - 該工具還可以幫助您解決哪些其他問題
 
理想情況下,您正在尋找一種工具,它不僅足夠靈活以解決您當(dāng)前的問題,而且對未來的挑戰(zhàn)也很有價(jià)值。您正在尋找可以在流程中代替工程師實(shí)現(xiàn)自動(dòng)構(gòu)建和部署的工具,而不會(huì)為維護(hù)或使用它的團(tuán)隊(duì)帶來很多負(fù)擔(dān)。您應(yīng)該能夠決定自己托管哪些工具以及更喜歡將哪些工具用作 SaaS。
CI/CD
DevOps 的原則之一是能夠以一致的方式安全且可重復(fù)地將工件部署到所有環(huán)境。因此,最成熟和最流行的 DevOps 工具類別是安全一致地構(gòu)建代碼和部署工件所需的 CI/CD 編排器,例如Jenkins、GoCD等,也就不足為奇了。
CI/CD 工具允許您創(chuàng)建一個(gè)部署管道,該管道從Git或 SVN等版本控制系統(tǒng)中的提交開始,根據(jù)幾種不同的質(zhì)量檢查工具(代碼檢查、單元測試、集成和端到端測試)對其進(jìn)行評估),如果所有質(zhì)量檢查都通過,則將該版本部署到生產(chǎn)中。部署管道包括持續(xù)集成 (CI)、持續(xù)交付 (CD) 和基礎(chǔ)設(shè)施配置,具體取決于您的架構(gòu)。
功能標(biāo)記工具也是該組的一部分,因?yàn)樗鼈冇糜谝园踩涂煽氐姆绞綄⒋a快速部署到生產(chǎn)中。
每個(gè)公司都應(yīng)該使用 CI/CD 工具??梢宰屇鸀槟膱鼍斑x擇最佳工具的問題包括:
- 將工具配置和維護(hù)需要多少工作?
 - 支持和維護(hù)您的管道需要付出多少工作量?
 - 為開發(fā)團(tuán)隊(duì)創(chuàng)建管道是否便捷?
 - 為多個(gè)團(tuán)隊(duì)創(chuàng)建共享管道模板是否便捷?
 - 您的工具需要哪些安全功能?
 
配置和基礎(chǔ)設(shè)施即代碼工具
將所有基礎(chǔ)設(shè)施、配置和應(yīng)用程序代碼存儲(chǔ)在版本控制系統(tǒng)中是 DevOps 自動(dòng)化的另一個(gè)重要組成部分。將基礎(chǔ)設(shè)施和配置定義為代碼的能力,允許工程師對基礎(chǔ)設(shè)施代碼進(jìn)行與對應(yīng)用程序代碼相同的審查和審計(jì)。
有幾種不同類型的工具:
- 基礎(chǔ)設(shè)施供應(yīng):用于從代碼供應(yīng)基礎(chǔ)設(shè)施組件(例如網(wǎng)絡(luò)組件、托管服務(wù)、虛擬機(jī))的工具。實(shí)例包括Terraform,Pulumi,CloudFormation
 - 配置管理:用于配置機(jī)器內(nèi)的操作系統(tǒng)、軟件需求、包依賴和系統(tǒng)文件。示例包括Chef、Puppet、Ansible、Packer
 - 容器技術(shù):用于提供與供應(yīng)商無關(guān)的容器編排器來運(yùn)行容器化應(yīng)用程序。示例包括Kubernetes、OpenShift、Nomad
 - 無服務(wù)器功能:用于輔助無服務(wù)器功能的部署。示例包括serverless, chalice, CDK
 
成熟的 DevOps 團(tuán)隊(duì)使用工具組合來實(shí)現(xiàn)基礎(chǔ)設(shè)施和配置即代碼。工具因技術(shù)堆棧和業(yè)務(wù)需求而異。在評估工具時(shí),確保您的團(tuán)隊(duì)安全、輕松地部署基礎(chǔ)設(shè)施,同時(shí)輕松共享模板和標(biāo)準(zhǔn)。
可觀察性和監(jiān)控工具
監(jiān)控和可觀察性是一類較新的工具,不如用于 CI/CD 的工具成熟??捎^察性和監(jiān)控領(lǐng)域的工具包括應(yīng)用程序日志服務(wù),如ELK 堆棧、數(shù)據(jù)收集代理以及指標(biāo)和儀表數(shù)據(jù)的可視化工具。其中一些示例包括Prometheus、Grafana、Datadog和New Relic。它還包括監(jiān)控系統(tǒng),用于在平臺(tái)未根據(jù)指標(biāo)、日志或運(yùn)行狀況檢查(Sensu、Nagios、Dynatrace、CloudWatch)性能狀態(tài)并根據(jù)自定義的規(guī)則生成告警通知到相關(guān)人員。
彈性和可靠性
從長遠(yuǎn)來看,依靠人為干預(yù)來確??煽啃?無論是識別問題還是補(bǔ)救)是不可持續(xù)的。有很多創(chuàng)新管理、事件過程管理和補(bǔ)救的組織事件正在實(shí)現(xiàn)自動(dòng)化。
DevOps 經(jīng)典案例
讓我們考慮一個(gè)虛構(gòu)的環(huán)境,其中使用 Terraform 將所有基礎(chǔ)基礎(chǔ)設(shè)施作為代碼進(jìn)行管理。
創(chuàng)建新應(yīng)用程序時(shí),通過使用其Jenkinsfile 中的共享庫定義的,該庫自動(dòng)包含所有默認(rèn)步驟和所需的質(zhì)量檢查,以及向公司通信工具(例如,釘釘、飛書)發(fā)送構(gòu)建通知。應(yīng)用程序存儲(chǔ)庫還包含具有一些基本配置(例如,內(nèi)存和 CPU 要求以及健康檢查端點(diǎn))的 Terraform 文件,并使用所有應(yīng)用程序共享的模塊。該模塊包含所需的 DNS、負(fù)載均衡器和容器配置,以及一些自動(dòng)監(jiān)控。
開發(fā)人員不需要設(shè)置他們的管道或默認(rèn)基礎(chǔ)設(shè)施,因?yàn)檫@些都由共享代碼控制。如果他們需要額外的資源(如數(shù)據(jù)存儲(chǔ)),他們可以輕松地向 Terraform 文件添加額外的資源。
存儲(chǔ)庫提交后,Jenkins 運(yùn)行新管道。在運(yùn)行代碼 linting、單元測試和集成測試的命令后,管道會(huì)觸發(fā) Terraform 部署到暫存環(huán)境并運(yùn)行端到端測試。釘釘通知提醒開發(fā)人員檢查結(jié)果并進(jìn)一步運(yùn)行他們想要的任何手動(dòng)測試。如果開發(fā)人員對結(jié)果滿意,他們可以通過手動(dòng)批在 Jenkins 中推廣構(gòu)建,觸發(fā) Terraform 部署到生產(chǎn)。
在為外部客戶開啟功能標(biāo)志之前,工程師確保監(jiān)控和彈性是足夠的。一旦代碼在生產(chǎn)中生效,運(yùn)營團(tuán)隊(duì)就可以構(gòu)建自動(dòng)化來處理常見問題。例如,創(chuàng)建一個(gè)作業(yè)來自動(dòng)調(diào)整空間不足的磁盤的大小,或者創(chuàng)建一個(gè)作業(yè)來識別即將到期的 TLS 證書并使用 HashiCorp Vault 自動(dòng)更新它們。Terraform 也存儲(chǔ)操作自動(dòng)化。
結(jié)論:
自動(dòng)化測試和部署的工具,如 CI/CD 和 Terraform,現(xiàn)在已經(jīng)非常成熟,大大減少了交付代碼所需的時(shí)間(和勞動(dòng))。隨著我們優(yōu)化和替代生產(chǎn)企業(yè)中操作軟件的重復(fù)性工作,大大提高了業(yè)務(wù)可靠性和客戶滿意度。
自動(dòng)化已成為新一代互聯(lián)網(wǎng)生產(chǎn)鏈的趨勢,盡快的實(shí)現(xiàn)自動(dòng)化架構(gòu),從公司的運(yùn)營,人力成本和效率等方面都會(huì)得到很大的改善。
原文:https://dzone.com/articles/what-is-devops-automation-in-2021


















 
 
 






 
 
 
 