The term “Microservice Architecture” has sprung up over the last few years to describe a pattern of splitting application into smaller components for scalability and maintenance benefits and have seen widespread adoption.
The main idea behind this architecture is to break down applications into very small pieces and each piece can be developed , test and deployed independently.
Each module/piece bears single responsibility and it becomes easy to track which piece is malfunctioning and to gets its replacement and
also to scale one piece only if only one piece requires more traffic.
Is it new?
It is not a “new” style of building large enterprise applications.
Many leading IT companies were using it to scale their applications , but no formal name was given. Also, there are other programming paradigms which address this same concept, such as Service Oriented Architecture (SOA).
Is it different than SOA?
Microservices are SOA done correctly.The core difference between SOA and microservices lies in the size and scope.
As the word “micro” suggests, it has to be significantly smaller than what SOA tends to be.
Also,SOA is an architectural pattern in which application components provide services to other components.
On the other hand, in microservices these components are suites of independently deployable services.
Reasons for migrating to microservices:
More availability: All components can be deployed to various servers. So, if any component dies, then we can have similar component responding from other machine. Even if single component dies in all servers, only few functionalities will be impacted.
More scalability options: All micro components have their own servers and if we know that one component needs more traffic, then it will be easy to increase memory for that server and it will be more effective as compared to increasing memory for single full application.
Independent development : Developers can work independently on their microservice and independent of technology used for each microservice.
Emerging technologies : Easy to try and take advantage of emerging technologies and frameworks.
Productivity : New team members quickly becomes productive and can start on their work easily.