Modernizing Enterprise Java

Book description

While containers, microservices, and distributed systems dominate discussions in the tech world, the majority of applications in use today still run monolithic architectures that follow traditional development processes. This practical book helps developers examine long-established Java-based models and demonstrates how to bring these monolithic applications successfully into the future.

Relying on their years of experience modernizing applications, authors Markus Eisele and Natale Vinto walk you through the steps necessary to update your organization's Java applications. You'll discover how to dismantle your monolithic application and move to an up-to-date software stack that works across cloud and on-premises installations.

  • Learn cloud native application basics to understand what parts of your organization's Java-based applications and platforms need to migrate and modernize
  • Understand how enterprise Java specifications can help you transition projects and teams
  • Build a cloud native platform that supports effective development without falling into buzzword traps
  • Find a starting point for your migration projects by identifying candidates and staging them through modernization steps
  • Discover how to complement a traditional enterprise Java application with components on top of containers and Kubernetes

Publisher resources

View/Submit Errata

Table of contents

  1. From Platform to Ecosystem
  2. Preface
    1. Conventions Used in This Book
    2. Using Code Examples
    3. O’Reilly Online Learning
    4. How to Contact Us
    5. Acknowledgments
  3. 1. Revisiting Enterprise Development
    1. From Public to Private. Why Clouds?
    2. What “Cloud Native” Means
    3. Kubernetes-Native Development
    4. Containers and Orchestration for Developers
      1. Container-Native Runtime
      2. Kubernetes Flavors
    5. Managing Development Complexity
    6. DevOps and Agility
    7. Summary
  4. 2. The Path to Cloud Native Java
    1. Cloud Native Workshop
    2. Architecture
    3. Create an Inventory Microservice with Quarkus
      1. Create Quarkus Maven Project
      2. Create a Domain Model
      3. Create a RESTful Service
      4. Run the App in Dev Mode
    4. Create a Catalog Microservice with Spring Boot
      1. Create a Maven Project
      2. Create a Domain Model
      3. Create a Data Repository
      4. Create a RESTful Service
    5. Create a Gateway Service with Vert.x
      1. Create a Vert.x Maven Project
      2. Create an API Gateway
    6. Create a Frontend with Node.js and AngularJS
      1. Run the Frontend
    7. Summary
  5. 3. Travel Light on Your Pathway
    1. Three-Tier or Distributed System
      1. Technology Updates, Modernization, and Transformation
      2. The 6 Rs
    2. Divide and Containerize
      1. Kubernetes as the New Application Server?
      2. Define Your Target Platform
    3. Mandatory Migration Steps and Tools
      1. Create an Application Portfolio
    4. Prepare for Big Things
    5. Summary
  6. 4. A Kubernetes-Based Software Development Platform
    1. Developers and Kubernetes
      1. What Kubernetes Does
      2. What Kubernetes Doesn’t Do
      3. Infrastructure as a Code
    2. Container Images
      1. Dockerfile
      2. Building Container Images
      3. Run Containers
      4. Registry
    3. Deploying to Kubernetes
      1. Pod
      2. Service
      3. Deployment
    4. Kubernetes and Java
      1. Jib
      2. JKube
    5. Summary
  7. 5. Beyond Lift and Shift: Working with Legacy
    1. Managing Legacy
      1. Assessing Applications for Migration
      2. Assessing Functionality for Migration
    2. Migration Approaches
      1. Protecting Legacy (Replatform)
      2. Build Something New (Refactor)
    3. Challenges
      1. Avoiding Dual-Writes
      2. Long-Running Transactions
      3. Removing Old Code Too Quickly
    4. Integration Aspects
    5. Summary
  8. 6. Building Kubernetes-Native Applications
    1. Find the Right Balance Between Scalability and Complexity
    2. Functional Requirements for Modern Architectures
      1. API-Driven
      2. Discovery
      3. Security and Authorization
      4. Monitoring
      5. Tracing
      6. Logging
      7. CI/CD
    3. Debugging Microservices
      1. Port Forwarding
      2. Quarkus Remote Development Mode
      3. Telepresence
    4. Summary
  9. 7. Tomorrow’s Solutions: Serverless
    1. What Is Serverless?
      1. Architectural Evolution
    2. Use Cases: Data, AI, and Machine Learning
    3. Use Cases: Edge Computing and IoT
    4. Knative: Serverless for Kubernetes
    5. Event-Driven Serverless Architectures
    6. Function as a Service for Java Applications
      1. Functions Deployment for Java Applications
      2. Boson Function CLI (func)
    7. Summary
  10. Index

Product information

  • Title: Modernizing Enterprise Java
  • Author(s): Markus Eisele, Natale Vinto
  • Release date: October 2021
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 9781098102142