
前言
我們為什麼要寫這本書?
我們都是 Java 開發者,在我們選擇的專業領域中,已經有夠長的年資見證並參與了幾
項轉變。從我們寫出第一行 Java 程式以來,這種語言已經發展一段很長的時間了:Java
1.4 提供了 non-blocking I/O、Java 8 提供串流與 lambdas、Java 9 提供模組,最後,Java
10 提供區域變數型態推斷。部署平台也有突飛猛進的發展,雲端與容器的出現帶來許
多機會與挑戰。不過有一件事沒有改變,那就是我們必須傳遞價值給最終用戶與顧客,
我們必須盡量運用技術、工具與方法來提升交付軟體的效率(與樂趣),或許更重要的
是,我們必須與團隊合作,並領導他們共同承擔這項責任。
隨著軟體開發、架構、部署平台的“最佳做法”越來越多,開發者通常都認同一件事:
持續整合與持續交付可為軟體交付生命週期帶來巨大的價值。隨著顧客對交付的速度與
穩定性的需求越來越高,你需要一個可以提供快速回饋並且實現品保及部署程序自動化
的框架。但是,現代軟體開發者面臨的挑戰是多方面的,試著引進持續交付之類的方法
(涉及軟體設計與交付的所有層面)代表你必須掌握新的技術,其中有些通常在開發者
的舒適圈之外。
隨著職涯的發展,我們經常發現自己開始處理之前是由別人或別的團隊負責的工作,經
過辛苦的過程,我們知道開發者在取得持續交付的好處之前,必須具備三項關鍵技能:
架構設計
正確地實作鬆耦合與高內聚的基礎,可以對持續測試與獨立部署軟體系統組件的能
力產生顯著的影響。