Chapter 1. What is Spring Boot

Spring Boot lets you create stand-alone Spring-based applications. See Additional Resources for a list of documents about Spring Boot.

The Spring Boot runtime gives you the advantages and convenience of the OpenShift platform:

  • rolling updates
  • service discovery
  • canary deployments
  • ways to implement common microservice patterns: externalized configuration, health check, circuit breaker, and failover

1.1. Spring Boot tested and verified version

The Spring Boot runtime version 1.5.16.RELEASE is tested and verified to run with the Embedded Apache Tomcat Container on OpenShift. When used with Spring Boot, this embedded container, as well as other components such as the Java container image, are part of a Red Hat subscription.

For a complete list of Spring Boot components provided as part of this release, see the Release Notes.

1.2. Spring Boot features and frameworks summary

This guide covers the design of modern applications using Spring Boot. These concepts support developing Web or Websocket applications using either a HTTP connector or non-blocking HTTP connector. The applications can be packaged and deployed without modification or updated to use cloud native features on OpenShift.

The features in the table below are available as a collection of missions which run on OpenShift. Some features are native to Kubernetes, others are available from Spring Cloud Kubernetes. Features such as Actuator are available directly in Spring Boot.

Table 1.1. Features and Frameworks Summary

FeatureProblem AddressedCloud NativeFramework

Circuit Breaker

Switches between services and continues to process incoming requests without interruption in case of service failure.

Yes

Spring Cloud Netflix - Hystrix

Health Check

Checks readiness and liveness of the service. Service restarts automatically if probing fails.

Yes

Spring Boot Actuator

Service Discovery

Discovers Service/Endpoint deployed on OpenShift and exposed behind a service or route using the service name matching a DNS entry.

Yes - using Kubernetes API

Spring Cloud Kubernetes - DiscoveryClient

Server Side Load Balancing

Handles load increases by deploying multiple service instances, and by transparently distributing the load across them.

Yes - Using internal Kubernetes Load Balancer

-

Client Side Load Balancing

Transparently handle load balancing on the client for better control and load distribution across multiple service instances.

No

Spring Cloud Kubernetes - Ribbon

Externalize Parameters

Makes the application independent of the environment where it runs.

Yes - Kubernetes ConfigMap or Secret

Spring Cloud Kubernetes - ConfigMap