What are Microservices or Microservices architecture and Why is it required
In this tutorial we are going to learn about Microservices and its implementation in detail.
Microservices - also known as the microservice architecture - is an architectural style that structures an application as a collection of services that are
• Highly maintainable and testable
• Loosely coupled
• Independently deployable
• Organized around business capabilities
• Owned by a small team
The microservice architecture enables the rapid, frequent and reliable delivery of large, complex applications. It also enables an organization to evolve its technology stack.
Microservices architecture helps in structuring the application as a set of loosely coupled, collaborating services. This approach corresponds to the Y-axis of the Scale Cube. Each service is:
- Highly maintainable and testable - enables rapid and frequent development and deployment.
- Loosely coupled with other services - enables a team to work independently the majority of time on their service(s) without being impacted by changes to other services and without affecting other services.
- Independently deployable - enables a team to deploy their service without having to coordinate with other teams.
- Capable of being developed by a small team - essential for high productivity by avoiding the high communication head of large teams.
Services communicate using either synchronous protocols such as HTTP/REST or asynchronous protocols such as AMQP. Services can be developed and deployed independently of one another. Each service has its own database in order to be decoupled from other services. Data consistency between services is maintained using the Saga pattern.
- Spring cloud Netflix Eureka Discovery Service
- Eureka Discovery Service as a Eureka Server in Spring Boot
- Eureka Discovery Service as a Eureka Client in Spring Boot
- Zuul API Gateway
- Spring Cloud API Gateway
- Create a Spring Cloud API Gateway in the Spring Boot
- Scale Up a Microservice into multiple instances to check Load Balancer