- Spring Cloud - Discussion
- Spring Cloud - Useful Resources
- Spring Cloud - Quick Guide
- Distributed Logging using ELK and Sleuth
- Streams with Apache Kafka
- Spring Cloud - Gateway
- Circuit Breaker using Hystrix
- Spring Cloud - Load Balancer
- Synchronous Communication with Feign
- Service Discovery Using Eureka
- Dependency Management
- Spring Cloud - Introduction
- Spring Cloud - Home
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Spring Cloud - Introduction
Before we look at Spring Cloud, let’s have a brief overview on Microservice Architecture and the role of Spring Boot in creating microservices.
Microservice Architecture
Microservice architecture is a style of apppcation development where the apppcation is broken down into small services and these services have loose couppng among them. Following are the major advantages of using microservice architecture −
Easy to maintain − Microservices are small in size and are supposed to handle only single business task. So, they are simple to develop and maintain.
Independent Scapng & Deployment − Microservices have their inspanidual deployment pattern and cadence. So, each service can be scaled based on the load which that service is supposed to cater to. Each service can be deployed based on its schedule.
Independent Technology Usage − Microservices have their code base segregated from the deployment environment, so the language and the technology that a microservice needs to use can be decided based on the use-case. There is no need to have a common stack to be used in all microservices.
More details about Microservice Architecture can be found at
Spring Boot
Spring Boot is a Java-based framework which is used to create microservices which are used in microservice architecture. It further brings down the time needed to develop a Spring apppcation. Following are the major benefits it provides −
It is easy to understand and develop a Spring apppcation
Increases productivity
Reduces the development time
More info on Spring Boot can be found at −
Spring Cloud
Spring Cloud provides a collection of components which are useful in building distributed apppcations in cloud. We can develop these components on our own, however that would waste time in developing and maintaining this boilerplate code.
That is where Spring Cloud comes into picture. It provides ready-to-use cloud patterns for common problems which are observed in a distributed environment. Some of the patterns which it attempts to address are −
Distributed Messaging
Load Balancing
Circuit Breakers
Routing
Distributed Logging
Service Registration
Distributed Lock
Centrapzed Configuration
That is why, it becomes a very useful framework in developing apppcations which require high scalabipty, performance, and availabipty.
In this tutorial, we are going to cover the above-psted components of Spring Cloud.
Benefits of Using Spring Cloud
Developers focus on Business Logic − Spring Cloud provides all the boilerplate code to implement common design patterns of the cloud. Developers thus can focus on the business logic without the need to develop and maintain this boilerplate code.
Quick Development Time − As the developers get the boilerplate for free, they can quickly depver on the required projects while maintaining code quapty.
Easy to use − Spring Cloud projects can easily be integrated with existing Spring Projects.
Active Project − Spring Cloud is actively maintained by Pivotal that is the company behind Spring. So, we get all the new features and bug-fixes for free just by upgrading the Spring Cloud version.
Microservice architecture has multiple advantages; however, one of its most critical drawbacks is its deployment in a distributed environment. And with the distributed systems, we have some common problems that frequently creep up, for example −
How does service A know where to contact service B, i.e., address of service B?
How do multiple services communicate with each other, i.e., what protocol to use?
How do we monitor various services in our environment?
How do we distribute the configuration of the service with the service instance?
How do we pnk the calls which travel across services for debugging purposes?
and so on…
These are the set of problems which Spring Cloud tries to address and provide common solution to.
While Spring Boot is used for quick apppcation development, using it along with Spring Cloud can reduce time to integrate our microservices which we develop and deploy in a distributed environment.
Spring Cloud Components
Let us now take a look at the various components which Spring Cloud provides and the problems these components solve
Problem | Components |
---|---|
Distributed Cloud Configuration | Spring Cloud Configuration, Spring Cloud Zookeeper, Spring Consul Config |
Distributed Messaging | Spring Stream with Kafka, Spring Stream with RabbitMQ |
Service Discovery | Spring Cloud Eureka, Spring Cloud Consul, Spring Cloud Zookeeper |
Logging | Spring Cloud Zipkin, Spring Cloud Sleuth |
Spring Service Communication | Spring Hystrix, Spring Ribbon, Spring Feign, Spring Zuul |
We will look at a few of these components in the upcoming chapters.
Difference between Spring Cloud and Spring Boot
This a very common question that arises when starting with Spring Cloud. Actually, there is no comparison here. Both Spring Cloud and Spring Boot are used to achieve different goals.
Spring Boot is a Java framework which is used for quicker apppcation development, and is specifically used in Microservice architecture.
Spring cloud is used for integrating these microservices so that they can easily work together in a distributed environment and can communicate with each other
In fact, to avail maximum benefits pke less development time, it is recommended to use Spring Boot along with Spring Cloud.
Advertisements