本书讨论了如何利用现代化的技术开发新一代的企业级Java应用。传统的单体应用已经难以适应云环境下的开发和部署,因此,作者首先介绍了在云环境下需要什么样的Java应用架构和开发实践。作者基于Quarkus、Spring Boot和Vert.x技术搭建了一个典型的云原生分布式应用,并将其容器化和部署至Kubernetes。Serverless是一种新兴的应用开发和部署模式,能够最大化地节省成本,作者以Knative平台为例,讲解了如何将我们开发的云原生应用部署至Serverless平台。在应用现代化的过程中,我们不仅要面临新应用的开发,更要处理已有的遗留应用,作者花费大量的篇幅介绍了对传统应用进行现代化改造的行动方案,其中涉及大量最佳实践,以及实用的技术和工具。
		
	
Markus Eisele是Red Hat在EMEA的开发者项目的负责人。他与不同供应商的Java EE服务器打交道已经超过14年。他是一名Java Champion,前Java EE的专家组成员,也是德国首屈一指的Java会议JavaLand的创始人。Natale Vinto是一名软件工程师,在IT和ICT技术方面有超过10年的专业经验,在电信和Linux操作系统方面有深厚的背景知识。如今,Natale是红帽OpenShift的开发者倡导者,帮助社区中人和客户在Kubernetes和云原生战略上获得成功。
张卫滨,天津大学 2007 届研究生,有着十多年的企业级软件研发和设计经验,热爱探索和研究新技术,目前主要关注云原生、微服务、自动化测试等领域。翻译出版了十多本流行的技术图书,如《Spring 实战》(第 3 版到第 6 版)、《Spring Data 实战》、《RxJava反应式编程》等。业余时间担任技术社区 InfoQ 的编辑,撰写、翻译了数百篇技术文章和新闻。
序言
前言
第1章 重新回顾企业级开发 
什么是公有云与私有云?为何要使用云 
“云原生”的含义 
Kubernetes原生的开发 
面向开发者的容器和编排 
容器原生的运行时 
Kubernetes的不同风格 
管理开发的复杂性 
DevOps与敏捷 
小结 
第2章 云原生Java之路 
云原生工作坊 
架构 
使用Quarkus创建Inventory微服务 
创建Quarkus Maven项目 
创建领域模型 
创建RESTful服务 
在开发模式下运行应用 
使用Spring Boot创建Catalog微服务 
创建Maven项目 
创建领域模型 
创建数据资源库 
创建RESTful服务 
使用Vert.x创建Gateway服务 
创建Vert.x Maven项目 
创建API Gateway 
使用Node.js和AngularJS创建前端 
运行前端 
小结 
第3章 轻装前行 
是三层还是分布式系统 
技术更新、现代化和转型 
6R 
分解并容器化 
将Kubernetes作为新的应用服务器 
定义目标平台 
强制迁移的步骤和工具 
创建应用组合 
为大事做准备 
小结 
第4章 基于Kubernetes的软件开发平台 
开发人员与Kubernetes 
Kubernetes能够做什么 
Kubernetes不能做什么 
基础设施即代码 
容器镜像 
Dockerfile 
构建容器镜像 
运行容器 
镜像仓库 
部署至Kubernetes 
Pod 
Service 
Deployment 
Kubernetes与Java 
Jib 
JKube 
小结 
第5章 超越原样转移:处理遗留系统 
管理遗留系统 
评估要迁移的应用 
评估要迁移的功能 
迁移方式 
保护遗留应用(Replatform) 
构建新的应用(Refactor) 
挑战 
避免双重写入 
长时间运行的事务 
快速移除旧代码 
集成 
小结 
第6章 构建Kubernetes原生的应用 
寻找可扩展性和复杂性之间的平衡点 
现代化架构的功能性需求 
API驱动 
服务发现 
安全与授权 
监控 
跟踪 
日志 
CI/CD 
调试微服务 
端口转发 
Quarkus远程开发模式 
Telepresence 
小结 
第7章 未来之路:Serverless 
什么是Serverless 
架构的演进 
使用场景:数据、AI与机器学习 
使用场景:边缘计算和IoT 
Knative:适用于Kubernetes的Serverless 
事件驱动的Serverless架构 
面向Java应用的函数即服务 
Java应用的函数部署 
Boson Function CLI 
小结 
索引