DevOps部署自動化輕量級架構環境 For ASP.NET(一)簡介

DevOps部署自動化輕量級架構環境 For ASP.NET(一)簡介

four bots

最近新冠肺炎(COVID-19)爆發之前,我已經在研究有關自動化的相關文章,所以發現這個時刻對自動化的名詞對企業非常有幫助,有其是減少人與人的連結,另外提升減少感染率的發生,所以,此章針對學生對公司企業組織上有所幫助的自動化方案,假如說對公司企業在數位轉型的方面有所方針與見解。

部署自動化輕量級架構環境,Side Project CI/CD Gitea & jenkins For IIS ASP.NET

前言

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 通常會遵循著以下流程

CI CD 流程圖
CI/CD 流程圖

到2026年的DevOps工具市場概述和詳細的業務分析

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開發流程範例

文獻參考: