Software architecture is fundamentally about managing complexity and establishing boundaries. As systems evolve, codebases inevitably degrade into an entangled “Big Ball of Mud” unless strict domain boundaries, dependency inversion, and service decomposition patterns are enforced.

This module deconstructs structural architectural styles:

  • Domain-Driven Design (DDD) & Bounded Contexts: Defining semantic models and boundaries so that “User” in the Identity domain does not corrupt “User” in the Billing or Shipping domains.
  • Hexagonal Architecture (Ports & Adapters): Inverting dependencies so that core business domain entities do not know about SQL, Kafka, or HTTP frameworks.
  • CQRS & Event Sourcing: Decoupling complex write mutations from high-throughput read models.
  • Cell-Based Architecture: Partitioning entire end-to-end service stacks into self-contained “cells” (e.g. AWS Cells, Slack cells) to bound outage blast radiuses to small customer percentages.

What you will learn

  • Deconstruct Domain-Driven Design (DDD) Strategic Design: ubiquitous language, subdomains, bounded contexts, and context mapping
  • Implement Hexagonal (Ports & Adapters) architecture to isolate business domain logic from databases, messaging brokers, and transport protocols
  • Design CQRS (Command Query Responsibility Segregation) topologies separating write-optimized models from read-optimized materialized projections
  • Architect Cell-Based architectures to eliminate global blast radiuses and achieve fault-isolated availability partitions
STAGE TOPICS

Topics in this chapter