Cloud Native Spring in Action
With Spring Boot and Kubernetes
Thomas Vitale
  • MEAP began August 2020
  • Publication in Summer 2021 (estimated)
  • ISBN 9781617298424
  • 475 pages (estimated)
  • printed in black & white
To really benefit from the reliability and scalability you get with cloud platforms, your applications need to be designed for that environment. Cloud Native Spring in Action is a practical guide for planning, designing, and building your first cloud native apps using the powerful, industry-standard Spring framework. You'll follow a detailed and complete cloud native system from first concept right through to production and deployment, learning best practices, design patterns, and little-known tips and tricks for pain-free cloud native development.

About the Technology

Modern applications need scalability, resilience, reliability, and zero-downtime. For most large systems, that means you'll take advantage of cloud-based tools and services. For Java developers, Spring helps effortlessly build cloud native, production-ready applications. Combined with Kubernetes, the Spring ecosystem offers numerous built-in features to help out developers migrating or building new cloud native projects efficiently.

About the book

Cloud Native Spring in Action teaches you effective Spring and Kubernetes cloud development techniques that you can immediately apply to enterprise-grade applications. It takes you step by step from your first idea through to production, showing how cloud native development can add business value at every stage of the software development lifecycle. As you develop an online bookshop, you'll learn how to build and test a cloud native app with Spring, containerize it with Docker, and deploy it to the public cloud with Kubernetes. Including coverage of security, continuous delivery, and configuration, this hands-on guide is the perfect primer for navigating the increasingly complex cloud landscape.
Table of Contents detailed table of contents

Part 1: Cloud Native

1 Introduction to Cloud Native

1.1 What is cloud native?

1.1.1 The Three P’s of Cloud Native

1.2 The cloud and the cloud computing model

1.2.1 Infrastructure as a Service

1.2.2 Container as a Service

1.2.3 Platform as a Service

1.2.4 Function as a Service

1.2.5 Software as a Service

1.3 Properties of cloud native applications

1.3.1 Scalability

1.3.2 Loose coupling

1.3.3 Resilience

1.3.4 Observability

1.3.5 Manageability

1.4 Culture and practices supporting cloud native

1.4.1 Automation

1.4.2 Continuous delivery

1.4.3 DevOps

1.5 Is the cloud your best option?

1.5.1 Speed

1.5.2 Resilience

1.5.3 Scale

1.5.4 Cost

1.6 Cloud native topologies

1.6.1 Containers

1.6.2 Orchestration

1.6.3 Serverless

1.7 Architectures for cloud native applications

1.7.1 From multi-tiered to microservice architectures and beyond

1.7.2 Service-based architecture for cloud native applications

1.8 Summary

2 Cloud Native Foundations: Patterns and Technologies

2.1 Cloud native development principles: Twelve Factors and more

2.1.1 One codebase, one application

2.1.2 Dependency management

2.1.3 Configuration, credentials, and code

2.1.4 Backing services

2.1.5 Design, build, release, run

2.1.6 Stateless processes

2.1.7 Port binding

2.1.8 Concurrency

2.1.9 Disposability

2.1.10 Environment parity

2.1.11 Logs

2.1.12 Administrative processes

2.1.13 API first

2.1.14 Telemetry

2.1.15 Authentication and authorization

2.2 Building cloud native applications with Spring

2.2.1 Overview of the Spring landscape

2.2.2 Building a Spring Boot application

2.3 Containerizing applications with Docker

2.3.1 Introducing Docker: images and containers

2.3.2 Running a Spring application as a Docker container

2.4 Managing containers with Kubernetes

2.4.1 Introducing Kubernetes: deployments, pods, and services

2.4.2 Running a Spring application on Kubernetes

2.5 Polar Bookshop - A Cloud Native Application

2.5.1 Understanding the requirements of the system

2.5.2 Exploring patterns and technologies used in the project

2.6 Summary

3 Getting Started with Cloud Native Development

3.1 Codebase and dependency management

3.1.1 One codebase, one application

3.1.2 Explicit dependencies declaration with Gradle and Maven

3.2 Working with embedded web servers

3.2.1 Executable jars and embedded servers: ready for the cloud

3.2.2 Request/response for synchronous communication

3.2.3 Configuring embedded Tomcat

3.3 Building a RESTful application with Spring MVC

3.3.1 Business logic: entities and use cases

3.3.2 Implementing a REST API with Spring MVC

3.3.3 Data validation and error handling

3.3.4 Evolving APIs for future requirements

3.4 Testing a RESTful application with Spring

3.4.1 Unit tests with JUnit 5

3.4.2 Integration tests with @SpringBootTest

3.4.3 Integration tests with @WebMvcTest

3.4.4 Integration tests with @JsonTest

3.5 Continuous integration pipelines with GitHub Actions

3.5.1 GitHub Actions: automating builds and tests

3.6 Summary

Part 2: Fundamentals

4 Externalized Configuration Management

4.1 Configuration in Spring: properties and profiles

4.1.1 Properties: Key/value pairs for configuration

4.1.2 Profiles: Configuration groups and when to use them in the cloud

4.2 Externalized configuration: one build, multiple configurations

4.2.1 Configuring an application through command-line arguments

4.2.2 Configuring an application through JVM system properties

4.2.3 Configuring an application through environment variables

4.3 Centralized configuration management with Spring Cloud Config Server

4.3.1 Using Git to store your configuration data

4.3.2 Setting up a configuration server

4.4 Using a configuration server with Spring Cloud Config Client

4.4.1 Setting up a configuration client

4.4.2 Refreshing configuration at runtime

4.5 Summary

5 Persisting and Managing Data in the Cloud

6 Dockerizing Spring Boot

7 Kubernetes Fundamentals for Spring Boot

Part 3: Advanced

8 Service Discovery, Load Balancing, and Scalability

9 API Gateway and Resilience

10 Event-driven Applications

11 Advanced Configuration and Confidentiality

12 Authentication and Authorization

Part 4: Production

13 Logging and Tracing

14 Monitoring and Telemetry

15 Deployment in Production with Kubernetes

16 From Spring Cloud to Kubernetes

17 What’s Next

Appendixes

Appendix A: Setting up your development environment

What's inside

  • Cloud native best practices and design patterns
  • Build, test and configure cloud native apps with Spring Boot and Spring Cloud
  • Use Docker to containerize Spring applications
  • Deploy, monitor, and operate with Kubernetes
  • Manage a cloud native software lifecycle

About the reader

For Java backend developers.

About the author

Thomas Vitale has an MSc in computer engineering specializing in software. He is a Red Hat Certified Enterprise Application Developer and Pivotal Certified Spring Professional. Thomas has been building Java applications for more than 5 years, using Spring and Java EE/Jakarta EE. He is currently a senior software engineer at Systematic, where he designs and develops enterprise software solutions in the healthcare domain. Thomas has led the development of security and data privacy features while ensuring performance, resiliency, and stability. He has been working on migrating traditional applications to cloud native, defining guidelines for building resilient and scalable apps.

placing your order...

Don't refresh or navigate away from the page.
Manning Early Access Program (MEAP) Read chapters as they are written, get the finished eBook as soon as it’s ready, and receive the pBook long before it's in bookstores.
print book $59.99 pBook + eBook + liveBook
Additional shipping charges may apply
Cloud Native Spring in Action (print book) added to cart
continue shopping
go to cart

eBook $47.99 3 formats + liveBook
Cloud Native Spring in Action (eBook) added to cart
continue shopping
go to cart

Prices displayed in rupees will be charged in USD when you check out.

FREE domestic shipping on three or more pBooks