
226
| 第九章
平台的 CI(Infrastructure as Code)
本書避免深入討論基礎設施的持續整合與交付,但不言可喻,基礎設施的 CI 與 CD 非
常重要。Kief Morris(
https://twitter.com/kief
)在他的 O
’
Reilly 書籍
Infrastructure as Code
中談過建立平台的概念、做法與 CD 管道的重要性。我們強烈推薦這本書,如果你是
技術主管或架構師(或有志於此)更是要讀。你不會在看完這本書就變成 Terraform 或
Ansible 專家,但你要充分了解持續交付平台所需的原則、做法與工具。
同時持續交付 app 與基礎設施程式碼可能會有問題
我們曾經與許多 app 及基礎設施團隊同時參與專案,其中的團隊有的負責 app
領域(或服務),有的負責部署用的“平台”的元件,這種做法可能會出問
題,尤其是當平台會隨著 app 快速演變時。因為我們經常發現,當工程團隊準
備啟動一項產品或專案時,平台(例如 Kubernetes 與相關的基礎設施元素,例
如組態管理與服務發現)還在組裝當中。當我們遷移到新平台時也是如此。
這可能會讓開發團隊頭痛不已,除了 app 元件會不斷改變,並且造成團隊之間
的摩擦之外,底層的部署結構也會如此。這可能會導至許多“誰是殺手”風格
的對話,開發團隊不確定究竟是誰破壞了組建版本:凶手是一個團隊,還是開
發團隊同事,或是平台團隊?根據我們的經驗,你必須謹慎地管理這種事情。
我們建議你讓開發與平台團隊分別使用各自的 CI/CD ...