Microservices is the "new kid" on the block; a new paradigm that seeks to replace monolithic enterprise applications with a suite of small services that use lightweight mechanism like REST to communicate with each other. These services are built around business capabilities and independently deployable by fully automated deployment machinery.html
The crux of microservices can be epitomized by this illustration as defined byMartin Fowler.git
There are couple of frameworks available in different software ecosystems that make it easy to create distributed applications using microservices architecture.github
The reference architecture developed by us builds on the Spring Cloud ecosystem.web
There are number of components available within the Spring Cloud and Netflix OSS ecosystem that solve common problems for distributed applications (e.g. configuration management, service discovery, circuit breakers, intelligent routing etc).spring
The application consists of 8 different services that are available in Synerzip GitHub repository.api
All the different services lend themselves to the following target architecture.app
While there are existing samples available for using the different Spring cloud/Netflix OSS components, we did not find anything that merged all of them together to provide an enterprise architecture. Additionally the documentation is sporadic and widely distributed so it becomes hard to understand how the components interact with each other.ide
This reference architecture can be used as a starting point to understand the Microservices paradigm and then expand to scale to your architecture needs.spring-boot
The thought process for the reference architecture revolved around 2 conceptsui
When you are ready to build your application with this reference architecture, keep the following things in mind