MicroServices or Microservice Architecture is a distinct method of developing and designing software systems. The concept of a microservice originally crept into the software development community’s consciousness around 2014 and was a direct response to many of the challenges faced with old monlithic architecture.In this post we will focus on the crave of microservices.
A microservice is a small, loosely coupled distributed service .Microservices allows you to take large application and decompose or break into easliy managebale small components with narrowly defined responsiblities.The key point to embrace here is decomposing and unbundling the functionality.
Before exploring the adavtages of microservices lets point out the hardship with monlithic applications.
Application is too large to understand the complexity and make code changes fast and correctly.sometimes it becomes hard to manage the code.
Growing with complexity application becomes heavy and slows down start-up time.
For small change in any corner of the application , the whole application needs to be built and deployed.
Applications need extensive manual testing to ensure the impact of changes.
Any Bugs found in one module can bring the whole application down.
Difficult to achieve scalability and resiliency.
Application is broken into smaller peices (Services) which is easy for developers to code and maintain.
Services are concerned ,lightwieght and indepedently deployable.
Services are reusable across platforms as it runs independently and communicates using lightweight mechanisms.
Fast delivery of features or change request.
Well adherable to cloud enviornments which explores increased scalability and avaliablity.
Improves fault isolation i.e larger applications can remain largely unaffected by the failure of a single module
As it becomes granular the headache comes for configuring the services and monitoring those.
Tracking down the service failure is painstaking job.
Needs a greater effort for end to end testing as it needs all the depdedent services to be up and running.
1. Spring Netflix Zuul
2. Spring Cloud Netflix Eureka
3. Spring Cloud Config