如何實現 DevOps 工具鏈
不同規模和不同行業組織都致力於為提高軟體交付的速度和質量提供解決方案。這不僅保證了他們的生存,還令他們在全球市場取得了成功。DevOps 可以幫助他們規划出一條最佳路線。
DevOps 是一個系統,通過引入不同的工具鏈連接不同工作流程,以便及時交付項目並降低所需的開銷。
在我工作的 IT 服務公司 Accedia,我們會幫助客戶落地一套完整的 DevOps 工具鏈,這套工具鏈能幫助他們達到甚至超越他們的業務目標。在這篇文章,我會分享目前為止從 DevOps 項目中汲取的經驗。
DevOps 工具鏈是什麼?
一套完善的 DevOps 工具鏈可以在不同階段中使用不同的 DevOps 工具來解決特定的業務帶來的挑戰。一條工具鏈能保證前端和後端開發者、質量測試人員、客戶都能夠從中獲得收益。構建工具鏈的目的是為了自動化開發和部署過程,以確保快速、可靠、預算友好地交付與創新。
我們發現成功構建一套 DevOps 工具鏈不是一個簡單的事情。它需要實驗和不斷的完善,保證必要的流程是完全自動化的。
為什麼你需要 DevOps 工具鏈
DevOps 工具鏈自動化了工作流中的所有技術元素。它能讓不同團隊在一個平台上進行工作,因此可以使你專註於業務戰略以推動組織走向未來。
我們總結了五個實現 DevOps 工具鏈所帶來的好處。你可以讓管理層相信,是值得為 DevOps 工具鏈的開發投入資源和時間的。
- 更快、更高效的生產部署:DevOps 工具自動化了大部分軟體開發進程。這會使產品開發專註於創新,交付更加敏捷,更領先於競爭對手。
- 預算和時間優化:將手動的任務轉變為自動化會使你的組織節省時間和資源。當沒有人為的錯誤和時間管理不足帶來的額外支出,預算自然會得到優化。
- 高效的開發:DevOps 工具鏈會減少開發工作中不必要的延時,提高開發效率。前端、後端、質量測試人員的工作是一致的,所以沒有人需要協調不同團隊之間人員的交付。
- 更快的部署意味著更高的質量:DevOps 工具鏈保證了缺陷能夠很快被解決,並且迅速完成高質量的部署進程。怎麼樣?它可以生成有針對性的告警,並將重要的事件通知給你的團隊。這會讓你主動地發現並解決潛在的問題,從而規避故障的不斷的升級從而導致的客戶服務不可用。
- 及時事件管理:DevOps 工具鏈有助於優化事件管理記錄。它能夠識別 IT 事件並且逐漸升級事件級別,通知給指定團隊的成員,直到問題被解決。這意味著消息的接受和處理會更加的迅速,因為它們發送給了正確的目標。
DevOps 工具鏈的實踐
對我的團隊來說,DevOps 並不新鮮。我們已經敏捷開發很長時間了,並且我們總是熱衷於探索最優的工作流。在我們的實踐中,往往都是應用複雜性增加從而帶來了自動化的需求。
這是我們為一個客戶配置的工具鏈。這個項目包含了移動運營方案,連接了金融交易的所有參與者 (賣方、買方、銀行)。這個客戶需要動態響應用戶反饋並且將故障時間縮短到最小,從而來提高用戶體驗。我的團隊設計了一套工具鏈用於自動化應用的維護和部署新功能。
![Accedia's DevOps toolchain](/data/attachment/album/202101/29/153949j3ozdhoojhod2kek.png "Accedia's DevOps toolchain")
(Accedia, CC BY-NC-SA 4.0)
- 首先,我們團隊編寫了自動化測試,可以立即識別應用程序的變更。
- 當新版本已經準備就緒的時候,代碼將被提交到 Gitlab 中。
- 通過 Gitlab,提交會自動觸發 Jenkins 構建。
- 在 持續集成中,新的代碼版本通過 Chai 和 Mocha 進行了測試,以檢測是否運行正常。
- 當測試通過,持續部署階段 將會開始並創建一個可用的 Docker 鏡像並上傳到 Sonatype 的 Nexus。(這是 Sonatype 公司的的一個開源工具)
- 最後,新版本應用會通過 Nexus 下載並且部署到線上環境中,例如 Docker 容器 (持續部署階段)
簡而言之,每當有人在倉庫中創建一個新的提交,又或者團隊上傳新的代碼版本、功能、升級、缺陷修復等,應用程序包都會自動更新並且交付給客戶。
這套系統擁有良好的事故控制能力以保證快速部署,但不以犧牲質量為代價。它對於用戶的反饋是動態的,意味著新功能和舊功能的和更新只需要之前一半的時間,同時將故障時間降低到最低。
把它封裝起來
一套完整並且正確實施的 DevOps 工具鏈可以從始至終推動你的創新計劃並且加速部署。
根據你的需求,你的工具鏈可能看起來和這些不一樣,但是我希望我們的工作流能夠讓你了解如何將自動化作為一種解決方案。
via: https://opensource.com/article/21/1/devops-tool-chain
作者:Tereza Denkova 選題:lujun9972 譯者:AnyISalIn 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive