Modernizing Enterprise Java
作者: Markus Eisele and Natale Vinto
语言: 英文
出版年份: 2021
编程语言: Java
下载链接:
书籍均收集自互联网,仅供学习和研究使用,请莫用于商业用途。谢谢合作。

书籍摘要

书籍简介:Modernizing Enterprise Java

书籍定位

《Modernizing Enterprise Java》是一本专注于企业Java应用现代化和云原生转型的实用指南,由Markus Eisele和Natale Vinto编写,2021年10月由O'Reilly Media出版。本书旨在帮助开发者将传统的单体Java应用成功迁移到现代云原生架构,特别针对那些仍在运行传统开发流程和单体架构的组织。作为Red Hat与O'Reilly合作出版的权威指南,本书提供了从技术评估到实际迁移的完整路线图,适合需要将现有Java应用带入云原生未来的开发团队和技术决策者。

核心内容

本书共7个章节,系统性地介绍了企业Java应用现代化的全过程,从基础概念到实际实施,从技术选型到生产部署。

第1章:重新审视企业开发。本章介绍了从公有云到私有云的演进背景,深入探讨了"云原生"的真正含义,解释了Kubernetes原生开发的概念,分析了容器和编排对开发者的意义,包括容器原生运行时、Kubernetes变体选择等关键主题。本章还探讨了开发复杂性的管理策略,以及DevOps和敏捷性在现代软件开发中的角色,为后续章节的技术实践奠定了理论基础,占文本内容的10%。

第2章:通往云原生Java之路。这是本书的核心实践章节,通过一个名为Coolstore的电子商务应用案例,展示了如何将传统单体应用拆分为微服务架构。本章详细演示了使用不同Java框架构建微服务:使用Quarkus构建库存微服务(包括创建Maven项目、定义领域模型、实现RESTful服务、开发模式运行)、使用Spring Boot构建目录微服务、使用Vert.x构建网关服务、使用Node.js和AngularJS构建前端。这一章通过完整的代码示例展示了如何在异构环境中构建协同工作的微服务系统,占文本内容的25%。

第3章:轻装上阵的迁移路径。本章对比了三层架构与分布式系统的差异,深入分析了技术更新、现代化和转型的不同层次。重点介绍了著名的"6R"迁移策略:保留(Retain)、退役(Retire)、重新购买(Repurchase)、重新托管(Rehost)、重新平台化(Replatform)、重构(Refactor)。本章还探讨了Kubernetes作为新应用服务器的可能性,分析了服务发现、配置管理、基本调用、弹性伸缩、日志记录、监控、构建部署管道、弹性与容错、安全性、追踪等关键功能。最后提供了定义目标平台、核心层、客户体验层、集成层和技术栈的具体方法,以及创建应用组合、准备大规模迁移的步骤指南。

第4章:基于Kubernetes的软件开发平台。本章深入探讨了开发者与Kubernetes的关系,详细讲解了Kubernetes的功能和限制,介绍了基础设施即代码的概念。重点讲解了容器镜像的创建和管理:Dockerfile编写、容器镜像构建、容器运行、镜像注册表管理。详细演示了如何部署到Kubernetes:Pod定义、Service配置、Deployment管理。特别关注了Java与Kubernetes的集成,包括Jib和JKube等工具的使用,展示了如何优化Java应用在Kubernetes环境中的运行,占文本内容的20%。

第5章:超越直接迁移:处理遗留系统。本章探讨了如何处理复杂的遗留系统,包括遗留代码的现代化策略、API优先的开发方法、微服务架构中的通信模式、服务网格的应用、事件驱动架构的实现等。重点分析了如何在保持系统运行的同时逐步进行现代化改造,提供了渐进式迁移的策略和工具。

第6章:微服务架构。本章深入探讨了微服务架构中的关键运维任务,包括在Kubernetes环境中的日志记录、监控、调试应用。介绍了可观测性的三个支柱:日志、指标、追踪,并演示了如何在实际应用中实现这些功能。还讨论了微服务架构中的配置管理、服务发现、熔断器模式、限流策略等重要主题。

第7章:无服务器架构。本章分析了Java开发者如何创建遵循无服务器执行模型的现代应用。探讨了函数即服务的概念、无服务器架构的优势和限制、Java在无服务器环境中的优化策略。重点介绍了Quarkus Funqy、Spring Cloud Function等框架,分析了Java开发者今天和明天可能面临的最常见用例和架构模式。

本书的一个显著特点是它采用了"理论+实践"相结合的教学方法。通过Coolstore电子商务应用这个贯穿全书的案例,读者可以直观理解从传统单体应用到现代云原生架构的完整迁移过程。书中包含了大量实际的代码示例和配置示例,特别是第2章和第4章提供了完整的项目代码,读者可以在GitHub仓库中找到所有示例代码。

适用读者

  1. 企业Java开发者和架构师:负责维护和现代化传统Java应用的技术专业人员
  2. 技术团队负责人和CTO:需要规划和执行企业技术现代化战略的技术决策者
  3. DevOps工程师和SRE:负责云原生环境部署和运维的运维人员
  4. 云平台工程师:在云环境中部署和管理Java应用的平台工程师
  5. 技术顾问和解决方案架构师:为企业提供技术现代化建议的咨询专家
  6. 技术转型项目管理者:负责组织技术现代化项目的项目经理
  7. 对云原生Java感兴趣的学习者:希望了解Java在云原生时代发展方向的技术爱好者

阅读建议

学习路径建议:对于企业Java现代化初学者,建议按照章节顺序系统学习,特别关注第1-2章的基础概念和实践操作。有Java开发经验但无云原生经验的读者可以直接从第3章开始,学习迁移策略和平台选择。正在执行现代化项目的团队应重点学习第4-6章的部署和运维内容。

实践环境设置:本书的示例代码可以在GitHub仓库中找到,建议搭建本地开发环境或使用云环境进行实践。需要准备的工具包括:Java 11+开发环境、Maven或Gradle构建工具、Docker容器运行时、Kubernetes集群(可以是Minikube、Kind或云服务提供的Kubernetes)、IDE(如IntelliJ IDEA或VS Code)。

技术栈选择:本书重点介绍了Quarkus、Spring Boot、Vert.x等现代Java框架,以及Kubernetes、Docker等云原生技术。在实际项目中,应根据团队技术栈、应用特性、运维能力等因素选择合适的工具组合。本书提供的是一种参考架构,实际应用时需要根据具体情况进行调整。

迁移策略建议:本书第3章详细讨论了6R迁移策略,这是企业现代化项目的核心决策框架。建议在实际项目中首先进行全面的应用组合分析,评估每个应用的现代化优先级和适合的迁移策略。避免"一刀切"的迁移方案,采用渐进式、风险可控的迁移方法。

生产环境考虑:从开发环境到生产环境的迁移需要考虑更多因素,包括安全性、性能、可靠性、可观测性、成本等。本书第6章提供了生产环境运维的关键指导,但在实际项目中还需要考虑组织特定的合规要求、监控体系、灾难恢复计划等。

版本兼容性:本书基于2021年的技术状态编写,主要技术版本包括:Java 11+、Quarkus 2.x、Spring Boot 2.5+、Kubernetes 1.20+。由于云原生技术发展迅速,实际使用时需要参考各技术的最新版本文档。本书的核心概念和架构模式具有长期价值,但具体实现细节可能需要根据最新技术进行调整。

期待您的支持
捐助本站