TOP
0
0
魅麗。花火原創小說66折起
Java持續交付
滿額折
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付
Java持續交付

Java持續交付

人民幣定價:119 元
定  價:NT$ 714 元
優惠價:87621
領券後再享89折
無庫存,下單後進貨(採購期約45個工作天)
可得紅利積點:18 點
相關商品
商品簡介
作者簡介
目次

商品簡介

本書完整介紹了Java軟件開發的整個生命週期,還結合大量的成功實踐經驗,介紹了每個階段可能會使用到的工具和技能。在基礎設施已經極大完善的今天,本書還與時俱進地介紹了如何在Docker、Kubernetes、Cloud、FaaS等新興環境下進行持續集成和持續交付。

作者簡介

丹尼爾·布萊恩特(Daniel Bryant),是Datawire 的獨立技術顧問和產品架構師。他專注於通過發現價值流、創建構建管道以及實施有效的測試策略,在組織內實施持續交付。Daniel 在技術上擅長DevOps 工具、雲計算/ 容器平臺和微服務實現。他還是一名Java 社區領袖,為幾個開源項目做出過貢獻,也為InfoQ、O'Reilly 和Voxxed 撰寫文章,並且會定期出席OSCON、QCon 和JavaOne 等國際會議。

亞布拉罕·馬林-佩雷斯(Abraham Marin-Perez),是一名Java 和Scala 開發人員,在金融、出版和公共部門等行業擁有超過10 年的經驗。他還幫助管理倫敦Java 社區,並在Meet a Mentor London小組提供職業發展方面的建議。Abraham 喜歡與其他人分享他的經驗,因此經常會在JavaOne 或者Devoxx UK 等國際活動上發表演講,並在InfoQ 上發表Java 方面的新聞。他還是Real-World Maintainable Software (O'Reilly) 一書的作者。Abraham 目前居住在倫敦,喜歡在天氣好的時候外出徒步,或者天氣不好的時候在家烹飪。

張若飛,TGO會員,曾任易通貸CTO,宜人貸首席架構師,在雅虎北研、金山雲、POLYCOM等知名公司擔任架構師。十餘年互聯網研發及技術管理經驗,管理過超過百人的技術研發團隊,對搭建海量數據、大型分布式系統有豐富經驗,對互聯網金融領域有廣泛涉獵。著有十餘本技術譯著,包括《雲原生Java:Spring Boot、Spring Cloud與Cloud Foundry彈性系統設計》《面向可伸縮架構》《代碼不朽:編寫可維護軟件的十大則》《給大忙人看的JavaSE 8》《Grails**指南》等書,總計300余萬字。

目次

第 1 章 持續交付 :為什麼需要持續交付,什麼是持續交付....................1
入門知識 .......................................................................................................................1
賦能開發者 :為什麼我們要持續交付 ..........................................................................2
快速反饋會減少上下文切換 .................................................................................2
自動化的、可重複的以及可靠的發佈...................................................................2
定義“完成”的概念 .............................................................................................3
什麼是構建管道 ............................................................................................................4
核心的構建管道階段 .............................................................................................4
容器技術的影響 ....................................................................................................7
對當前架構的影響 ................................................................................................8
總結 ..............................................................................................................................9
第 2 章 Java 開發的演化..............................................................10
現代 Java 應用程序的需求 .......................................................................................... 10
對業務增長速度和穩定性的要求 ........................................................................ 11
API 經濟的崛起 .................................................................................................. 11
雲計算的機會和成本 ........................................................................................... 12
模塊化歸來 :擁抱更小的服務 ............................................................................ 12
對持續交付的影響 .............................................................................................. 13
Java 部署平臺的演化 .................................................................................................. 13
WAR 和 EAR :應用服務器統治的年代 .............................................................. 13
可執行的胖 JAR 文件 :十二要素風格應用的出現 ............................................. 14
容器鏡像 :不斷增加的可移植性(以及複雜性) ................................................ 15
函數即服務 :“無服務器”架構的出現 ............................................................... 16
平臺對持續交付的影響 ....................................................................................... 17
DevOps、SRE 和發佈工程 ......................................................................................... 17
研發和運維.......................................................................................................... 18
站點可靠性工程 .................................................................................................. 19
發佈工程 ............................................................................................................. 21
共享責任、指標和可觀察性 ............................................................................... 22
總結 ............................................................................................................................ 22
第 3 章 設計持續交付的架構..........................................................24
優秀架構的基礎 .......................................................................................................... 24
松耦合 ................................................................................................................. 25
高內聚 ................................................................................................................. 25
耦合、內聚和持續交付 ....................................................................................... 26
面向業務敏捷的架構 .................................................................................................. 27
不好的架構會限制業務的發展 ............................................................................ 27
複雜性和變更成本 .............................................................................................. 28
API 驅動的應用程序的最佳實踐 ................................................................................ 29
“自上而下”構建 API ......................................................................................... 29
良好的 API 有助於持續測試和集成 .................................................................... 29
部署平臺和架構 .......................................................................................................... 30
設計符合“十二要素”的雲原生應用程序 ......................................................... 30
培養機械同理心 .................................................................................................. 33
面向失敗的設計和持續測試 ............................................................................... 33
越來越小的服務 .......................................................................................................... 34
交付單體應用程序的挑戰 ................................................................................... 34
微服務 :當 SOA 遇到領域驅動設計 .................................................................. 35
函數、lambda 表達式和納米服務(Nanoservices) ............................................. 36
架構 :“難以改變的東西” ........................................................................................... 37
總結 ............................................................................................................................ 38
第 4 章 Java 應用的部署平臺、基礎設施以及持續交付......................39
由平臺提供的功能性 .................................................................................................. 39
基本的開發流程 .......................................................................................................... 40
傳統的基礎設施平臺 .................................................................................................. 41
傳統的平臺組件 .................................................................................................. 41
傳統基礎設施平臺面臨的挑戰 ............................................................................ 41
傳統基礎設施的好處 ........................................................................................... 42
傳統基礎設施平臺上的 CI / CD .......................................................................... 42
雲平臺 ......................................................................................................................... 43
深入雲計算.......................................................................................................... 43
雲計算面臨的挑戰 .............................................................................................. 45
雲計算的好處 ...................................................................................................... 46
雲計算中的持續交付 ........................................................................................... 47
平臺即服務 ................................................................................................................. 47
簡單瞭解 PaaS 的原理 ......................................................................................... 48
PaaS 平臺面臨的挑戰.......................................................................................... 48
PaaS 的好處 ........................................................................................................ 50
CI/CD 和 PaaS ..................................................................................................... 50
容器(Docker) ........................................................................................................... 50
容器平臺組件 ...................................................................................................... 51
容器面臨的挑戰 .................................................................................................. 52
容器的好處.......................................................................................................... 53
持續交付容器 ...................................................................................................... 53
Kubernetes .................................................................................................................. 53
Kubernetes 的核心概念 ....................................................................................... 54
Kubernetes 面臨的挑戰 ....................................................................................... 54
Kubernetes 的好處 ............................................................................................... 55
Kubernetes 的持續交付 ....................................................................................... 56
函數即服務 / 無服務器函數 ........................................................................................ 56
FaaS 的概念 ........................................................................................................ 57
FaaS 面臨的挑戰 ................................................................................................. 57
FaaS 的好處 ........................................................................................................ 58
CI/CD 和 FaaS ..................................................................................................... 59
使用基礎設施即代碼 .................................................................................................. 59
總結 ............................................................................................................................ 60
第 5 章 構建 Java 應用程序..........................................................61
分解構建過程 ............................................................................................................. 61
自動化構建過程 .......................................................................................................... 62
構建依賴 ............................................................................................................. 63
外部依賴 ............................................................................................................. 66
多模塊項目.......................................................................................................... 67
使用多代碼庫還是單代碼庫 ............................................................................... 67
插件 ..................................................................................................................... 68
發佈和公開構件 .................................................................................................. 69
Java 構建工具概述 ...................................................................................................... 69
Ant ...................................................................................................................... 69
Maven .................................................................................................................. 72
Gradle .................................................................................................................. 77
Bazel、Pants 和 Buck .......................................................................................... 80
其他 JVM 構建工具 :SBT 和 Leiningen ............................................................. 82
Make ................................................................................................................... 82
如何選擇一個構建工具............................................................................................... 83
總結 ............................................................................................................................ 84
第 6 章 其他構建工具和技巧..........................................................86
Linux、Bash 和基本的 CLI 命令 ................................................................................ 86
用戶、權限和組 .................................................................................................. 86
使用文件系統 ...................................................................................................... 90
查看和編輯文本 .................................................................................................. 92
將所有東西連在一起 :重定向、管道和過濾器 .................................................. 93
搜索和操作文本 :grep、awk 和 sed ................................................................... 94
診斷工具 :top、ps、netstat 和 iostat .................................................................. 95
HTTP 調用和 JSON 操作 ............................................................................................ 96
curl ...................................................................................................................... 96
HTTPie .............................................................................................................. 100
jq ....................................................................................................................... 104
編寫基礎腳本 ........................................................................................................... 105
xargs .................................................................................................................. 105
管道和過濾器 .................................................................................................... 105
循環 ................................................................................................................... 106
條件 ................................................................................................................... 106
總結 .......................................................................................................................... 107
第 7 章 打包應用程序.................................................................108
構建一個 JAR 文件 :循序漸進 ................................................................................ 108
構建一個可執行的胖 JAR 文件 ................................................................................ 112
Maven Shade 插件 ............................................................................................. 113
構建 Spring Boot Uber JAR 文件 ...................................................................... 116
瘦 JAR 文件 ― 為什麼我們決定不使用胖 JAR ...................................................... 117
構建 WAR 文件 ......................................................................................................... 118
在雲平臺上打包 ........................................................................................................ 120
將部署比作烹飪 :烘焙式部署還是煎炸式部署 ................................................ 120
構建 RPM 和 DEB OS 包 .................................................................................. 121
其他構建 OS 包的工具(支持 Windows) ......................................................... 124
使用 Packer 創建可在多個雲平臺部署的機器鏡像 ........................................... 126
創建機器鏡像的其他工具 ................................................................................. 129
構建容器 ................................................................................................................... 129
創建 Docker 容器鏡像 ....................................................................................... 130
使用 fabric8 製作 Docker 鏡像 .......................................................................... 131
打包 FaaS Java 應用程序 .......................................................................................... 132
總結 .......................................................................................................................... 135
第 8 章 在本地環境中工作(就像在生產環境中一樣)........................136
本地開發面臨的挑戰 ................................................................................................ 136
mock、stub 和服務虛擬化 ........................................................................................ 137
模式 #1 :profile、mock 和 stub ........................................................................ 137
使用 Mockito 進行 mock ................................................................................... 138
模式 #2 :服務虛擬化和 API 仿真 .................................................................... 140
使用 Hoverfly 虛擬化服務 ................................................................................ 141
虛擬機 :Vagrant 和 Packer ....................................................................................... 145
安裝 Vagrant ...................................................................................................... 145
創建一個 Vagrantfile ......................................................................................... 145
模式 #3 :生產環境鏡像 .................................................................................... 148
容器 :Kubernetes、minikube 和 Telepresence ......................................................... 149
介紹 Docker Java Shop 示例程序 ...................................................................... 149
構建 Java 應用程序和容器鏡像 ........................................................................ 150
部署到 Kubernetes 平臺 .................................................................................... 152
簡單的冒煙測試 ................................................................................................ 155
構建剩餘的應用程序 ......................................................................................... 155
在 Kubernetes 上部署整個 Java 應用程序 ......................................................... 155
查看部署的應用程序 ......................................................................................... 156
Telepresence :在本地遠程工作 ........................................................................ 157
模式 #4 :環境租賃 ........................................................................................... 160
FaaS :AWS Lamba 和 SAM Local ........................................................................... 160
安裝 SAM Local ................................................................................................ 161
AWS Lambda 腳手架......................................................................................... 161
測試 AWS Lambda 事件處理 ............................................................................ 165
SAM Local 冒煙測試 ........................................................................................ 168
FaaS: Azure Functions 和 VS Code ........................................................................... 170
安裝 Azure Functions Core Tools ...................................................................... 170
在本地構建和測試函數 ..................................................................................... 173
使用 VS Code 進行本地和遠程測試 ................................................................. 176
總結 .......................................................................................................................... 177
第 9 章 持續集成 :創建構建管道的第一步.....................................178
為什麼要持續集成 .................................................................................................... 178
如何實施 CI .............................................................................................................. 179
中心化與分布式的版本控制系統 .............................................................................. 179
Git 入門..................................................................................................................... 180
核心的 Git CLI 命令 .......................................................................................... 181
Hub :一個 Git 和 GitHub 必備的工具 .............................................................. 183
有效地使用 DVCS .................................................................................................... 185
基於主幹的開發 ................................................................................................ 185
基於功能分支的開發 ......................................................................................... 186
Gitflow .............................................................................................................. 186
沒有萬全之策 :如何選擇分支策略 .................................................................. 187
代碼審查 ................................................................................................................... 189
我們要尋找什麼 ................................................................................................ 190
代碼審查自動化 :PMD、Checkstyle 和 FindBugs ........................................... 191
審查 pull request ................................................................................................ 196
自動化構建 ............................................................................................................... 197
Jenkins ............................................................................................................... 197
發動你的團隊 ........................................................................................................... 199
定期合併代碼 .................................................................................................... 199
“停下來”:管理失敗的構建 ............................................................................. 199
不要在測試上使用 @Ignore .............................................................................. 199
保持快速的構建過程 ......................................................................................... 200
平臺(基礎設施即代碼)的 CI ................................................................................ 200
總結 .......................................................................................................................... 201
第 10 章 通過管道進行部署和發佈................................................202
介紹 Extended Java Shop 應用程序 .......................................................................... 202
分離部署和發佈 ........................................................................................................ 204
部署應用程序 ........................................................................................................... 205
創建一個容器鏡像 ............................................................................................ 206
部署機制 ........................................................................................................... 209
一切都開始於(並且結束于)健康檢查 ........................................................... 218
部署策略 ........................................................................................................... 222
使用非託管的集群 ............................................................................................ 232
更改數據庫........................................................................................................ 236
發佈功能 ................................................................................................................... 240
功能開關 ........................................................................................................... 240
語義版本控制 .................................................................................................... 243
API 的向後兼容性和版本 .................................................................................. 244
多階段升級........................................................................................................ 249
管理配置和敏感信息 ................................................................................................ 250
“打包式”配置 .................................................................................................. 250
外部配置 ........................................................................................................... 251
處理敏感信息 .................................................................................................... 252
總結 .......................................................................................................................... 253
第 11 章 功能性測試 :正確和接受度.............................................254
為什麼要測試軟件 .................................................................................................... 254
測試什麼?敏捷測試象限介紹 ................................................................................. 254
持續測試 ................................................................................................................... 256
構建正確的反饋循環 ......................................................................................... 256
無盡的海龜 ............................................................................................................... 257
人為交易 ................................................................................................................... 258
端到端測試 ............................................................................................................... 259
驗收測試 ................................................................................................................... 261
行為驅動開發 .................................................................................................... 261
stub 或者虛擬化第三方服務.............................................................................. 265
將所有這些整合在一起 ..................................................................................... 265
消費者驅動的合約 .................................................................................................... 265
RESTful API 合約 ............................................................................................. 267
消息合約 ........................................................................................................... 269
組件測試 ................................................................................................................... 271
嵌入式數據存儲 ................................................................................................ 271
內存消息隊列 .................................................................................................... 272
測試替代 ........................................................................................................... 273
創建內部資源或接口 ......................................................................................... 274
進程內和進程外 ................................................................................................ 275
集成測試 ................................................................................................................... 277
驗證外部交互 .................................................................................................... 278
測試容錯性........................................................................................................ 278
單元測試 ................................................................................................................... 279
交互型單元測試 ................................................................................................ 280
獨立型單元測試 ................................................................................................ 281
處理不可預知的測試 ................................................................................................ 282
數據 ................................................................................................................... 282
還未準備好的資源 ............................................................................................ 283
不確定性事件 .................................................................................................... 283
如果你什麼都做不了 ......................................................................................... 284
自上而下的測試和自下而上的測試 .......................................................................... 284
自上而下的測試 ................................................................................................ 285
自下而上的測試 ................................................................................................ 286
將所有內容都融入構建管道 ..................................................................................... 287
多少測試才夠 ........................................................................................................... 288
總結 .......................................................................................................................... 289
第 12 章 系統質量屬性測試 :驗證非功能性需求. .............................291
為什麼要測試非功能性需求 ..................................................................................... 291
代碼質量 ................................................................................................................... 292
架構質量 ................................................................................................................... 292
ArchUnit :架構方面的單元測試 ...................................................................... 292
使用 JDepend 生成設計質量指標 ...................................................................... 295
性能和壓力測試 ........................................................................................................ 297
使用 Apache Benchmark 進行基本的性能測試 ................................................. 298
使用 Gatling 進行壓力測試 ............................................................................... 299
安全、漏洞和威脅 .................................................................................................... 305
代碼級別的安全驗證 ......................................................................................... 306
依賴項驗證........................................................................................................ 311
與部署平臺相關的安全問題 ............................................................................. 315
後續步驟 :威脅建模 ......................................................................................... 318
混亂測試 ................................................................................................................... 321
在生產環境中製造混亂(引入猴子) ................................................................ 322
在預發佈環境中造成混亂 ................................................................................. 324
需要多少非功能性測試才夠 ..................................................................................... 325
總結 .......................................................................................................................... 326
第 13 章 可觀察性 :監控、日誌和跟蹤..........................................327
可觀察性和持續交付 ................................................................................................ 327
為什麼要觀察應用程序 ..................................................................................... 327
我們希望監控 :應用程序、網絡和機器 ..............

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 621
無庫存,下單後進貨
(採購期約45個工作天)

暢銷榜

客服中心

收藏

會員專區