The shape of the system
Architecture styles
Monolith, modular monolith, microservices, event-driven
✓ DoneDomain-Driven Design
Shared language, Bounded Context, Aggregate
✓ DoneClean Architecture
Onion layers and the direction of dependencies
✓ DoneMicroservices
Service boundaries, data per service, costs
✓ DoneVertical Slice
Organizing code by feature
✓ DoneArchitecture Decision Records
Writing down architecture decisions and their reasons
✓ DoneData and consistency
Consistency and CAP
Eventual consistency and hard choices
✓ DoneThe Saga pattern
Transactions across services with compensation
✓ DoneOutbox and Inbox
Sending messages safely together with database changes
✓ DoneIdempotency
One request, any number of times, one result
✓ DoneEvent Sourcing
Storing events instead of the final state
✓ DoneCaching patterns
Cache-aside, cache invalidation, stampede
✓ DoneScale and reliability
System design
Horizontal scaling, load balancing, sharding, replicas
✓ DoneResilience with Polly
Retry, circuit breaker, timeout and retry storms
✓ DoneKafka
Topics, partitions, consumer groups and message order
✓ DoneDistributed tracing
OpenTelemetry, traces and spans across services
✓ DoneKubernetes
Pods, deployments, HPA and graceful shutdown
✓ DoneSecurity
OWASP Top 10, secret management, encryption
✓ Done