Domains | Issues covered | Architectural patterns/evaluation criteria |
Data management | Which architecture to adopt for data management (reading, writing)? | Database per service |
API Composition | ||
SAGA | ||
Domain Event | ||
Event sourcing | ||
Test management (Testing) | How to test processes involving several microservices? | Testing of service components |
Service Integration Contract Testing | ||
Deployment | How to deploy services written in different languages while ensuring devops requirements? | Multiple service instances per host |
Service instance per container | ||
Serverless deployment | ||
Cross-cutting concerns | How to allow a service to run in multiple environments without modification? | Externalized configuration |
Communication style | How to make services communicate? | Remote Procedure Invocation (RPI) |
Message exchange (Messaging) | ||
External API | How do clients access individual services? | API Gateway |
Backends for frontends | ||
Service discovery | How does the client of a service, the API gateway or another service, discover the location of a service instance? | Service Registry |
Client-side service discovery | ||
Server-side service discovery | ||
Self-registration | ||
Reliability | How do you prevent a network or service failure from affecting other services? | Circuit breaker |
Security | How do you communicate the identity of the applicant to the departments processing the software? | Access token |
Observability | How to understand the behavior of a software and solve problems? | Log aggregation |
Implementation measures | ||
Distributed tracing | ||
API Health Check | ||
User interface templates | How do you implement a screen or UI page that displays data from multiple services? | Composition of the page fragment on the server side |
Composition of the client-side user interface |