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
-----------------------------
Markus is a Java Champion, former Java EE Expert Group member, founder of JavaLand, reputed speaker at Java conferences around the world, and a very well known figure in the Enterprise Java world. With more than 16 years of professional experience in the industry, he designed and developed large Enterprise grade applications for Fortune 500 companies. As an experienced team lead and architect, he helped implement some of the largest integration projects in automotive, finance and insurance companies. More than 12 years of international speaking experience and 5 years in developer advocacy with a strong focus on Java platforms helped him build a large network of professionals and influencers. He is an O'Reilly author and helped with technical reviews of more than 10 books about technologies he cares for. He published more than 100 articles in various IT publications over the last 10 years.
Natale is a Software Engineer with more than 10 years of expertise on IT and ICT technologies and a consolidated background on Telecommunications and Linux operating systems. As a Solution Architect with a Java development background, he spent some years as EMEA Specialist Solution Architect for OpenShift at Red Hat. Today Natale is Developer Advocate for OpenShift at Red Hat, helping people within communities and customers having success with their Kubernetes and Cloud Native strategy.
Author(s): Markus Eisele, Natale Vinto
Edition: 1
Publisher: O'Reilly
Year: 2022
Language: English
Pages: 200
Tags: java jdk jakarta microservices enterprise jee web cloud
Copyright
Table of Contents
From Platform to Ecosystem
Preface
Conventions Used in This Book
Using Code Examples
O’Reilly Online Learning
How to Contact Us
Acknowledgments
Chapter 1. Revisiting Enterprise Development
From Public to Private. Why Clouds?
What “Cloud Native” Means
Kubernetes-Native Development
Containers and Orchestration for Developers
Container-Native Runtime
Kubernetes Flavors
Managing Development Complexity
DevOps and Agility
Summary
Chapter 2. The Path to Cloud Native Java
Cloud Native Workshop
Architecture
Create an Inventory Microservice with Quarkus
Create Quarkus Maven Project
Create a Domain Model
Create a RESTful Service
Run the App in Dev Mode
Create a Catalog Microservice with Spring Boot
Create a Maven Project
Create a Domain Model
Create a Data Repository
Create a RESTful Service
Create a Gateway Service with Vert.x
Create a Vert.x Maven Project
Create an API Gateway
Create a Frontend with Node.js and AngularJS
Run the Frontend
Summary
Chapter 3. Travel Light on Your Pathway
Three-Tier or Distributed System
Technology Updates, Modernization, and Transformation
The 6 Rs
Divide and Containerize
Kubernetes as the New Application Server?
Define Your Target Platform
Mandatory Migration Steps and Tools
Create an Application Portfolio
Prepare for Big Things
Summary
Chapter 4. A Kubernetes-Based Software Development Platform
Developers and Kubernetes
What Kubernetes Does
What Kubernetes Doesn’t Do
Infrastructure as a Code
Container Images
Dockerfile
Building Container Images
Run Containers
Registry
Deploying to Kubernetes
Pod
Service
Deployment
Kubernetes and Java
Jib
JKube
Summary
Chapter 5. Beyond Lift and Shift: Working with Legacy
Managing Legacy
Assessing Applications for Migration
Assessing Functionality for Migration
Migration Approaches
Protecting Legacy (Replatform)
Build Something New (Refactor)
Challenges
Avoiding Dual-Writes
Long-Running Transactions
Removing Old Code Too Quickly
Integration Aspects
Summary
Chapter 6. Building Kubernetes-Native Applications
Find the Right Balance Between Scalability and Complexity
Functional Requirements for Modern Architectures
API-Driven
Discovery
Security and Authorization
Monitoring
Tracing
Logging
CI/CD
Debugging Microservices
Port Forwarding
Quarkus Remote Development Mode
Telepresence
Summary
Chapter 7. Tomorrow’s Solutions: Serverless
What Is Serverless?
Architectural Evolution
Use Cases: Data, AI, and Machine Learning
Use Cases: Edge Computing and IoT
Knative: Serverless for Kubernetes
Event-Driven Serverless Architectures
Function as a Service for Java Applications
Functions Deployment for Java Applications
Boson Function CLI (func)
Summary
Index
About the Authors
Colophon