Architectural style structuring an application as a collection of small, independent, deployable services, each with its own business logic and data.
Microservices are an architectural style where an application is composed of small, independent services communicating over the network (HTTP, messages, events). Each service owns its domain, data, and deployment lifecycle.
| Aspect | Monolith | Microservices |
|---|---|---|
| Deployment | All together | Independent |
| Scaling | Vertical | Horizontal per service |
| Complexity | In the code | In the infrastructure |
| Consistency | ACID transactions | Eventual consistency |
Microservices allow independent teams to develop, deploy, and scale services autonomously. But their operational complexity is significant — they require observability, service mesh, distributed data management, and an ownership culture. They are not the default answer.
Code organization strategy where multiple projects coexist in a single repository, sharing dependencies, configuration, and build tooling.
Architectural pattern where components communicate through asynchronous events, enabling decoupled, scalable, and reactive systems.
Development approach leveraging cloud advantages: containers, microservices, immutable infrastructure, and declarative automation for scalable and resilient systems.
Security architecture that rigorously verifies every request regardless of origin, eliminating implicit trust in internal networks.
Incremental migration strategy that gradually replaces a legacy system with new components, progressively routing traffic until the old system can be retired.
Infrastructure layer dedicated to managing communication between microservices, providing observability, security, and traffic control transparently.
Pattern for managing distributed transactions in microservices through a sequence of local transactions with compensating actions to handle failures.
Architectural pattern extending microservices to the frontend, allowing independent teams to develop and deploy parts of a web application autonomously.
Architectural pattern isolating business logic from the outside world through ports and adapters, facilitating testing and technology changes.
Software design approach centering development on the business domain, using a ubiquitous language shared between developers and domain experts.
Observability technique tracking requests across multiple services in distributed systems, enabling bottleneck identification and failure diagnosis.
Architectural pattern where each client type has its own dedicated backend adapting microservice APIs to that client's specific needs.
AWS serverless orchestration service that coordinates multiple services into visual workflows using Amazon States Language (ASL), with built-in error handling, retries, and parallel execution.
AWS serverless event bus connecting applications using events, enabling decoupled event-driven architectures with rule-based routing.
AWS container orchestration service that runs and scales Docker applications without managing the underlying cluster infrastructure.
Pattern providing a single entry point for multiple microservices, handling routing, authentication, rate limiting, and response aggregation.
Principles and practices for designing clear, consistent, and evolvable programming interfaces that facilitate integration between systems.