• JAVA持续交付
21年品牌 40万+商家 超1.5亿件商品

JAVA持续交付

①一般下午5点前订单,当日发货,开发票联系客服②教材,学习,考试类书默认有笔记(或做过)③其他类书一般无笔记,提前与客服沟通好再下单,否则本店不承担责任)④部分图书籍采用标准图片,可能存在不同印次不同封面,内容一致⑤出版时间过长的书都可能有自然发黄现象。

89.25 7.5折 119 九品

仅1件

天津宝坻
认证卖家担保交易快速发货售后保障

作者(美)丹尼尔·布莱恩特(Daniel Bryant),(英)亚布拉罕·马林-佩雷斯(Abraham Marin-Perez)

出版社电子工业出版社

ISBN9787121374425

出版时间2019-11

装帧平装

开本16开

定价119元

货号1210184815816065040

上书时间2024-11-13

休闲图书吧

三年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:九品
商品描述
目录
章持续交付:为什么需要持续交付,什么是持续交付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

“自上而下”构建API29

良好的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/CD42

云平台43

深入云计算43

云计算面临的挑战45

云计算的好处46

云计算中的持续交付47

平台即服务47

简单了解PaaS的原理48

PaaS平台面临的挑战48

PaaS的好处50

CI/CD和PaaS50

容器(Docker)50

容器平台组件51

容器面临的挑战52

容器的好处53

持续交付容器53

Kubernetes53

Kubernetes的核心概念54

Kubernetes面临的挑战54

Kubernetes的好处55

Kubernetes的持续交付56

函数即服务/无服务器函数56

FaaS的概念57

FaaS面临的挑战57

FaaS的好处58

CI/CD和FaaS59

使用基础设施即代码59

总结60

第5章构建Java应用程序61

分解构建过程61

自动化构建过程62

构建依赖63

外部依赖66

多模块项目67

使用多代码库还是单代码库67

插件68

发布和公开构件69

Java构建工具概述69

Ant69

Maven72

Gradle77

Bazel、Pants和Buck80

其他JVM构建工具:SBT和Leiningen82

Make82

如何选择一个构建工具83

总结84

第6章其他构建工具和技巧86

Linux、Bash和基本的CLI命令86

用户、权限和组86

使用文件系统90

查看和编辑文本92

将所有东西连在一起:重定向、管道和过滤器93

搜索和操作文本:grep、awk和sed94

诊断工具:top、ps、netstat和iostat95

HTTP调用和JSON操作96

curl96

HTTPie100

jq104

编写基础脚本105

xargs105

管道和过滤器105

循环106

条件106

总结107

第7章打包应用程序108

构建一个JAR文件:循序渐进108

构建一个可执行的胖JAR文件112

MavenShade插件113

构建SpringBootUberJAR文件116

瘦JAR文件―为什么我们决定不使用胖JAR117

构建WAR文件118

在云平台上打包120

将部署比作烹饪:烘焙式部署还是煎炸式部署120

构建RPM和DEBOS包121

其他构建OS包的工具(支持Windows)124

使用Packer创建可在多个云平台部署的机器镜像126

创建机器镜像的其他工具129

构建容器129

创建Docker容器镜像130

使用fabric8制作Docker镜像131

打包FaaSJava应用程序132

总结135

第8章在本地环境中工作(就像在生产环境中一样)136

本地开发面临的挑战136

mock、stub和服务虚拟化137

模式#1:profile、mock和stub137

使用Mockito进行mock138

模式#2:服务虚拟化和API仿真140

使用Hoverfly虚拟化服务141

虚拟机:Vagrant和Packer145

安装Vagrant145

创建一个Vagrantfile145

模式#3:生产环境镜像148

容器:Kubernetes、minikube和Telepresence149

介绍DockerJavaShop示例程序149

构建Java应用程序和容器镜像150

部署到Kubernetes平台152

简单的冒烟测试155

构建剩余的应用程序155

在Kubernetes上部署整个Java应用程序155

查看部署的应用程序156

Telepresence:在本地远程工作157

模式#4:环境租赁160

FaaS:AWSLamba和SAMLocal160

安装SAMLocal161

AWSLambda脚手架161

测试AWSLambda事件处理165

SAMLocal冒烟测试168

FaaS:AzureFunctions和VSCode170

安装AzureFunctionsCoreTools170

在本地构建和测试函数173

使用VSCode进行本地和远程测试176

总结177

第9章持续集成:创建构建管道的步178

为什么要持续集成178

如何实施CI179

中心化与分布式的版本控制系统179

Git入门180

核心的GitCLI命令181

Hub:一个Git和GitHub必备的工具183

有效地使用DVCS185

基于主干的开发185

基于功能分支的开发186

Gitflow186

没有万全之策:如何选择分支策略187

代码审查189

我们要寻找什么190

代码审查自动化:PMD、Checkstyle和FindBugs191

审查pullrequest196

自动化构建197

Jenkins197

发动你的团队199

定期合并代码199

“停下来”:管理失败的构建199

不要在测试上使用@Ignore199

保持快速的构建过程200

平台(基础设施即代码)的CI200

总结201

0章通过管道进行部署和发布202

介绍ExtendedJavaShop应用程序202

分离部署和发布204

部署应用程序205

创建一个容器镜像206

部署机制209

一切都开始于(并且结束于)健康检查218

部署策略222

使用非托管的集群232

更改数据库236

发布功能240

功能开关240

语义版本控制243

API的向后兼容性和版本244

多阶段升级249

管理配置和敏感信息250

“打包式”配置250

外部配置251

处理敏感信息252

总结253

1章功能性测试:正确和接受度254

为什么要测试软件254

测试什么?敏捷测试象限介绍254

持续测试256

构建正确的反馈循环256

无尽的海龟257

人为交易258

端到端测试259

验收测试261

行为驱动开发261

stub或者虚拟化第三方服务265

将所有这些整合在一起265

消费者驱动的合约265

RESTfulAPI合约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

2章系统质量属性测试:验证非功能性需求291

为什么要测试非功能性需求291

代码质量292

架构质量292

ArchUnit:架构方面的单元测试292

使用JDepend生成设计质量指标295

性能和压力测试297

使用ApacheBenchmark进行基本的性能测试298

使用Gatling进行压力测试299

安全、漏洞和威胁305

代码级别的安全验证306

依赖项验证311

与部署平台相关的安全问题315

后续步骤:威胁建模318

混乱测试321

在生产环境中制造混乱(引入猴子)322

在预发布环境中造成混乱324

需要多少非功能性测试才够325

总结326

3章可观察性:监控、日志和跟踪327

可观察性和持续交付327

为什么要观察应用程序327

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

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

报警330

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

指标332

指标的类型333

DropwizardMetrics333

SpringBootActuator335

Micrometer336

使用指标的最佳实践337

日志337

日志的形式337

SLF4J339

Log4j2340

日志的最佳实践341

请求跟踪342

trace、span和baggage342

Java跟踪工具:OpenZipkin、SpringSleuth和OpenCensus343

分布式跟踪的推荐实践344

异常跟踪344

Airbrake346

系统监控工具347

collectd347

rsyslog347

Sensu348

收集和存储348

Prometheus349

Elastic-Logstash-Kibana349

可视化350

业务可视化350

运维可视化351

开发可视化353

总结354

4章迁移到持续交付355

持续交付能力355

选择你要迁移的项目356

情景感知357

Cynefin框架和持续交付358

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

开展持续交付359

测量持续交付360

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

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

其他的指导和提示365

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

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

总结367

5章持续交付和持续改进369

从现在开始369

建立扎实的技术基础369

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

增加软件的共享责任371

促进快速反馈和实验371

在组织中开展持续交付372

持续改进372

总结373

内容摘要
本书完整介绍了Java软件开发的整个生命周期,还结合大量的成功实践经验,介绍了每个阶段可能会使用到的工具和技能。在基础设施已经极大完善的今天,本书还与时俱进地介绍了如何在Docker、Kubernetes、Cloud、FaaS等新兴环境下进行持续集成和持续交付。

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP