Microservices Reference Implementation

What is Microservices

Microservices is an architectural style that structures an application as a collection of services, communicating through lightweight protocols, 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.


Monolith V/s Microservices

We have a monolithic application which can be a single springboot application with multiple controller classes. Each controller class is responsible for one particular domain or a business capability, like, for example, working with users or working with a product or a search functionality. But all of these controllers are in one single springboot application. And if you make a change to any of these controllers, then you have to rebuild and redeploy the entire application.

If we look at Microservices architecture, then here we have multiple smaller web services rather than one a large monolithic Web service. This Web services are much smaller and each service is responsible for it’s one thing for one particular business capability. One Web service is responsible for working with user resource, like, for example, create and update user details while on the Web service is responsible only to perform the email verification functionality. These Web services can also be implemented in different programming languages and the hosted on different platforms.


Microservices Architecture


  • Eureka Discovery Service
  • Account Management Microservice - Registration, Login, Authentication, User Status
  • Spring Cloud API Gateway as a Load Balancer
  • H2 In-Memory Database
  • Spring Cloud API Gateway - Creating a Custom Filters, Gateway Global Filters
  • Spring Cloud Config Server - Git Backend
  • Spring Cloud Bus
  • Spring Cloud Config - File System Backend
  • Spring Cloud Config - Configuration for Multiple Microservices
  • Spring Boot Actuator
  • Using MySQL Instead of In-Memory Database
  • Encryption and Decryption
  • Microservices Communication
  • Microservices communications - Hystrix Circuit Breaker, Resilience4j - Circuit Breaker, Resilience4j - Retry.
  • Distributed Tracing with Sleuth and Zipkin
  • Aggregaring Log Files with ELK Stack

https://microservices.io/