As the name implies, a microservices architecture is an approach in which a large application is split up into a set of smaller services. Each service runs in its own process and communicates with other processes using protocols such as HTTP/HTTPS, WebSockets, or Advanced Message Queuing Protocol (AMQP).
Each microservice should own its related domain data model and domain logic, and could be based on different data storage technologies (SQL, NoSQL) and different programming languages.
Characteristics of Microservices
- Microservices are small, independent and loosely coupled
- Each microservice has a seperate codebase which can be managed by a small development team
- Microservices are deployed independently
- Microservices are responsible for persisting their data or external data in their respective databases. Unlike monoliths, microservices do not share databases
- Microservices communiate with each other by using well-defined APIs. Internal implementation details of each service are hidden from other services.
- Polyglot Programming: Microservices that make up a web application do not need to share the same technology stack, libraries or frameworks.
As another benefit, microservices can scale out independently. Instead of having a single monolithic application that you must scale out as a unit, you can instead scale out specific microservices. That way, you can scale just the functional area that needs more processing power or network bandwidth to support demand, rather than scaling out other areas of the application that don't need to be scaled. That means cost savings because you need less hardware.

Comments
Post a Comment