「量變引起質變,隨著部署規模的擴大,以前不是問題的問題也會成為問題。」——《持续集成与持续部署实践》(本書為簡體中文作者出版書籍,引用內文則經過轉譯為正體中文。)
不只是『部署』,整個軟體開發生命週期內的任一環節遇到規模化時,都會有對應的問題需要面對。
即便是 CI/CD Pipeline 也會有規模化的議題。例如,小團隊、小軟體的 CI/CD Pipeline,可能直接付費使用(甚至用免費額度)的 GitLab.com,就足夠。
同時用來定義 Pipeline 的 YAML 檔案可以很單純,只有幾個 Stage 與 Job,全都合併在一條 Pipeline 內就可以搞定整個 Workflow。
但如果團隊規模擴大?軟體架構擴大?也許 Pipeline 就會開始拆解為多條,例如前後端分離,各自有自己 Pipeline,並且需要準備更多的 CI Runner 因應大量的 CI Job,同時軟體的部署與後面對應 Infra 架構也跟著改變。
假如組織與軟體系統再繼續擴大?恐怕就需要透過更抽象化或模組化的方式管理 CI Pipeline Templates,CI Runner 也要轉而改為透過 K8s 來動態提供服務。
當然也避不了遇到金句所說的『部署規模』問題,CI/CD Pipeline 走到自動化部署時,還必須配合 Infra 面對分散全球的分散式架構?或者是多座 K8s Clusters 構建的上千上百個微服務或 Container?