在前面的章節裡談到了 GCP、Docker、Cloud Run 等技術,透過這些工具,已經可以打造出一條簡單的軟體開發流水線,這邊就以開發者與維運人員的角度設計了簡單的流程圖。
學會了容器,作為開發者主要工作還是 Coding ,但開發完成後,就可以用容器化的方式將服務交付,測試好服務( Code )、以及 Image (執行環境),就能上傳到 Container Registry ,供維運人員部屬。
對維運人員來說,可以使用 GCP 上的各式服務來搭建環境,當收到請求,就準備好所需的相關服務進行部屬。
CI 的目的在於將開發到部屬之間的工作給抽離出來,包括 Build 環境 、 Unit Test 、 上傳 Image 。透過腳本的建置,就能將這些流程自動化,不僅能確保測試都有正確執行,降低人為疏失的機會,這些重複的工作交由機器來做,也能減少人力成本的花費。
CD 的目的在於如何將服務自動化的部屬到實際環境,並且保證服務更新期間也能正常運行,透過 CD ,就能夠將開發完成的新版本快速上線,提供給使用者。
CI/CD 工具目的在於將軟體開發到部屬的流程自動化,不僅能減少人為疏失的風險,也讓開發者與維運人員減少資源花費,也就是最一開始講到的 DevOps 目標,讓各階段的人員只專注於自己工作情況下也能緊密合作。帶入了CI/CD 技術後,可以打造出的開發架構如下。
在基礎篇中,透過雲端、容器、 Serverless 我們已經了解到如何建構出一套簡單的軟體開發流程,在之後的進階篇裡,就會介紹 Kubernetes、CI/CD 等技術,透過 DevOps 方式來讓軟體生命週期變更加順暢。