Java持续交付.pdf Daniel Bryant/Abraham Marin-Perez 张若飞翻译

《Java持续交付》这本书由Daniel Bryant和Abraham Marin-Perez合著,由张若飞翻译,2019年11月由电子工业出版社 出版。这本书详细介绍了Java软件开发的整个生命周期,并且结合了大量的成功实践经验,介绍了每个阶段可能会使用的工具和技能。内容还涉及了在Docker、Kubernetes、Cloud、FaaS等新兴环境下进行持续集成和持续交付的实践方法。无论是经验丰富的Java开发者还是希望接触DevOps的新手,这本书都提供了丰富的经验和知识。

Java持续交付.pdf Daniel Bryant/Abraham Marin-Perez 张若飞翻译

书的目录包括如“持续交付的必要性”、“Java开发的演化”、“设计持续交付的架构”等多个章节,全面覆盖了Java应用开发的各个方面。例如,在讨论Java应用的部署平台、基础设施以及持续交付时,书中详细介绍了从传统基础设施到云平台、容器(如Docker)、Kubernetes和函数即服务(FaaS)等多种平台的特点和适用场景。

这本书是O'Reilly动物系列(中译本)的一部分,定价为119元人民币,页数为404页,ISBN为9787121374425。在O'Reilly Media网站上,这本书也提供了10天的免费试读机会。

  《Java持续交付》目录  · · · · · ·

  第 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

  我们希望监控 :应用程序、网络和机器 ........................................................... 329

  如何观察 :监控、日志和跟踪 .......................................................................... 330

  报警 ................................................................................................................... 330

  面向可观察性的系统设计 ......................................................................................... 332

  指标 .......................................................................................................................... 332

  指标的类型........................................................................................................ 333

  Dropwizard Metrics ........................................................................................... 333

  Spring Boot Actuator ......................................................................................... 335

  Micrometer ........................................................................................................ 336

  使用指标的最佳实践 ......................................................................................... 337

  日志 .......................................................................................................................... 337

  日志的形式........................................................................................................ 337

  SLF4J ................................................................................................................ 339

  Log4j 2 .............................................................................................................. 340

  日志的最佳实践 ................................................................................................ 341

  请求跟踪 ................................................................................................................... 342

  trace、span 和 baggage ...................................................................................... 342

  Java 跟踪工具 :OpenZipkin、Spring Sleuth 和 OpenCensus ............................ 343

  分布式跟踪的推荐实践 ..................................................................................... 344

  异常跟踪 ................................................................................................................... 344

  Airbrake ............................................................................................................ 346

  系统监控工具 ........................................................................................................... 347

  collectd .............................................................................................................. 347

  rsyslog ............................................................................................................... 347

  Sensu ................................................................................................................. 348

  收集和存储 ............................................................................................................... 348

  Prometheus ........................................................................................................ 349

  Elastic-Logstash-Kibana .................................................................................... 349

  可视化 ....................................................................................................................... 350

  业务可视化........................................................................................................ 350

  运维可视化........................................................................................................ 351

  开发可视化........................................................................................................ 353

  总结 .......................................................................................................................... 354

  第 14 章 迁移到持续交付............................................................355

  持续交付能力 ........................................................................................................... 355

  选择你要迁移的项目 ................................................................................................ 356

  情景感知 ................................................................................................................... 357

  Cynefin 框架和持续交付 ................................................................................... 358

  所有模型都是错误的,有些是有用的............................................................... 359

  开展持续交付 ........................................................................................................... 359

  测量持续交付 ........................................................................................................... 360

  从小处开始,尝试、学习、分享,然后重复整个过程 ............................................ 362

  增加推广范围 :领导变革 ......................................................................................... 363

  其他的指导和提示 .................................................................................................... 365

  不良实践和常见的反模式 ................................................................................. 365

  丑陋的架构 :改还是不改 ................................................................................. 365

  总结 .......................................................................................................................... 367

  第 15 章 持续交付和持续改进......................................................369

  从现在开始 ............................................................................................................... 369

  建立扎实的技术基础 ................................................................................................ 369

  持续交付价值(最重要的目标)............................................................................... 370

  增加软件的共享责任 ................................................................................................ 371

  促进快速反馈和实验 ................................................................................................ 371

  在组织中开展持续交付............................................................................................. 372

  持续改进 ................................................................................................................... 372

  总结 .......................................................................................................................... 373


下载地址

Java持续交付.pdf Daniel Bryant/Abraham Marin-Perez 张若飞翻译下载

本站内容仅用于学习和交流,请于下载24小时内删除!

mobi图书网 电子书下载

此书籍由mobi图书网书友分享,如果您喜欢该资源,请支持并购买正版,如有侵权,请联系我们删除!


【电脑端】azw3、mobi、txt等格式推荐使用稻壳阅读器阅读


【手机端】可使用番茄小说等支持mobi、pdf、txt格式的APP


【注意】手机端仅kindle阅读APP支持azw3格式,建议转换格式再用手机浏览。

发现资源盗用,请联系站长V:abacadaba
close
mobi图书网
mobi图书网管理员

上一篇:苏州公积金提取,助您实现梦想
下一篇:罗素传(全2册).mobi 瑞·蒙克 罗素传记

留言评论

暂无留言