System Design Notes
  • The Art of Scalable Systems: Designing for Success
  • BASICS
    • Key Characteristics of Distributed Systems
    • DNS
    • Load Balancer
    • API Gateway
    • Caching
    • Message Queues
    • Proxies
    • Databases
    • ACID
    • CAP Theorem
    • PACEL Theorem
  • System Design patterns
    • Bloom filters
    • Consistent hashing
    • Quorum/Consensus
    • Leader and Follower
    • Write-ahead Log
    • Segmented Log
    • High-Water Mark
    • Locking Lease
    • Checksum
    • Vector Clocks
    • Liveness
      • Heartbeat
      • Gossip Protocol
      • Phi Accrual Failure Detection
    • Split Brain with Generation Clock
    • Split Brain with Fencing
    • Resyncing Nodes
      • Read Repair
      • Merkle trees
      • Hinted Handoff
  • DATA SYNCHRONISATION PATTERNS
    • Two-phase commit (2pc) Pattern
    • CQRS
    • Saga
    • Transactional outbox
    • Change Data Capture (CDC)
  • Monolith Decomposition Patterns
    • Monolith vs Microservices
    • Motivation
    • The Strangler Fig Migration Pattern
    • Domain-Driven Design
    • Other Approaches
  • WHEN IN PRODUCTION
    • Metrics
  • SD INTERVIEWS
    • System Design Interview Template
  • REAL WORLD SCENARIOS
    • Design a Distributed Message Queue & Event Streaming Platform
  • 💰Payments Services
    • Parties: Acquirer, Issuer
    • Events: Chargebacks, Reversals
  • 🛣️Infrastructure
    • K8S - ClusterIP vs NodePort vs LoadBalancer
Powered by GitBook
On this page
  • Identify and Size Components Pattern/ Scoping Microservices using DDD
  • Gather Common Domain Components Pattern
  • Flatten Components Pattern
  • Determine Component Dependencies Pattern

Was this helpful?

  1. Monolith Decomposition Patterns

Other Approaches

Identify and Size Components Pattern/ Scoping Microservices using DDD

  • identify, manage, and properly size components.

  • Define the Bounded Context

    • find core domain concepts (e.g. = main business functions) and internal models (supporting the concepts)

    • define the ubiquitous language for the concept (= agreed language between domain experts and software experts)

    • identify out of context concepts (which don’t fit in the natural language of the core concept)

    • each BC has an explicit interface that needs to be defined

    • communication between BC is carried out using shared communication (to ensure our bounded context is completely independent fro other BC)

Gather Common Domain Components Pattern

  • consolidate common business domain logic that might be duplicated across the application, reducing the number of potentially duplicate services in the resulting distributed architecture.

Flatten Components Pattern

  • collapse or expand domains, subdomains, and components, thus ensuring that source code files reside only within well-defined components.

Determine Component Dependencies Pattern

  • identify component dependencies, refine those dependencies, and determine the feasibility and overall level of effort for a migration from a monolithic architecture to a distributed one.

PreviousDomain-Driven DesignNextMetrics

Last updated 2 years ago

Was this helpful?