PortfolioTech Notebook
Menu
miscellaneous

MICROSERVICES_KNOWLEDGE

Microservices Knowledge Enrichment

Additional patterns and concepts to complement the architecture plan.


What You Have Covered Well

  • Core patterns (Outbox, CQRS, Event Sourcing, Saga)
  • Resilience (Circuit Breaker, Bulkhead, Retry)
  • Observability stack
  • Security layers
  • Event contract structure

Gaps & Enrichment Areas

1. Domain-Driven Design (DDD)

Missing foundational concepts that drive good service boundaries:

Concept Why It Matters
Bounded Contexts Defines service boundaries, prevents coupling
Aggregates Consistency boundaries within a service
Context Mapping How services/teams interact (ACL, Shared Kernel)
Anti-Corruption Layer Isolates legacy/external systems

2. Service Discovery

Not mentioned - how do services find each other?

  • Kubernetes DNS (if K8s-native)
  • Consul / Eureka (traditional)
  • Istio Service Registry (since you have Istio)

3. Communication Patterns

You have RabbitMQ but could add:

Pattern Use Case
gRPC High-performance inter-service calls
GraphQL Federation Unified API across services
Orchestration Saga MassTransit state machines (vs choreography)
Backpressure When consumers can't keep up

4. Deployment Patterns

Pattern Description
Blue/Green Zero-downtime deployment
Canary Releases Gradual rollout to subset of users
Rolling Updates K8s native approach
Strangler Fig Incremental migration from monolith

5. Data Patterns

Pattern Description
Database per Service State this explicitly as a principle
API Composition Aggregating data from multiple services
Materialized Views Pre-computed read models (beyond Redis cache)
CDC You have Debezium, but worth documenting the pattern

6. Resilience Additions

Pattern Description
Load Shedding Rejecting requests under pressure
Fallback Default responses when dependencies fail
Timeout Propagation Deadline propagation across services
Poison Message Handling Beyond DLQ - alerting, manual replay

7. Observability Maturity

Concept What to Add
SLIs/SLOs/SLAs Define concrete targets (latency, error rate)
Error Budgets Balance reliability vs velocity
Alerting Strategy Symptom-based vs cause-based alerts
Runbooks Operational playbooks for incidents

8. Security Additions

Concept Description
Zero Trust Never trust, always verify
OIDC Flows Authorization Code, Client Credentials
Input Validation At service boundaries
Rate Limiting per Tenant Beyond global rate limits

9. Anti-Patterns to Document

Anti-Pattern Why Avoid
Distributed Monolith Tightly coupled "microservices"
Shared Database Breaks service autonomy
Chatty Services N+1 calls between services
Synchronous Chains A→B→C→D creates fragility

10. Testing Enrichment

Type Tool/Approach
Consumer-Driven Contracts Pact (you have it, but document the workflow)
Service Virtualization WireMock, Mountebank
Synthetic Monitoring Production health checks

11. Multi-Tenancy

If applicable:

  • Tenant isolation strategies (DB per tenant, schema per tenant, row-level)
  • Tenant-aware routing

12. Cost & Scaling

Topic Description
Right-sizing CPU/memory limits based on profiling
HPA/VPA Autoscaling strategies
Spot/Preemptible Cost optimization for non-critical

Recommended Learning Path

  1. DDD → Eric Evans' book, Vaughn Vernon's "Implementing DDD"
  2. Patterns → "Microservices Patterns" by Chris Richardson
  3. Resilience → "Release It!" by Michael Nygard
  4. Observability → "Observability Engineering" by Charity Majors