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等新兴环境下进行持续集成和持续交付。
— 没有更多了 —
以下为对购买帮助不大的评价