Table of Contents

⬆️ Back to Table of Contents

Phase 1: Assessment & Domain Discovery

  • Domain-Driven Design (DDD):

    • Identify bounded contexts and domain boundaries.
    • Perform Event Storming to visualize domain logic.
  • Buzzwords: Domain-driven design, event storming, bounded context, ubiquitous language.

⬆️ Back to Table of Contents


Phase 2: Strategic Planning

  • Identify Core Domains and Support Domains.

  • Create a roadmap with iterative milestones for extraction.

  • Define microservices around business capabilities.

  • Buzzwords: Strategic domain modeling, domain decomposition, service boundaries, domain decomposition.

⬆️ Back to Table of Contents


Phase 3: Iterative Decomposition (Strangler Pattern)

  • Wrap existing monolith functionalities behind clear API contracts.

  • Gradually extract functionality into separate microservices, starting from simplest or least coupled.

  • Continuously integrate extracted services using API gateways, Service Mesh, and Message Brokers.

  • Buzzwords: Service extraction, incremental refactoring, API gateway, service mesh, message broker, sidecar patterns.

⬆️ Back to Table of Contents


Phase 4: Data Decoupling

  • Gradually separate data storage, ensuring microservices own their databases (Database-per-service).

  • Ensure eventual consistency through Event-driven Architecture and Saga patterns.

  • Use Change Data Capture (CDC) to synchronize data where needed.

  • Buzzwords: Data ownership, event-driven architecture, eventual consistency, CQRS, Saga pattern, polyglot persistence.

⬆️ Back to Table of Contents


Phase 5: Continuous Integration/Continuous Delivery (CI/CD)

  • Automate deployment pipelines for each service independently.

  • Utilize containerization (Docker/Kubernetes) to ensure consistent environments.

  • Implement observability, logging, and monitoring tools (Prometheus, Grafana, OpenTelemetry).

  • Buzzwords: CI/CD pipelines, container orchestration, observability, Kubernetes, GitOps, telemetry.

⬆️ Back to Table of Contents


Phase 6: Team Autonomy and Organization Alignment

  • Adopt DevOps culture and cross-functional, autonomous teams owning individual services.

  • Clearly define service boundaries to improve ownership and accountability.

  • Buzzwords: DevOps culture, cross-functional teams, team autonomy, service ownership.

⬆️ Back to Table of Contents


Phase 7: Security and Compliance

  • Enforce security policies via Zero Trust architecture and fine-grained access control.

  • Shift-left security with DevSecOps approaches.

  • Ensure compliance through automation and regular auditing.

  • Buzzwords: Zero trust, DevSecOps, IAM, RBAC, shift-left security, compliance as code.

⬆️ Back to Table of Contents


Phase 8: Iterative Improvement (Continuous Evolution)

  • Regularly evaluate microservices boundaries, scale, and performance.

  • Gradually optimize, merge, or further split services based on feedback loops.

  • Implement chaos engineering practices to ensure resilience and reliability.

  • Buzzwords: Feedback loops, continuous improvement, chaos engineering, resilience testing, iterative optimization.

⬆️ Back to Table of Contents


Strangler Fig Pattern (Strangler Pattern)

  • Concept: Gradually replace parts of your monolith by redirecting functionalities incrementally to microservices until the monolith is eventually retired.
  • Benefit: Low-risk incremental refactoring with minimal disruption.

⬆️ Back to Table of Contents


Other Common Patterns And Techniques:

  1. Event Storming

    • Collaborative discovery of domain logic.
    • Helps visualize domain boundaries and identify microservices.
  2. Domain-Driven Design (DDD)

    • Uses Bounded Contexts and Ubiquitous Language to define service boundaries.
  3. Event-Driven Architecture (EDA)

    • Break monolith based on domain events.
    • Utilize event sourcing and CQRS for decoupled communication.
  4. Anti-Corruption Layer

    • Introduce a layer of abstraction to isolate new microservices from legacy code complexities.
  5. Branch by Abstraction

    • Incrementally refactor functionality into services behind an abstraction layer, safely managing technical debt and legacy integration.
  6. API Gateway and Backend-for-Frontend (BFF)

    • Centralized gateways to orchestrate and route requests.
  7. Database Per Service / Polyglot Persistence

    • Isolate data storage for each service to eliminate coupling.
  8. Service Mesh

    • Decouples communication, discovery, security, and traffic management using sidecars (e.g., Istio, Linkerd).
  9. Sidecar Pattern

    • Provides standardized functionalities (monitoring, logging, tracing) attached to each microservice.
  10. Branch by Abstraction

    • Gradually introduce microservices behind feature toggles or switches to maintain a running, stable system throughout the refactoring.
  11. API Gateway

    • Single entry-point for all microservices, handling concerns such as load balancing, authentication, logging, and rate limiting.
  12. SAGA Pattern

    • Manages distributed transactions across multiple services using event-driven coordination.

⬆️ Back to Table of Contents


Buzzwords Recap:

  • Strangler Pattern (Strangler Fig)
  • Domain-driven Design
  • Event Storming
  • Bounded Context
  • Event-Driven Architecture
  • Anti-Corruption Layer
  • CQRS & Event Sourcing
  • API Gateway
  • Backend-for-Frontend (BFF)
  • Service Mesh
  • Polyglot Persistence
  • Database Per Service
  • Sidecar
  • Branch-by-Abstraction
  • Saga Pattern

⬆️ Back to Table of Contents