Architectural patterns for complex distributed systems.
Decomposing systems into independently deployable services.
Designing systems around events, messages, and asynchronous communication.
Concurrency
Microservices