什麼是 DevOps?
DevOps 結合了開發 (開發) 和作業 (Ops) 將人員、程式和技術整合在應用程式規劃、開發、傳遞和作業中。 DevOps 可在先前孤立的角色之間進行協調與共同作業,例如開發、IT 作業、品質工程和安全性。
Teams 採用 DevOps 文化、做法和工具,以提升他們對所建置應用程式的信心、更妥善地回應客戶需求,以及更快達成商務目標。 DevOps 可藉由產生更好、更可靠的產品,協助小組持續為客戶提供價值。
DevOps 和應用程式生命週期
DevOps 會在整個規劃、開發、傳遞和作業階段影響應用程式生命週期。 每個階段都依賴其他階段,而階段並非角色專屬。 DevOps 文化特性牽涉到每個階段的所有角色在一定程度上。
下圖說明 DevOps 應用程式生活方式的階段:
DevOps 目標和優點
當小組採用 DevOps 文化、做法和工具時,他們就能達成令人驚異的事情:
縮短上市時間
透過提高效率、改善小組共同作業、自動化工具和持續部署,小組能夠快速地縮短從產品啟動到上市的時間。
適應市場和競爭
DevOps 文化要求小組擁有客戶優先的焦點。 藉由將靈活度、團隊共同作業,並專注於客戶體驗,小組可以持續為客戶提供價值,並提升其在市集中的競爭力。
維護系統穩定性和可靠性
藉由採用持續改進做法,小組能夠建立其部署產品和服務的穩定性和可靠性。 這些做法有助於降低失敗和風險。
改善平均復原時間
復原 計量的平均時間 表示從失敗或缺口中復原所需的時間。 若要管理軟體失敗、安全性缺口和持續改進計劃,小組應測量並努力改善此計量。
採用DevOps文化特性
若要完全實作 DevOps,您必須採用 DevOps 文化特性。 培養DevOps文化需要人員工作和共同作業方式的深層變更。 當組織認可 DevOps 文化特性時,他們會建立一個環境,讓高效能的團隊發展。 雖然採用 DevOps 做法會透過技術將程式自動化並優化,而不會轉移到組織及其人員內的 DevOps 文化,但您不會獲得 DevOps 的完整優點。
下圖會擷取 Microsoft 即時網站文化的重要層面。
下列做法是 DevOps 文化特性的重要元件:
- 共同作業、可見度和對齊方式:健康 DevOps 文化特性的標誌是小組之間的共同作業。 共同作業從可見度開始。 開發、IT 和其他小組應該彼此共用其 DevOps 程式、優先順序和疑慮。 藉由規劃共同工作,他們更適合在與業務相關的目標和成功措施上保持一致。
- 範圍和責任的轉變:隨著團隊的一致,他們採用擁有權並參與其他生命周期階段,而不只是其角色的核心。 例如,開發人員不僅要對開發階段建立的創新和品質負責,也要對因其改變而在作業階段所帶來的效能及穩定性負責。 同時,IT 操作員必然會在規劃與開發階段納入治理、安全性與合規性。
- 較短的發行週期:D evOps小組透過以短週期發行軟體來保持敏捷。 較短的發行週期能讓規劃與風險管理更輕鬆,因為進度是遞增的,這也會降低對系統穩定性的影響。 縮短發行週期,也能讓組織適應並應對持續變化的客戶需求與競爭壓力。
- 持續學習:高效能的DevOps小組會建立成長思維。 它們會快速失敗,並將學習併入其程式。 他們努力不斷改善、提高客戶滿意度,並加快創新和市場適應性。
實作DevOps做法
您可以遵循 DevOps 做法來實作 DevOps(如後續各節所述),以在整個應用程式生命週期中實作 DevOps。 其中某些做法有助於加速、自動化並改進特定階段。 其他做法則涉及多個階段,可協助團隊建立順暢的程序,並提升生產力。
持續整合與持續傳遞 (CI/CD)
持續整合 (CI) 是開發小組用來自動化、合併和測試程式代碼的做法。 CI 有助於在開發週期的早期攔截 BUG,因此可降低修正程式的成本。 自動化測試會在 CI 流程中執行,以確保品質。 CI 系統會產生成品,並將它們饋送給發行流程,以推動頻繁的部署。
持續傳遞 (CD) 是建置、測試程式碼並將其部署到一或多個測試及實際執行環境的流程。 在多個環境中部署和測試可增進品質。 CD 系統會產生可部署的成品,包括基礎結構和應用程式。 自動化發行流程會使用這些成品來發行新版本,並修正為現有的系統。 監視和傳送警示的系統會持續執行,以提升整個 CD 流程的可見度。
版本控制
版本控制是在版本中管理程式碼的做法,可追蹤修訂與變更歷程記錄,讓程式碼易於檢閱及復原。 這種做法通常是使用 Git 之類的版本控制系統來實作,這可讓多個開發人員在撰寫程式代碼中共同作業。 這些系統提供清楚的程序,來合併在相同檔案中發生的程式碼變更、處理衝突並將變更復原至較早的狀態。
使用版本控制是 DevOps 的一項基本做法,可協助開發團隊共同作業、在團隊成員之間劃分編碼工作,並儲存所有程式碼以便在需要時輕鬆復原。 版本控制也是其他做法中的必要元素,例如持續整合與基礎結構即程式碼。
敏捷式軟體開發 (Agile Software Development)
敏捷式開發是一種軟體開發方法,強調團隊共同作業、客戶和使用者意見反應,以及透過短期發行週期對變更的高適應性。 實踐敏捷式開發的團隊,可為客戶提供持續的變更與改進,並收集客戶意見反應,再根據客戶需求來學習與調整。 敏捷式開發與其他較傳統的架構 (例如瀑布方法) 有很大不同,後者包括由循序階段所定義的長期發行週期。 工作流程看板和 Scrum 是與敏捷式開發相關聯的兩種熱門架構。
基礎結構即程式碼
基礎結構即程式碼以描述性方式定義系統資源和拓撲,可讓團隊如同編碼一樣管理這些資源。 這些定義也可以儲存於版本控制系統中並建立版本,並且可在其中像程式碼一樣檢閱及還原。
實踐基礎結構即程式碼,可協助團隊以可靠、可重複與受控的方式來部署系統資源。 基礎結構即程式碼也有助於自動執行部署並降低人為錯誤的風險,特別是針對複雜的大型環境。 這種可重複、可靠的環境部署解決方案,可讓團隊維護與生產環境相同的開發與測試環境。 將環境複製到不同的資料中心和雲端平台,也同樣變得更簡單且更有效率。
設定管理
設定管理是指管理包含伺服器、虛擬機器和資料庫等系統中的資源狀態。 使用設定管理工具可讓團隊以受控的系統化方式推出變更,降低修改系統設定的風險。 團隊會使用設定管理工具來追蹤系統狀態並協助避免設定偏差,此偏差是因系統資源設定隨著時間而偏離為其定義的所需狀態所造成。
除了基礎結構即程式代碼之外,可以輕鬆地將系統定義和設定範本化並自動化,以協助小組大規模操作複雜的環境。
持續監視
持續監視表示能夠完整、即時地查看整個應用程式堆疊的效能和健康情況。 此可見度的範圍從執行應用程式的基礎結構到較高層級的軟體元件。 可視性是透過收集遙測和元數據,以及針對需要操作員注意之預先定義條件的警示設定來完成。 遙測由從系統各個部分收集的事件資料與記錄所組成,這些資料與記錄儲存於可進行分析和查詢的地方。
高效能的 DevOps 團隊會確保其設定可操作、有意義的警示,並收集豐富的遙測,以便從大量資料中獲得見解。 這些見解有助於團隊即時解決問題,並了解如何在未來開發週期中改進應用程式。
規劃
在規劃階段中,DevOps 小組會思考、定義及描述他們計劃建置之應用程式和系統的特色和功能。 Teams 會追蹤低層級和高粒度的工作進度,從單一產品到多個產品群組。 Teams 使用下列 DevOps 做法來規劃 靈活度和可見度 :
如需 Microsoft 在公司軟體小組中支援 DevOps 規劃所採用的數個課程和做法的概觀,請參閱 Microsoft 如何使用 DevOps 規劃。
部署
開發階段包含開發軟體程式代碼的所有層面。 在此階段中,DevOps 小組會執行下列工作:
為了快速創新,而不犧牲品質、穩定性和生產力,DevOps 小組:
如需 Microsoft 採用以支援其移轉至 DevOps 的開發作法概觀,請參閱 Microsoft 如何使用 DevOps 進行開發。
交付
傳遞是一致且可靠地將應用程式部署到生產環境的程式,理想情況下是透過 持續傳遞 (CD) 。
在傳遞階段中,DevOps 小組:
- 使用明確的手動核准階段定義發行管理程式。
- 將自動化閘道設定為在階段之間移動應用程式,直到最終發行給客戶為止。
- 自動化傳遞程式,使其可調整、可重複、控制且 經過良好測試。
傳遞也包括部署和設定傳遞環境的基礎基礎結構。 DevOps 小組使用基礎結構即程序代碼(IaC)、容器和微服務等技術來提供完全控管的基礎結構環境。
保管庫 部署實務可以在影響客戶體驗之前找出問題。 這些做法可協助DevOps小組輕鬆、自信和安心地提供。
Microsoft 開發的核心 DevOps 原則和程式會隨著提供有效率的傳遞系統而演進,如 Microsoft 如何使用 DevOps 提供軟體中所述。
Operations
作業階段牽涉到在生產環境中維護、監視和疑難解答應用程式,包括 Azure 之類的混合式或公用雲端。 DevOps 小組的目標是系統可靠性、高可用性、強大的安全性和零停機時間。
自動化傳遞和安全部署做法可協助小組在發生時快速找出並減輕問題。 維護警惕需要豐富的遙測、可採取動作的警示,以及應用程式和基礎系統的完整可見度。
Microsoft 用來操作複雜在線平臺的做法,請參閱 Microsoft 如何使用 DevOps 運作可靠的系統。