軟件開發的演變具有三個重要的里程碑。首先是引入關注發布產品所需時間的瀑布?方法。然后是優化開發生命周期的敏捷方法。現在,DevOps尋求將開發和運營結合起來,作為一個團隊一起工作。它提高了生產力,改善了協作,并提供了卓越的產品。在軟件開發中采用敏捷和 DevOps 實踐對許多人來說是一個挑戰。克服這一障礙的第一步是了解敏捷和 DevOps 之間的區別以及這些開發方法所扮演的角色。
什么是敏捷?
敏捷是一種方法論,專注于通過迭代開發和測試持續交付項目的可管理的小增量。它被引入作為傳統瀑布方法的替代方案,以其結構化、線性、順序的生命周期而聞名。項目管理和軟件開發等動態過程需要適應變化和新條件的能力。僵化的瀑布方法無法滿足持續技術創新的快節奏世界的期望。于是,敏捷誕生了。敏捷為復雜項目提供有效的日常管理,改善團隊成員和客戶之間的溝通和協作。
敏捷價值觀
該方法由敏捷宣言定義,12 條原則奠定了“敏捷工作”的基礎和價值觀。
敏捷軟件開發的核心有四個核心價值:
個人和交互超過流程和工具。宣言強調了重視每個團隊成員和營造一個健康和刺激的工作環境的重要性。為了最大限度地提高效率,它鼓勵隊友之間不斷溝通,讓每個人都參與到開發過程中。
工作軟件優于綜合文檔。文檔不能妨礙交付軟件。以前,每個項目都必須從開發軟件的要求和期望的詳細文檔開始。敏捷專注于令人尷尬的更改,并避免在以后可能會更改的文檔上花費太多時間。
客戶合作超過合同談判。持續發展涉及定期與客戶合作。即時反饋引導項目朝著最終會產生最佳結果的方向發展。在開發之前與客戶協商合同并在生產之后再參考它會導致潛在的溝通不暢。應該避免。
響應變化而不是遵循計劃。項目中期所做的更改需要很容易被接受,因為它們有助于產品的整體成功。適應新環境、擁抱新特性是敏捷與瀑布的顯著區別之一。
敏捷軟件開發
敏捷軟件開發涉及實施敏捷框架,例如 Scrum 和看板。每個軟件開發生命周期都從將項目分解為可管理的故事和需求開始。這些任務被組織成沖刺。沖刺發生在兩周內,在此期間,團隊致力于啟動和運行特定功能。
在沖刺期間,團隊專注于構建、測試和部署軟件,并在此過程中進行調整。一旦他們完成了一個沖刺,他們就會進入下一個沖刺,直到項目完成。這種做法允許持續交付軟件。同時,客戶、利益相關者和項目經理可以跟進并提供反饋,以確保獲得滿意的結果。
一些開發階段還可以包括自動化流程以加速集成(例如自動化測試和代碼管理)并確保一切正常工作。在開發過程中,團隊協作,互相提供反饋,并在每個 sprint 后定期回顧會議期間審查他們的工作。
什么是 DevOps?
DevOps 是一種軟件開發文化,在這種文化中,開發團隊和運營團隊共同努力以提高協作和生產力。該實踐還涉及實施 DevOps 原則和實踐以及使用一組DevOps 工具進行測試。DevOps 原則促進溝通、端到端責任和信息共享。他們定義 DevOps 并設定目標。與傳統的軟件開發不同,DevOps 包括構建、測試、部署和監控軟件的連續循環。DevOps 的主要目標是有效地交付高質量的軟件。
DevOps 原則
越來越多的公司正在向 DevOps 過渡。實施 DevOps 具有許多優勢,例如快速且易于集成的軟件部署。如果不了解驅動它的基本價值觀,就不可能過渡到這種新文化。它需要在開發和運營團隊中改變思維方式,這會激勵他們作為一個統一戰線開展工作。
以下原則是在 DevOps 環境中指導工程流程的基礎:
版本控制。?開發人員每天多次向中央存儲庫提交代碼更改。在向主存儲庫(主分支)提交代碼之前,必須驗證所有代碼。為了促進協作,其他開發人員可以跟蹤更改。
持續集成。開發團隊的成員每天數次將他們的代碼集成到一個共享存儲庫中。每個開發人員將工作分割成小的、可管理的代碼塊,并更快地檢測潛在的合并沖突和錯誤。
持續交付。隨著代碼的不斷集成,它也始終如一地交付給最終用戶。較小的貢獻允許更快的更新發布,這是客戶滿意度的關鍵因素。
持續部署。DevOps 的很大一部分是自動化流程以加快生產速度。持續部署涉及自動發布不會對現有架構構成重大威脅的次要更新。
持續測試。這種策略涉及在開發的每個步驟中盡可能多地進行測試。自動化測試提供有價值的反饋和手頭過程的風險評估。
持續運營。DevOps 團隊一直致力于以小而頻繁的版本升級軟件。這就是為什么 DevOps 需要持續監控性能的原因。其主要目標是防止代碼發布期間出現停機和可用性問題。
合作。?DevOps 的主要目標之一是促進協作和反饋共享。開發和運營需要主動溝通和共享反饋,以維持高效的 DevOps 管道。
DevOps 軟件開發
DevOps 軟件開發側重于項目必須通過的既定管道。階段的數量取決于團隊正在開發的軟件的復雜性和類型。關鍵階段包括開發、構建、測試和部署。規劃階段通常先于前面提到的所有階段,并且在部署之后還會添加一個監控階段。有關 DevOps 軟件開發階段以及如何規劃 DevOps 管道的更多信息,請查看什么是 DevOps 管道以及如何構建一個。
敏捷與 DevOps
敏捷 | 開發運維 | |
---|---|---|
基本理念 | 一種專注于通過迭代開發和測試持續交付項目可管理的小增量的文化。 | 一種開發和運營團隊協同工作的實踐,旨在提高協作和生產力。 |
采用 | 它可以用于任何部門來幫助管理復雜的項目。 | 專注于端到端的工程流程。 |
重點 | 創建一個歡迎項目中期更改以提高質量的環境。 | 合并開發和運營團隊,以確保他們進行持續的測試和開發。 |
團隊 | 人數較少,團隊成員緊密合作并具有相似的技能。 | 一個由多個部門組成的大型團隊中的各種技能組合。 |
交貨 | 每個 sprint 之后的增量部署(通常是每周或每兩周一次)。 | 目標是每天(甚至每隔幾個小時)提供持續交付。 |
文檔 | 極少的文檔可提高開發過程的靈活性。 | 足夠的文檔以確保團隊良好協作。強調官方文檔的溝通。 |
質量和風險 | 每次沖刺后,產品的質量都會提高,而風險會降低。 | 由于有效的協作和自動化測試,生產出低風險的高質量產品。 |
回饋 | 專注于客戶反饋并相應地調整產品。 | 鼓勵隊友之間的內部反饋,以改進和加快交付。 |
工具 | Kanboard、JIRA、Active Collab、Bugzilla、Slack、Trello。 | TeamCity、AWS、Puppet、OpenStack、Docker、Jenkins、Kubernetes、GitLab。 |
合并敏捷和 DevOps
合并敏捷和 DevOps 有很多優勢。包括加快交付速度、提高用戶滿意度以及團隊內的有效協作。將 DevOps 的實踐與敏捷文化相結合需要改變現有的策略和態度。
了解。敏捷方法要求團隊成員了解彼此的任務。相互理解對于 Scrum Master、項目經理和產品負責人來說尤其重要。為了成功管理項目,他們需要了解交付產品所需的每一個步驟。
協作。DevOps 涉及開發團隊與運營團隊一起工作。前面提到的角色現在需要了解開發過程和操作的所有方面。
沖刺中的 DevOps 實踐。接下來,團隊需要在處理 sprint 時采用集成 DevOps。這包括讓整個 DevOps 團隊(連同 QA)參與計劃、每日站會和回顧。
自動化工作流程。由于自動化是 DevOps 開發的重要組成部分,因此它應該包含在敏捷工作流程和項目規劃中。AIOps等新興領域使用人工智能來自動化 IT 環境中的手動工作流。
衡量成功。合并敏捷和 DevOps 還涉及評估和測量端到端開發中的關鍵 DevOps 指標和 KPI 。
DevOps 和敏捷可以協同工作
敏捷和 DevOps 都旨在及時交付高質量的軟件。敏捷與 DevOps 之間的區別在于,敏捷專注于優化開發生命周期,而 DevOps 將開發和運維統一在 CI/CD 環境中。
DevOps 和敏捷并不是相互排斥的。任何過渡到 DevOps 的組織都不應放棄現有的敏捷工作流程。DevOps 是敏捷的擴展,圍繞非敏捷關注的實踐而構建。當一起使用時,這兩種實踐可以改進軟件開發并產生更好的產品。