最近新冠肺炎(COVID-19)爆發之前,我已經在研究有關自動化的相關文章,所以發現這個時刻對自動化的名詞對企業非常有幫助,有其是減少人與人的連結,另外提升減少感染率的發生,所以,此章針對學生對公司企業組織上有所幫助的自動化方案,假如說對公司企業在數位轉型的方面有所方針與見解。
前言
GitLab調查全球DevOps 團隊發現,有60%開發人員發佈程式碼的速度比過去快了1倍,而這個數字比2020年成長25%。
GitLab 調查全球DevOps 團隊,發布《2021年全球DevSecOps調查》報告書,調查發現在疫情的驅使下,人們發展出新的工作方式,使得過去一年DevOps的成熟度有了超出預期的成長,無論是自動化程度、發佈節奏、持續部署和安全性狀態,抑或是人工智慧和機器學習等先進技術,都有大幅進步。
從去年的DevOps 調查來看,DevOps 的角色不斷變化,與開發人員有關的通常是測試和營運任務,而營運的重點通常在雲端和基礎設施,而安全性則是跨功能團隊的一部分。GitLab 提到,DevOps 不斷變化發展並不奇怪,在今年的調查中,發現有43%的受訪者,已經從事3到5年的DevOps 工作,並且繼續投入在SCM、CI/CD和自動化測試等DevOps 實踐。
在核心數位技術的驅策下,數位轉型步伐正加速前進。另外全世界面對「新冠肺炎(COVID-19)」疫情突顯了IT和數位轉型的價值,建議企業組織應該將危機轉化成為加速轉型的機會。
DevOps 開發維運是一項不斷發展的理念與架構,旨在鼓勵更快、更出色的應用程式開發團隊,以及更快地將新版本的軟體應用發佈給客戶端。
淺談為何介紹部署自動化
- DevOps 是近年還不斷在興起的一種軟體開發概念,DevOps 即是Development 和 Operations 的結合,顧名思義主要是包含了開發者(包含軟體品質、測試人員)與維運人員(包含維護、系統架設人員)的之間的一種資訊文化運動。
- 採用DevOps 文化特性、做法和工具的團隊可獲得更高的效能,也能更快速建置更好的產品以提高客戶滿意度。
- DevOps 會從整個規劃、開發、傳遞和作業階段影響應用程式生命週期。每個階段都依賴於其他階段,且階段並不特定於角色。在真正的 DevOps 文化中,在某種程度上,每個角色都會參與每個階段。
- DevOps 團隊會在不犧牲品質、穩定性和生產力的情況下尋求快速創新。為了達成此目標,他們使用高生產力工具來將一般步驟與手動步驟自動化,並透過自動化測試與持續整合以小增量的方式進行逐一查看。
何謂CI(Continuous integration)?
- 即是「持續整合」
- 作業流程:
- 程式建置:開發人員在每一次的 Commit & Push 後,都能夠於統一的環境自動 Build 程式,透過此一步驟可以避免每個開發人員因本機的環境&套件版本不相同,造成 Service 異常。
- 單元測試:當程式編譯完成後,將會透過「單元測試」測試新寫的功能是否正確,或者確認是否有影響到現有功能,透過該步驟進行測試,可以避免掉開發人員遺忘於本機先行檢查,作為「雙重驗證」工用。
- 作業目的:
- 原始碼進行版控管制
- 減少人工手動的反覆動作
- 增加系統一致性與透明化
- 減少團隊等待作業
- 降低人為疏失風險
何謂CD(Continuous Deployment)?
- 即是「持續部署」
- 作業流程:
- 部署服務:透過自動化方式,將寫好的程式碼更新到機器上並公開對外服務,另外需要確保套件版本&資料庫資料完整性,也會透過監控系統進行服務存活檢查,若服務異常時會即時發送通知告至開發人員。
- 作業目的:
- 保持每次更新程式都可順利完成
- 確保服務存活
CI/CD 通常會遵循著以下流程
到2026年的DevOps工具市場概述和詳細的業務分析
推薦不錯的CI/CD 工具
- Jenkins是CI市場中最知名且最常見的名號之一。其最初是由Sun公司的一位工程師打造的一個輔助項目,並迅速擴展為最大的開源CI工具之一,可幫助工程團隊實現自動化部署。價格:免費
- Travis CI 是CI/CD 生態系統中比較常見的名號之一,最初設定為開源項目,並在多年擴展之後轉為閉源項目。它專注於CI 工作,通過自動化測試和警報系統提高構建過程的效能。價格:自助版本的69美元/月到高級版本的489美元/月不等。
- Circle CI是一款基於雲的工具,可自動執行集成和部署任務。它還強調在部署之前對代碼中的每項變更進行測試,且使用多種方法——如單元測試、集成測試與功能測試等。該工具支持容器、OSX以及Linux環境,可以在私有云或您自己的數據中心內運行。價格:OSX版本起價為39美元/月,年度合同的價格為每用戶35美元/月。
- TeamCity是由JetBrains開發的CI / CD服務器。其提供“開箱即用”的持續集成功能,並允許用戶根據自己的需要實現適配。它支持多種語言(Java,.NET,Ruby等),而JetBrains也為其提供多款支持工具與出色的說明文檔。價格:企業服務器許可起價為1999美元。
- Codeship 對CI / CD有著不同的看法,並提供託管持續集成即服務方案。該工具最初是為Rails開發人員提供持續集成平台而構建的;當時,他們需要在GitHub上託管自己的代碼並將其部署到Heroku。價格:Basic與Pro版本的價格在49美元至79美元/月之間。
- GitLab CI/CD。除了測試和構建項目之外,該工具還可以將build部署到您的基礎設施當中。而且只要了解各具體代碼段的位置,您就能夠對其開展針對性追蹤。價格:起價為3.25美元/月。
推薦不錯的Git Server
- GitLab 最初是採用MIT 授權之免費開源軟體。現在則分為 GitLab CE(社群版)和 GitLab EE(企業版),而兩者的核心程式碼是相同的,但企業版會在核心功能之上,再疊加更多好用的進階功能。
- Gitea 主要是由Gogs 分歧的版本,兩者的差異在於Gogs 由單人維護,因Gogs 的作者不打算將讀寫權限開放給社群,因此才有了Gitea 分歧版本。
- Bonobo 目前能夠在Windows平台上建置,免費且長期穩定維護的就屬Bonobo Windows Git Server。
推薦輕量級架構環境作業流程
- 版本控制:Gitea 為遠端存放庫目的。
- 程式建置:Jenkins CI 自動建置方案。
- 單元測試:Jenkins CI 自動整合測試。
- 持續部署:Jenkins CD 自動部署服務。
推薦輕量級架構環境安裝工具套件
- Git(版本控制軟體)
- Gitea(版本控管伺服器)
- Jenkins CI(持續整合工具)
- Java 8 SDK(Jenkins 必要條件)
- Build Tools for Visual Studio 2019(建置 Visual Studio 專案)
- Agents for Visual Studio 2019(自動化的測試)
- NuGet(套件管理員主控台,應用程式需下載無安裝步驟)
DevOps目標
- 企業組織開發產品目標:
- 面對多種使用者、具備多樣功能。
- 頻繁交付產品、部署週期短。
- 虛擬化和雲端運算基礎設施。
- 開發和業務紛爭:
- 業務為滿足客戶,要求開發人員做「Change」。
- 開發和維運紛爭:
- 開發人員為滿足使用者需求,不斷更新版本,不管硬體網路部署問題,但新版本會造成新問題,增加維運人員工作量。
- 維運人員為成功部署,可能變更設定,造成上線責任歸屬紛爭。
- 維運遇到問題,軟體開發人員不一定協助處理,兩者間產生「困惑牆Wall of Confusion」。
- 『開發Development』與『維運Operations』整合。
- 強調溝通(Communication)、合作(Collaboration)、整合(Integration)及自動化(Automation)加強開發人員與維運和品質控制人員合作。
- DevOps指導原則幫助解決Wall of Confusion問題,提高軟體品質、加快開發速度和避免重工。
- 敏捷軟體開發 ( Agile Software Development ) 方法。
- 透過跨部門合作及自動化實現快速、頻繁發佈軟體 。
- CI/CD持續整合與持續發展
- 扮演角色
- 與傳統開發流程的不同
- 系統上線後如何持續監控狀態以修復程式
- 建立Git版本控管帳號
- 在Jenkins建立CI/CD的工作任務
- 透過Jenkins自動將新版本部署至環境上
自動化建置與工具整合範例
DevOps開發流程範例
文獻參考:
- 用於CI / CD集成的Jenkins插件-PractiTest,參考網址:https://www.practitest.com/help/integrations/jenkins-plugin/
- 架構師觀點: 你需要什麼樣的 CI / CD ? — 安德魯的部落格,參考網址:https://columns.chicken-house.net/2017/08/05/what-cicd-do-you-need/
- Gitlab CI / CD介紹與Runner的架設,參考網址:https://sean22492249.medium.com/gitlab-ci-cd-%E4%BB%8B%E7%B4%B9%E8%88%87-runner-%E7%9A%84%E6%9E%B6%E8%A8%AD-afdbde9f22aa
- GitLab Auto DevOps 深入淺出,自動部署,連設定檔不用?!參考網址:https://5xruby.tw/posts/gitlab-auto-devops
- Gitlab-CI/CD 2 | IT人,參考網址:https://iter01.com/522595.html
- Yy’s Program: C#專案在Gitlab上建立CI/CD機制(中),參考網址:http://yy-programer.blogspot.com/2019/02/gitlabcci_11.html?m=1
- 教你如何用Jenkins自動化部署項目(教程,從零到搭建完成),參考網址:https://codingnote.cc/zh-tw/p/8921/