Software Architecture Styles
1. Layered Architecture - Application is classified into multiple layers like presentation layer, business layer, persistence layer in a 3 tier architecture.
2. Hexagonal Architecture - Business logic is kept independent of other layers with communications happening via inbound/outbound adapters (Interfaces).
3. Microservices Architecture - The application is divided into multiple services based on domain/maintainability etc and other factors, each service of a microservice architecture typically follows hexagonal architecture.
Advantages of microservices
1. Enables continous delivery and deployment of large complex application via independent services.
2. Independent scaling
3. Fault isolation
4. Independent technology stack and can easily update to latest tech stack
5. Independent CI/CD pipeline and faster deployment/release
6. Smaller services are be easily maintainable
7. Enables teams to be autonomous
Drawbacks of microservices architecture
1. Finding the right set of services is challenging
2. Features spanning multiple services requires careful co-ordination:
a. how to handle transaction across services (Saga)
b. how to query data from multiple microservices (CQRS/API Composition)
c. may require careful rollout plan with involved microservices to not break backward compatibility etc.
3. Testing and deployment can be difficult when multiple services are involved.
SOA Vs microservices
SOA uses SOAP based webservices where as the microservices use lighter REST based or gRPC based calls.
SOA used to integrate large monolithic applications where as services are broken down as multiple micro services in a microservice architecture.
SOA based architecture have single shared database for the entire application where as microservices have its own database.
No comments:
Post a Comment