Microservices and Related Frameworks
Microservices is a buzzword in technology that everyone is talking about. Before going to understand about microservices, we need to know about monolithic architecture which is a traditional way of building applications through the internet.
Monolithic Architecture is an architecture, which contains all the services and components of an application as a single package. We can simplify this as "Way of maintaining all the services that are offered by an application in a single resource or as a single package". Consider an e-commerce application, which provides different services like user registration, searching for products, payment, and purchase, reviews and feedbacks, support and customer care, etc. Monolithic Architecture maintains all these services as a single package and stores them in the same server and database. So, the developer team should be large in size in order to accompany the changes in the product in any of the services. This forces the developers to use single technology all over to ease the task of development. If the users are growing, they need to scale their servers and databases in a quick period of time and this goes on continuously. This is the architecture which is generally followed by almost every organization before the introduction of microservices.
What are Microservices? "Microservices is a phenomenon of building applications as a collection of multiple independent services which are loosely coupled". It is nothing but decomposing the application into various modules which are independent of each other. The primary advantage of Microservices is that the modules can be independently deployed. The team size of developers is very less (5–10), so that deployment is very fast. There is no need of working with single technology for the entire application as like of monolithic kernel. Various technologies can be used to build the application and it makes developers to comfortably work as their interest. In the same e-commerce example, with the use of microservices, the services can be divided into various groups and it makes the developer teams easy to maintain and deploy. These microservices can communicate with each other synchronously with REST API over HTTP and asynchronously using message brokers like KAFKA, ActiveMQ, etc.
Popular Microservices frameworks: Spring Boot (Best microservices framework in Java) Flask(Popular microservices framework in Python) Dropwizard(Java) Spark framework(Java) Swagger(Java) Jersey(Java) Seneca Js(Popular microservices framework in node.js)