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