Getting started with Spring Cloud

Spring Cloud aims to provide solutions to some of the commonly encountered patterns when building systems on the Cloud:

  • Configuration management: As we discussed in the What is the Twelve-Factor App section, managing configuration is an important part of developing cloud-native applications. Spring Cloud provides a centralized configuration management solution for microservices—Spring Cloud Config.
  • Service discovery: Service discovery promotes loose coupling between services. Spring Cloud provides integration with popular service discovery options, such as Eureka, ZooKeeper, and Consul.
  • Circuit breakers: Cloud-native applications must be fault-tolerant. They should be able to handle the failure of backing services gracefully. Circuit breakers play a key role in providing the default minimum service in case of failures. Spring Cloud provides integration with the Netflix Hystrix fault tolerance library.
  • API Gateway: An API Gateway provides centralized aggregation, routing, and caching services. Spring Cloud provides integration with the API Gateway library, Netflix Zuul.

It is important to understand that Spring Cloud is not a single project. It is a group of subprojects aimed at solving the problems associated with applications that are deployed on the Cloud.

Some important Spring Cloud subprojects are as follows:

  • Spring Cloud Netflix: Netflix is one of the early adopters of the microservice architecture. A number of internal Netflix projects were open sourced under the umbrella of Spring Cloud Netflix. Examples include Eureka, Hystrix, and Zuul.
  • Spring Cloud Config: Enables centralized external configuration across different microservices across different environments.
  • Spring Cloud Bus: Makes it easier to build the integration of microservices with a lightweight message broker.
  • Spring Cloud Sleuth: Along with Zipkin, this provides distributed tracing solutions.
  • Spring Cloud Data Flow: Provides capabilities for building orchestration around microservice applications. Provides a DSL, GUI, and REST API.
  • Spring Cloud Stream: Provides a simple declarative framework to integrate Spring-based (and Spring Boot-based) applications with message brokers such as Apache Kafka or RabbitMQ.

A few things are common to all projects under the Spring Cloud umbrella:

  • They solve some of the common problems with developing applications on the Cloud.
  • They provide great integration with Spring Boot.
  • They are typically configured with simple annotations.
  • They make extensive use of auto-configuration.

Let's start exploring some of the Spring Cloud projects in depth.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset