Microservices are getting more and more attention nowadays. You can read about them on blogs, hear about them on conferences and take part in discussions about them on social media. Expectations are really, really huge. Software community is divided. Supporters are fascinated by microservices, but skeptics claim that it’s nothing new. However, both defenders and naysayers agree on one thing - Microservices Architecture pattern has many benefits.
Microservices might be defined as architectural approach, which depends on decomposing applications into single-purposed services. In other words, they divide big monolithic application, which is often packed as a single archive, into much smaller and simpler apps. Each one of them does just one thing and thanks to that, it does it well .
Every single application is built by full-stack team in order to eliminate potential misunderstanding between different teams. Microservices are much better for complex applications, which have grown over time, instead of simpler applications.
Microservices and its concept is similar to SOA (Service-oriented Architecture) and that’s why it’s being called "SOA with DevOps" , "SOA for hipsters" or "SOA 2.0" .
Key Characteristics:
- Single Responsibility Principle : Each service does just one thing, and does it well.
- Explicitly Published Interface : An interface, published by producer service, is being used by consumer service.
- Independent Deploy, Update, Replace, Scale : Each service might be deployed, updated, replaced and scaled independently from the other ones.
- Lightweight Communication : Lightweight protocols are being used in communication between services, for example REST over HTTP, STOMP over WebSocket, etc.
- Centralized Monitoring : it should be one of the most important components of your platform. Are you facing with cascading failures? Monitoring will help you. It’ll show you if encountered failure is occuring service wide or it’s connected to specific to a specific instance of service.