開發運營主要依賴于企業在思維方法和自動化工具兩方面的轉變;缺少其中任何一方面都會導致失敗。
開發與運營(即DevOps)模式讓IT團隊能夠以比傳統部署方法更快的速度來發布應用程序。很多企業已經依賴AWS用作云平臺以提高敏捷性、降低成本支出以及減少用于生產應用程序的時間。在實施DevOps之后,很多企業每天都會多次部署新功能。
但是,要實現這種高效率所需的付出也是不小的。
實施DevOps通常需要改變員工的心態。IT團隊需要消除開發團隊和運營團隊之間的隔閡,以便他們能夠協同工作,從而實現快速發布應用程序變更的共同目標。使用正確的方法,自動化就可以取代手動任務,讓整個過程變得更快更可靠。
為了更為高效地遵循AWS上的這些做法,開發人員需要充分了解可用的工具與服務。
AWS中的CI 和 CD
持續集成(CI)是一種流行的軟件開發實踐,它可允許開發人員即時獲得關于應用程序代碼更改的反饋。開發人員將他們的代碼提交至中央庫,從而觸發自動構建和自動測試。CI可以讓IT團隊快速解決問題,讓應用程序更可靠。
在CI基礎之上進行開發是持續交付(CD)的做法。在這種模式下,已提交代碼和已批準代碼被部署在類似生產的環境中;集成測試可確保應用程序運行正確。如果一切都按計劃進行,團隊就會心里有底,他們的應用程序有一個可以隨時發布的生產就緒版。
AWS開發的服務可允許團隊在云中實施這些常見的開發實踐。這些服務所創建的CI/CD管道可以自動實現從觸發測試與開發到啟動新的基礎設施、部署和測試應用程序新版本的所有工作。
以下是一些在部署DevOps管道時團隊可以使用的AWS工具:
AWS CodePipeline是一個托管的CD服務,它可以對軟件發布過程進行建模和編排。在CodePipeline中,開發人員為發布過程中的每一個步驟都設置了階段。在源階段,系統會輪詢版本控制庫是否有開發人員提交代碼。當檢測到新的變更時,CodePipeline會通過自動化構建和測試階段發送代碼。如果這些任務都成功完成,開發人員就會在現有開發環境中運行和測試應用程序,或者在管道的一個階段中構建新的環境。
AWS CodeCommit 是一個完全托管和可擴展的源代碼控制服務。開發人員將代碼提交至在AWS中托管的安全專用的Git庫;這種做法幫助團隊免于維護和擴展他們自己源代碼控制。CodeCommit服務可與現有基于Git的工具進行集成,并可通過使用AWS身份與訪問管理來確保其安全性。CodeCommit可與CodePipeline進行無縫集成;IT團隊還可以使用公共的或專用的GitHub庫。無論采用哪種方式,CodePipeline會對這些庫進行輪詢以找出變更,并通過發布管道自動發送它們。
AWS CodeDeploy是一個自動化的軟件部署服務,它可在企業內部或云中正常運行。IT團隊可以在CI/CD管道中使用CodeDeploy在服務器上安裝應用程序代碼。為了做到這一點,應在彈性計算云(EC2)實例或本地服務器上運行一個代理程序。當新代碼通過發布管道時,CodePipeline將從構建階段取出輸出工件,并將它們交給CodeDeploy,后者將在服務器上安裝應用程序代碼。
基礎設施即代碼
DevOps模式的核心原則就是讓一切都自動化。團隊會使用基礎設施即代碼(IaC)來具體實施軟件部署,而不是手工開發服務器環境。其目標是在一個聲明性模板中定義基礎設施,以便檢查源代碼控制并作為整個環境的藍圖。這使得團隊可以輕松地查看從一個發布版本到下一個版本之間基礎設施發生的變更。
此外,CI/CD管道中的階段能夠實現開發環境部署的自動化,以證明應用程序已做好生產準備。
對于AWS用戶而言,AWS CloudForamtion是帶考慮的IaC產品。基礎設施在基于JSON的模板中進行聲明性定義,CloudFormation服務可以使用它來部署一個完整的環境。
諸如Chef和Puppet之類的流行配置管理工具可以輕松得與CloudFormation集成以便進一步實現特定操作系統配置的自動化。它們讓團隊能夠將整個基礎設施提交至源代碼控制,甚至在CI/CD管道中的一個階段內對其進行測試——就像應用程序代碼一樣。
監控與日志記錄
DevOps思維方式的一個基本做法就是監控、記錄和測量一切。亞馬遜CloudWatch能夠監控常見的性能指標,如CPU和內存使用情況,以便密切關注應用程序運行性能。AWS為每一個服務都提供了大量的監控指標,而開發人員甚至能夠自定義他們自己的監控指標。
CloudWatch還支持集中式的日志與事件記錄。來自于服務器的系統日志可被自動發送至CloudWatch日志,以便對環境中的每一臺服務器上的活動進行集中式的視圖顯示。CloudWatch Events功能可在AWS平臺上發生事件時支持觸發操作。例如,開發人員可以設置一個簡單通知服務或調用Lambda功能以響應EC2實例進入運行狀態;開發人員甚至能夠制定計劃定時獲得彈性塊存儲卷標的快照。
CloudWatch用戶可以對AWS中的任何API決策采取措施。該服務還支持警報和操作,以便當運行性能下降、服務脫線或在應用程序和系統日志中發現錯誤時通知團隊。
實施DevOps的關鍵在于學習使用工具并獲得實踐經驗。通過使用AWS,實現概念驗證將比以往任何時候都更容易。開發人員可以在非生產環境中開始,并在團隊熟悉AWS工具之后創建新的管道和使用資源。