
第八章
在本地工作
(如同在生產環境一般)
在開始建構持續交付管道之前,你必須先確保可以有效地使用本地開發機器上的程式碼
與系統。本章將介紹幾項關於這件事的固有挑戰(尤其是當你使用現代分散式系統,以
及以服務為基礎的架構時),接著討論 mock、服務虛擬化、基礎設施虛擬化(VM 與容
器)等技術,以及 FaaS app 的本地開發。
本地開發的挑戰
身為一位 Java 開發者,你通常很習慣設置簡單的本地開發環境來處理傳統的單體 web
app,這通常需要安裝作業系統、Java Development Kit(JDK)、組建工具(Maven 或
Gradle)與整合式開發環境(IDE),例如 IntelliJ IDEA 或 Eclipse。有時你也要安裝中
介軟體或資料庫,或許還有 app 伺服器。這個本地開發設置很適合單一 Java app,但是
當你想要開發部署在雲端環境、容器協調框架,或無伺服器平台的多服務系統時,該怎
麼辦?
要開始製作有多項服務的 app,在一開始,最有邏輯的做法就是直接試著複製你的本地
開發做法來處理每一個新服務。但是,如同計算領域的許多事項,手動複製不是長久之
道,這種工作風格最大的問題是測試的整合成本,即使各個服務都有整合 / 元件等級的
測試,一旦你開發的服務數量多到一定程度,你就很難協調測試組態與初始化。你會經
常發現自己在本地啟動外部服務(藉著從 VCS 複製程式碼存放區、組建與執行)、處理
狀態、對著你正在開發的服務程式碼執行測試,最後確認外部服務的狀態。