What are Microservices?
Microservices is an architectural style for developing a software application that runs as individual services which communicate with each other through the following ways
- Synchronous communication using API calls
- Asynchronous communication through Publish and Subscribe/event-based mechanism — i.e using Message Queues
These microservices possess the following properties
- Independently deployable
- Highly scalable to loads
- Can be developed using multiple programming languages — i.e polyglot
- Loosely coupled
- Organized around the business domain
- Owned by small and self-contained teams
- Highly maintainable and testable
- Continuous Delivery through automated CICD pipelines and faster time to market
- Resiliency from failures
Monolithic vs Micro services differences
Microservices Architecture:
- Overview:
- Definition: Microservices architecture is an architectural style that structures an application as a collection of loosely coupled services, each representing a specific business capability.
- Focus: It emphasizes breaking down applications into small, independently deployable services that can be developed, deployed, and scaled independently.
- Service-Oriented:
- Services Independence: Each microservice is a self-contained unit that can be developed, deployed, and scaled independently. It often has its own database.
- Decentralization:
- Decision-Making: Each microservice team has a high degree of autonomy, enabling them to choose the technologies and tools that best suit their specific service.
- Scalability and Agility:
- Scalability: Enables scaling individual services based on their specific demands.
- Agility: Promotes rapid development, deployment, and iteration of services.
- Resilience and Fault Isolation:
- Fault Isolation: Failures in one microservice do not necessarily affect the entire application, enhancing resilience.