Skip to content
DevPedia

Architecture

Designing and evolving systems, from their requirements and structure through to running them in production.

11 guides

Fundamentals

  1. What is software architecture?

    How decisions about the structure of a system shape the way it evolves, and why some of them are hard to reverse.

  2. Architectural drivers: what guides architecture decisions

    The requirements and constraints that steer the design of a system, and how to use them to choose an architecture on solid ground.

Domain and structure

  1. Domain-Driven Design (DDD)

    How to model the domain so the software reflects the business, and when this approach is worth the investment.

  2. Monoliths, microservices, and SOA

    Different ways to split and deploy a system: what each option involves and how to judge which one fits the problem.

  3. Application architecture

    How to organize the code and keep business logic separate from technical details like data access and communication with other systems.

Communication and data

  1. Communication patterns

    Choosing between synchronous and asynchronous communication changes how a system responds and how it copes with failure. What it means for latency, coupling, and consistency.

  2. Data architecture

    How to organize data and decide who owns it. Modeling and persistence decisions, and when to consider event sourcing.

Operations

  1. Resilience in distributed systems

    How do you keep a partial failure from spreading through the whole system? Resilience mechanisms, when to use them, and where their limits are.

  2. Infrastructure and cloud architecture

    How to choose where a system runs, how to scale and deploy it, and how to bring the service back after an infrastructure failure.

  3. Observability and reliability

    How to understand what's happening in production and define the level of service you expect. The role of observability signals, SLOs, and error budgets.

Decisions

  1. How to communicate architecture decisions

    How to use diagrams and architecture decision records (ADRs) to explain the structure of a system and the reasoning behind its design.

Search by concept, pattern or practice.