Tech Check — Theme Navigation, Part 2
Architecture, microservices, inter-service communication, observability, and deployment themes — split out of links.md. Same format: tick the box once you’ve reviewed a topic. The bold path under each item is the primary note; the rest are related. Each link text is the full path from the repo root so you can navigate by hand too. (Links are clickable and relative to this file.)
Architecture
- Design patterns (GoF) — creational, structural, behavioral
- SOLID principles — SRP, OCP, LSP, ISP, DIP
- GRASP & general principles — responsibility assignment, DRY / KISS / YAGNI
- Dependency injection — DI vs DIP, containers, framework-agnostic patterns
- Monolith vs microservices
- Clean architecture — layers, hexagonal, DDD, MVC
- 12-factor app — config in env, stateless processes, disposability, logs as streams
- Repository & Unit of Work
- Event-driven architecture (EDA)
- CQRS & event sourcing
- EDA with microservices
- Transactional outbox pattern
- Saga pattern — orchestrator style
- Distributed rollback / compensating transactions — step #9 fails → previous 8 compensate
- Reliability patterns — idempotency keys, rate limiting, retries, circuit breaker
- pyq/backend/13_architecture_design/18_idempotency_keys.md
- pyq/backend/13_architecture_design/17_rate_limiting_algorithms.md
- pyq/backend/14_microservices/09_resilience_patterns.md
- pyq/system_design/02_resilience/01_timeouts_retries_backoff.md
- pyq/system_design/02_resilience/02_circuit_breakers_and_bulkheads.md
Microservices
- Microservices fundamentals — boundaries, trade-offs, interview Q&A
- Sync vs async communication — request-response vs messaging, choosing a style
- Data consistency patterns — saga, outbox, eventual consistency
- Resilience patterns — timeout budgets, retries, circuit breaker, bulkhead, load shedding
- API gateway
- Service discovery
- Service mesh
- Distributed tracing
Inter-service communication
- REST — principles, status codes, versioning, idempotency
- REST vs RPC vs GraphQL — choosing an API style
- gRPC — RPC framework, protobuf, streaming
- RabbitMQ
- Kafka
- Kafka delivery semantics — at-least/exactly-once, idempotent producer, transactions, offsets
- Kafka vs RabbitMQ — log vs queue, replay, routing, choosing a broker
- WebSockets / SSE — real-time alternatives to request-response
Observability
- Three pillars — logs, metrics, traces
- Structured logging — JSON events, structlog, canonical log lines
- ELK stack — log aggregation — Elasticsearch, Logstash/Fluent Bit, Kibana, ILM
- Prometheus — pull model, metric types, PromQL
- Grafana — dashboards, alerting
- Sentry — error tracking
- Tracing — OpenTelemetry & Jaeger
- SLO / SLI / SLA — error budgets, alerting on burn rate
- Choosing a stack — Datadog vs open-source trade-offs
Deployment & release strategies
- Blue/green & canary — plus rolling, recreate, shadow, feature flags
- Progressive delivery on Kubernetes — Argo Rollouts, Flagger, automated canary analysis
- CI/CD pipelines — stages, gates, pipeline design
Coverage gaps — resolved 2026-07-08
All gaps found while building this index have been filled; the new notes are linked in the sections above.
- Kafka vs RabbitMQ comparison → pyq/backend/10_message_queues/00_broker_comparison.md
- Kafka delivery semantics → pyq/backend/10_message_queues/kafka/04_delivery_semantics.md
- 12-factor app → pyq/backend/13_architecture_design/20_twelve_factor_app.md
- REST principles deepened → pyq/backend/07_rest_apis/05_rest_principles.md rewritten (26 → ~150 lines)
- Stubs filled: pyq/backend/15_observability/05_elk_stack.md, pyq/backend/12_protocols/http/01_http.md, pyq/backend/10_message_queues/rabbitmq/02_rabbitmq_exchanges.md (now routing patterns & topologies, complementing
03) - Structured logging in Python → pyq/backend/15_observability/13_structured_logging.md
- Progressive delivery on Kubernetes → pyq/backend/27_cicd/08_progressive_delivery.md
- Microservices resilience patterns → pyq/backend/14_microservices/09_resilience_patterns.md