Overview — Evolving synthesis of software architecture as a discipline
Architecture Styles
Architecture Styles — Summary and comparison of all 8 styles; decision guide (informed by: fundamentals-of-software-architecture)
Event Driven Architecture — Broker vs mediator topologies; DDD: three event types (notification, ECST, domain event); private vs public events; distributed big ball of mud anti-pattern; data liberation (informed by: fundamentals-of-software-architecture, building-event-driven-microservices, learning-domain-driven-design)
Ubiquitous Language — DDD cornerstone practice: shared business language eliminating translation chains; must pervade the code; modeling out loud; documents must track UL or be archived; UML limitations; explanatory models as separate teaching aids (informed by: domain-driven-design, learning-domain-driven-design)
Model Driven Design — Evans' binding principle: one model for analysis and design; code is the model's expression; hands-on modellers; bones-showing; requires layered architecture for domain isolation; breakthroughs: non-linear returns, cascade of insights, Share Pie story (informed by: domain-driven-design)
Supple Design — Evans' six patterns for design that is easy to work with and extend: Intention-Revealing Interfaces, Side-Effect-Free Functions, Assertions, Conceptual Contours, Standalone Classes, Closure of Operations; declarative style as outcome (informed by: domain-driven-design)
Large Scale Structure — organising principle for entire system; four patterns: System Metaphor, Responsibility Layers (Potential/Operations/Decision Support/Policy/Commitment), Knowledge Level, Pluggable Component Framework; Evolving Order; six essentials for strategic design (informed by: domain-driven-design)
Eventstorming — Low-tech collaborative workshop; 10-step process (domain events, commands, policies, aggregates, bounded context candidates); when to use; two-phase facilitation; remote considerations; Rosa: Big Picture EventStorming for domain boundary/KPI mapping + KPI Value Tree; Process Modeling EventStorming for operational value stream analysis (informed by: learning-domain-driven-design, monolith-to-microservices, software-architecture-metrics)
Conways Law — Conway's Law; Inverse Conway Maneuver; three organisational structures (Pflaeging); tool choices as communication drivers; unexpected communication as diagnostic signal; organisation design as technical work (informed by: building-evolutionary-architectures, team-topologies)
Continuous Delivery Practices — Eight Accelerate-validated CD capabilities; key empirical findings: config-in-VCS more predictive than code, developer-owned tests, trunk-based development, loosely coupled architecture as the single largest CD lever; shift-left security (DevSecOps); lightweight change approval vs CABs; relationship between CD, culture, burnout, and job satisfaction (informed by: accelerate, building-evolutionary-architectures)
Team Topologies Model — Four team types (stream-aligned, platform, enabling, complicated-subsystem); three interaction modes with constraints/matrix; Dunbar-based team sizing; team API; one-owner-per-component rule; promise theory / SemVer; organisational sensing; discovery-to-establish pattern; topology evolution triggers; TVP; fractal platforms; Spotify model; DevOps anti-patterns (informed by: team-topologies)
Cognitive Load — Sweller's three cognitive load types (intrinsic/extraneous/germane); team cognitive capacity as software boundary constraint; domain complexity heuristics; platform as extraneous load eliminator (informed by: team-topologies)
Fracture Planes — Eight types of natural split points for monolith decomposition: business domain (primary), regulatory compliance, change cadence, team location, risk, performance, technology (sparingly), user personas; six forms of monolith; distributed monolith anti-pattern (informed by: team-topologies)
Westrum Culture — Ron Westrum's organisational culture typology (pathological/bureaucratic/generative); information flow as core mechanism; Likert measurement with psychometric validation; predicts delivery performance, org performance, job satisfaction; how to improve culture (implement practices first); blameless postmortems; Google Project Aristotle alignment (informed by: accelerate)
Feature Flags — Application-layer release control; Hodgson's four toggle types (release/experiment/ops/permission) with different lifecycles; flag lifecycle discipline; default behaviour and cohort routing; kill switches and load-shedding flags; flags as technical debt with a use-by date (informed by: building-evolutionary-architectures, understanding-distributed-systems, accelerate, monolith-to-microservices, release-it)
Fitness Functions — Full classification taxonomy; priority tiers; enterprise fitness functions; mechanism and concern taxonomies; fitness function testing pyramid (triggered/continuous × atomic/holistic → three pyramid layers); ISO 25010 quality attribute anchoring (informed by: building-evolutionary-architectures, fundamentals-of-software-architecture, mastering-api-architecture, software-architecture-metrics)
Four Key Metrics — DORA four key metrics (deployment frequency, lead time for changes, change failure rate, time to restore service); empirical basis (4-year, 23K+ respondents, Accelerate); Lean conceptual basis; cluster analysis; no-tradeoff finding; CABs negatively correlated with both metrics; Goodhart's Law warning; pipeline topology variants; instrumentation; MVD; virtuous cycle mechanism; complementary metrics (informed by: accelerate, software-architecture-metrics)
Goal Question Metric — GQM framework (Basili & Weiss 1984): goal → questions → metrics → data tree; goal statement structure (purpose/object/issue/viewpoint); metric selection criteria (signal strength, cost, cross-question reuse); 9-step workshop; Foo Service case study (rate-limit incident → heartbeat + fail-fast ADR → 10-minute detection before user impact) (informed by: software-architecture-metrics)
Modularity — Cohesion types, LCOM, coupling metrics, connascence taxonomy (static vs dynamic); SATH: applying D/A/I metrics to decomposition feasibility; Modularity Maturity Index (MMI 0-10, three cognitive principles: modularity 45%/hierarchy 30%/pattern consistency 25%, decision thresholds, architecture erosion, implementation vs design/architecture debt); advanced structural metrics: ACD/CCD/Propagation Cost, Relative Cyclicity, SDI, Maintainability Level, LCOM4, change history metrics, Component Rank, six golden rules (informed by: fundamentals-of-software-architecture, software-architecture-the-hard-parts, software-architecture-metrics)
Service Granularity — Granularity vs modularity distinction; six disintegrators; four integrators; volatility-based decomposition; MTTS; trade-off-to-business-question method (informed by: software-architecture-the-hard-parts)
Software Complexity — Ousterhout's complexity definition: three symptoms (change amplification, cognitive load, unknown unknowns), two causes (dependencies, obscurity), incremental accumulation; strategic vs. tactical programming; technical debt as borrowed time (informed by: a-philosophy-of-software-design)
Stability Patterns — Coherent navigation hub for Nygard's stability pattern set; failure-arresting (timeout/circuit-breaker/bulkhead), load-handling (shed load/backpressure/handshaking), defensive (fail fast/let it crash/steady state/retry), and architectural (decoupling middleware/test harnesses/governor); pattern composition; antipatterns they defend against (informed by: release-it, understanding-distributed-systems, foundations-of-scalable-systems, site-reliability-engineering)
Technical Vs Domain Partitioning — Technical (layered) vs domain (bounded context) top-level component design (informed by: fundamentals-of-software-architecture)
API & Integration
Api Design — REST, gRPC, GraphQL exchange format decision; HTTP methods; URL modeling; status codes; OAS; versioning; Postel's Robustness Principle; non-breaking vs breaking changes; implementation-as-de-facto-spec; version translation in controllers; API-first (informed by: mastering-api-architecture, understanding-distributed-systems, building-event-driven-microservices, release-it)
Api Gateway — Gateway taxonomy (enterprise/microservices/mesh), capabilities, pitfalls, history (informed by: mastering-api-architecture)
Api Testing — Test pyramid, consumer-driven contracts, Pact, component/integration/E2E testing; scope vs size distinction, test double fidelity hierarchy, user journey tests, formal verification with TLA+; EDM topology testing, integration testing strategies, event data sourcing (informed by: mastering-api-architecture, understanding-distributed-systems, building-event-driven-microservices)
Integration Styles — the four EIP integration styles (File Transfer, Shared Database, RPI, Messaging); eight decision criteria; trade-offs and when to use which style (informed by: enterprise-integration-patterns)
Messaging — Command/Document/Event message types; one-way/req-resp/broadcast styles; Request-Reply (sync block vs async callback; Return Address; Correlation Identifier); point-to-point/pub-sub/datatype channels; Pub-Sub as distributed Observer (push vs pull; channel design); at-least-once delivery; guaranteed delivery; exactly-once via idempotency; invalid vs dead letter channel; backlogs; poison message isolation; competing consumers; data safety trade-off (publisher confirms + persistent queues + manual ACKs); quorum queues (RAFT); RabbitMQ internals; Pipes and Filters; Message Router; Message Bus; Messaging Bridge; Aggregator; Resequencer; Composed Message Processor; Scatter-Gather; Routing Slip; Process Manager; Message Broker (architectural pattern); Envelope Wrapper; Content Enricher; Content Filter; Claim Check; Normalizer; Canonical Data Model; Messaging Gateway; Messaging Mapper; Transactional Client; Polling Consumer; Event-Driven Consumer; Competing Consumers; Message Dispatcher; Selective Consumer; Durable Subscriber; Idempotent Receiver; Service Activator; Control Bus; Detour; Wire Tap; Message History; Message Store; Smart Proxy; Test Message; Channel Purger (informed by: understanding-distributed-systems, enterprise-integration-patterns, release-it, foundations-of-scalable-systems)
Threat Modeling — STRIDE, DREAD, OWASP API Top 10, six-step process, rate limiting strategies (informed by: mastering-api-architecture)
Zero Trust — Zonal architecture critique, NCSC eight principles, service mesh + OAuth2 implementation stack (informed by: mastering-api-architecture)
AI & Machine Learning
Foundation Models — What foundation models are; transformer architecture (prefill/decode, KV cache, MoE); training data constraints; Chinchilla scaling law; post-training (SFT, RLHF, DPO) (informed by: ai-engineering)
Ai Engineering — AI engineering as a discipline vs ML engineering; three-layer stack (application dev, model dev, infrastructure); product planning; last-mile challenge; use case taxonomy (informed by: ai-engineering)
Ai Evals — Evaluation methodology: perplexity, pass@k, BLEU/ROUGE, embeddings, AI-as-a-judge, comparative evaluation (Elo/Bradley-Terry, LMSYS Arena); factual consistency, safety, instruction-following; model selection workflow; API vs self-hosting; evaluation pipeline design; benchmark contamination (informed by: ai-engineering)
Prompt Engineering — Prompt anatomy; system vs user prompt; chat templates; in-context learning (zero/few-shot, CoT); prompt decomposition; defensive prompt engineering (extraction, jailbreaking, injection, information extraction); three-layer defence (model/prompt/system) (informed by: ai-engineering)
Rag — Retrieval-augmented generation; term-based (TF-IDF, BM25) vs embedding-based retrieval; ANN algorithms (LSH, HNSW, FAISS); hybrid search with RRF; chunking; reranking; contextual retrieval; text-to-SQL; memory model (informed by: ai-engineering)
Ai Agents — Agent planning (ReAct, Reflexion); tool categories (knowledge, capability, write actions); function calling; multi-agent systems; planning/tool/efficiency failure modes; safety and compound errors; LLM planning debate (informed by: ai-engineering)
Finetuning — When to finetune vs RAG; memory bottleneck; quantisation (FP32→INT4); PEFT; LoRA (low-rank decomposition, rank, alpha, multi-LoRA serving); QLoRA; model merging (task arithmetic, TIES/DARE, frankenmerging); finetuning tactics (informed by: ai-engineering)
Dataset Engineering — Data-centric AI; three criteria (quality, coverage, quantity); acquisition and annotation; data synthesis (rule-based, simulation, AI-powered, reverse instruction); model distillation; model collapse; data processing pipeline (informed by: ai-engineering)
Ai Engineering Architecture — Five-step progressive architecture (context enhancement, guardrails, router/gateway, caching, agents); model drift detection; orchestration frameworks; user feedback systems (explicit vs implicit, edit-as-preference, degenerate feedback loops, sycophancy) (informed by: ai-engineering)
Ml Systems Design — When to use ML (nine conditions); research vs production differences (silent failure, latency vs throughput, messy data, fairness, interpretability); four system requirements (reliability, scalability, maintainability, adaptability); business vs ML objective alignment; problem framing (task types, decoupling objectives); mind vs data debate (informed by: designing-machine-learning-systems)
Feature Engineering — Feature operations (missing value handling MNAR/MAR/MCAR, scaling, discretisation, categorical encoding/hashing trick, feature crossing, positional embeddings); data leakage causes and detection; feature importance (top 10 = 50% importance); feature generalisation (coverage × distribution overlap); best practices (split by time, scale after split) (informed by: designing-machine-learning-systems)
Model Development — Six model selection tips; four phases of ML adoption; ensembles (bagging/boosting/stacking); experiment tracking and data versioning challenges; ML debugging; distributed training (data/model/pipeline parallelism); AutoML (hyperparameter tuning, NAS, learned optimisers); offline evaluation baselines; evaluation methods (perturbation, invariance, directional expectation, calibration, confidence, slice-based/Simpson's paradox) (informed by: designing-machine-learning-systems)
Data Distribution Shifts — Covariate shift/label shift/concept drift/feature change/label schema change taxonomy; degenerate feedback loops (mechanism, detection, correction via randomisation and positional features); detection methods (KS test, two-sample tests, feature validation, prediction monitoring, sliding vs cumulative statistics); proactive design; retraining strategies (informed by: designing-machine-learning-systems)
Continual Learning — Stateless retraining vs stateful training (fine-tuning); four stages of continual learning maturity; champion/challenger pattern; test in production methods (shadow deployment, A/B testing, canary release, interleaving experiments, bandits, contextual bandits); data freshness value; continuous ML challenges (feedback loops, emergency response, stable A/B baselines) (informed by: designing-machine-learning-systems, reliable-machine-learning)
Mlops Infrastructure — Four-layer MLOps stack (storage/compute, resource management, ML platform, dev environment); cloud repatriation; Docker + Kubernetes; workflow orchestration tools (Airflow/Argo/Prefect/Metaflow); model store (8 artifact types); feature store (management/computation/consistency, eliminates training-serving skew); build vs buy framework (informed by: designing-machine-learning-systems)
Data
Data Decomposition — Data disintegrators/integrators; five-step process; data domains; data sovereignty; connection quotas; polyglot persistence; database type selection; data ownership (single/common/joint); eventual consistency patterns; four distributed data access patterns (informed by: software-architecture-the-hard-parts)
Data Mesh — Data Warehouse, Data Lake, Data Mesh evolution; four Data Mesh principles; DPQ; OLTP vs OLAP; star/snowflake schema; DDD/Data Mesh alignment (OHS as analytical published language, CQRS for projections) (informed by: software-architecture-the-hard-parts, learning-domain-driven-design)
Distributed Systems
Backpressure — Flow-control mechanism: downstream signals upstream to slow producers rather than overwhelm consumers; bounded queues vs unbounded; backpressure vs load shedding (internal vs boundary); credit-based flow control; pull-based streams; anti-patterns (unbounded queues, retries defeating backpressure) (informed by: release-it, foundations-of-scalable-systems, understanding-distributed-systems, designing-data-intensive-applications)
Broadcast Protocols — best-effort, reliable (eager/gossip), total order broadcast; consensus requirement; relationship to CRDTs and replication (informed by: understanding-distributed-systems)
Caching — HTTP caching (Cache-Control, ETag, fresh/stale, immutable static resources); reverse proxies; application-layer: side vs inline cache, LRU eviction, TTL, local vs external cache, thundering herd, cascading failure; 80% hit rate as scalability threshold (informed by: understanding-distributed-systems, foundations-of-scalable-systems)
Cap Theorem — CAP theorem and PACELC extension; Kleppmann's critique ("best avoided"); timeliness vs integrity distinction (informed by: understanding-distributed-systems, designing-data-intensive-applications)
Cdn — CDN overlay network; BGP limitations; global DNS LB; IXP placement; edge+intermediary caching layers; DDoS shielding (informed by: understanding-distributed-systems)
Consensus Algorithms — Raft, Paxos, Zab; FLP result; ZooKeeper/etcd; equivalence theorem (linearizable CAS = total order broadcast = locks = uniqueness) (informed by: designing-data-intensive-applications, understanding-distributed-systems)
Consistency Models — Full spectrum: linearizability, sequential, causal, strong eventual, eventual; COPS causal+ implementation; isolation levels; linearizability ≠ serializability; timeliness vs integrity; safety vs liveness (informed by: understanding-distributed-systems, designing-data-intensive-applications)
Control Plane Data Plane — data plane (on critical path, availability), control plane (off-path, consistency); static stability; scale imbalance solutions (file store buffer, push deltas, hybrid); control theory feedback loop (informed by: understanding-distributed-systems, mastering-api-architecture)
Crdts — Conflict-free Replicated Data Types; semilattice + LUB merge; strong eventual consistency; LWW/MV registers; CALM theorem (application-level consistency, not linearizability) (informed by: understanding-distributed-systems)
Distributed Transactions — ACID, 2PL, OCC, MVCC, 2PC, Spanner, Saga, Outbox; XA limitations; coordination-avoiding correctness; Newman's "just say no" to 2PC during migration (informed by: understanding-distributed-systems, designing-data-intensive-applications, monolith-to-microservices)
Dns — Hierarchical resolution process; TTL trade-offs; DNS as eventually consistent KV store; DNS as SPOF; static stability principle (informed by: understanding-distributed-systems)
Failure Detection — Timeouts (fundamental limitation), pings vs heartbeats, when to use active detection; imperfect failure detection theorem (informed by: understanding-distributed-systems)
Fallacies Of Distributed Computing — The 8 fallacies (Deutsch/Sun 1994): network reliable, latency zero, bandwidth infinite, network secure, topology fixed, one admin, transport free, homogeneous network; stamp coupling; distributed logging/transactions/contracts (informed by: fundamentals-of-software-architecture)
Http — HTTP/1.1 vs HTTP/2 vs HTTP/3 (QUIC); multiplexing; HOL blocking; connection management; relationship to REST (informed by: understanding-distributed-systems)
Idempotency — Idempotency keys (atomicity requirement, principle of least astonishment), at-least-once delivery, retry safety (informed by: understanding-distributed-systems)
Leader Election — Raft state machine (follower/candidate/leader); election terms; CAS+lease practical approach; fencing tokens for mutual exclusion; leader as SPOF (informed by: understanding-distributed-systems)
Load Balancing — DNS LB, L4 (transport), L7 (application), service discovery, health checks, power of two choices, sidecar as client-side LB; stateless services as prerequisite for scale-out (informed by: understanding-distributed-systems, foundations-of-scalable-systems)
Monitoring — Black-box vs white-box monitoring; metrics and pre-aggregation; SLIs/SLOs; burn rate alerting; three-layer ML monitoring taxonomy (golden signals/generic ML signals/domain-specific quality); four actuals cases; drift detection (PSI, KL divergence, Wasserstein); ML SLOs and privacy in monitoring (informed by: understanding-distributed-systems, release-it, site-reliability-engineering, reliable-machine-learning)
Observability — Observability as superset of monitoring; three telemetry sources (metrics, logs, traces); structured event logs (one event per work unit, request ID, sampling); distributed tracing (trace ID propagation, spans, Zipkin/X-Ray); metrics and traces as derived views of event logs; Newman: log aggregation first, correlation IDs, Jaeger, synthetic transactions (informed by: understanding-distributed-systems, monolith-to-microservices)
Site Reliability Engineering — SRE as discipline: dev/ops conflict; error budgets; toil cap (50%); SLO-driven alerting; blameless postmortems; SRE vs DevOps distinction; applicability outside Google (informed by: site-reliability-engineering)
Automation — Automation vs autonomy; 5-level hierarchy (manual → autonomous); safety properties (rate limiting, idempotency); MySQL on Borg case study (informed by: site-reliability-engineering)
Testing For Reliability — Zero-MTTR via pre-production testing; traditional test hierarchy; production tests (config tests, stress tests, canary); production probes; barrier defence pattern; configuration file risk management (informed by: site-reliability-engineering)
Data Integrity — Data integrity vs availability distinction; replication ≠ recoverability; failure mode matrix (cause × scope × rate); defence in depth: soft deletion / tiered backups / out-of-band validation; point-in-time recovery; continuously test restore; Gmail and Google Music case studies (informed by: site-reliability-engineering)
Implementation Patterns
Mvc Web Presentation — MVC pattern; Page Controller vs Front Controller; Template/Transform/Two Step View; Application Controller (informed by: patterns-of-enterprise-application-architecture)
Circuit Breaker — Closed/open/half-open state machine for downstream resiliency (informed by: understanding-distributed-systems)
Timeout — Bounding wait time on every blocking call; sizing by P99.9; absent-timeout gotchas; relationship to circuit breaker and retry (informed by: release-it, understanding-distributed-systems)
Branch By Abstraction — Migration for deeply embedded capabilities: 5 steps; feature toggles; verify variant with automatic fallback (informed by: monolith-to-microservices)
Parallel Run — Correctness verification: both implementations run per request; old result returned; GitHub Scientist; dark launching vs canary vs parallel run; progressive delivery (informed by: monolith-to-microservices)
Progressive Delivery — Release in stages exposing change to controlled subsets; deployment vs release decoupling; canary/blue-green/ring/dark-launch/parallel-run/feature-flag spectrum; SRE order-of-fault model; "roll back first, diagnose second"; prerequisites and anti-patterns (informed by: site-reliability-engineering, release-it, mastering-api-architecture, building-evolutionary-architectures, monolith-to-microservices, accelerate)
Sidecar Service Mesh — East–west traffic governance: mTLS, service authorisation, evolution from libraries to eBPF; sidecar as reuse mechanism for operational concerns; orthogonal coupling; data-sinking sidecar for EDM legacy integration (informed by: understanding-distributed-systems, mastering-api-architecture, software-architecture-the-hard-parts, building-event-driven-microservices)
Anti Corruption Layer — Translation boundary protecting a bounded context's model from upstream language corruption; structure (FACADE+ADAPTER); ACL vs Conformist vs Open-Host Service; migration use with Strangler Fig (informed by: domain-driven-design, learning-domain-driven-design, monolith-to-microservices, building-evolutionary-architectures)
Context Map — Six bounded context integration patterns grouped by team collaboration type; context map notation; model translation: stateless proxy (sync/async) and stateful aggregation (stream processing, BFF); private vs public events; Evans' originating eight-pattern taxonomy (Shared Kernel, Customer/Supplier, Conformist, ACL, Separate Ways, OHS, Published Language, CI) and transformation recipes (informed by: domain-driven-design, learning-domain-driven-design)
Business Logic Patterns — Four-pattern spectrum: transaction script, active record, domain model, event-sourced domain model; subdomain-to-pattern mapping; transaction script failure modes; full tactical decision tree (pattern→architecture→testing strategy); migration paths between patterns (informed by: learning-domain-driven-design)
Domain Model — DDD tactical pattern for core subdomain business logic: value objects (immutable, identified by values), entities, aggregates (consistency boundary, one-per-transaction rule, aggregate root, OCC), domain events, domain services; Evans elaborations on associations, entity identity, context-dependent entity/VO classification, service partitioning, modules as model elements (informed by: learning-domain-driven-design, domain-driven-design)
Repository — Evans' REPOSITORY pattern: in-memory collection illusion over aggregate roots; hides persistence technology; only for roots needing direct access; transaction control left to client; factory/repository complementarity (informed by: domain-driven-design)
Specification — predicate VALUE OBJECT for expressing domain rules: three uses (validation, selection/querying, building to order); composite Specification with AND/OR/NOT; subsumption; integrates with REPOSITORY via selectSatisfying() (informed by: domain-driven-design)
Databases
Object Relational Mapping — O/R mapping architectural patterns (Table Data Gateway, Row Data Gateway, Active Record, Data Mapper); behavioural patterns (Unit of Work, Identity Map, Lazy Load); structural mapping; inheritance strategies (Single/Class/Concrete Table Inheritance) (informed by: patterns-of-enterprise-application-architecture)
Architecture Styles Comparison — All 8 architecture styles rated side by side; decision guide; monolith vs understanding-distributed-systems; partitioning type (informed by: fundamentals-of-software-architecture)
Orchestration Vs Choreography — Decision guide: when to use a central coordinator vs event-driven choreography; team-ownership heuristic; God Orchestrator anti-pattern; workflow state management options (informed by: understanding-distributed-systems, software-architecture-the-hard-parts, building-event-driven-microservices, learning-domain-driven-design, monolith-to-microservices)
Api Protocol Selection — REST vs gRPC vs GraphQL: decision table by traffic type; trade-off analysis across caching, schema, streaming, browser support, evolution; mixing protocols; chatty API anti-pattern (informed by: mastering-api-architecture, understanding-distributed-systems, foundations-of-scalable-systems)
Decomposition Strategy — How far to decompose: modular monolith → service-based → microservices; five decision factors (domain understanding, team structure, DevOps maturity, transaction requirements, scalability); recommended migration path; granularity disintegrators vs integrators; Ferrari anti-pattern (informed by: fundamentals-of-software-architecture, monolith-to-microservices, software-architecture-the-hard-parts, building-evolutionary-architectures, team-topologies, learning-domain-driven-design)
Consistency Model Selection — When to use linearizability vs causal vs eventual consistency; timeliness vs integrity distinction; decision guide by scenario (locks, balances, feeds, shopping carts, multi-region); read routing as the practical knob; CAP trap warning (informed by: designing-data-intensive-applications, understanding-distributed-systems, foundations-of-scalable-systems)
Sync Vs Async Communication — When to use synchronous vs asynchronous communication; temporal coupling as the core distinction; availability chaining risk; async concerns (idempotency, ordering, correlation, observability); mixed model (sync north-south, async east-west); decision guide (informed by: enterprise-integration-patterns, monolith-to-microservices, software-architecture-the-hard-parts, building-event-driven-microservices, understanding-distributed-systems, release-it)
Build Vs Buy — Build vs buy vs open-source decision framework; subdomain type as the primary analytical tool (core → build, generic → buy/adopt, supporting → build simple); hidden costs of buying; platform team as internal build-once option; sourcing reversals as subdomain types evolve (informed by: learning-domain-driven-design, domain-driven-design, software-architecture-the-hard-parts, building-evolutionary-architectures, team-topologies)
Stability Pattern Selection — Which stability pattern when; selection decision tree (outgoing call, incoming request, internal pipeline, system edge, automation, resource pooling); pattern × antipattern matrix; composition order (timeout first, then bulkhead, then breaker, then retry, etc.); anti-patterns of pattern composition (informed by: release-it, understanding-distributed-systems, foundations-of-scalable-systems, site-reliability-engineering, chaos-engineering)
Performance And Capacity — Symptom → diagnosis → action playbook; three analytical lenses (Little's Law, utilisation curve, percentile arithmetic); capacity planning workflow; antipatterns (sizing for average, running at high utilisation, unbounded queues); when performance tuning doesn't apply (informed by: foundations-of-scalable-systems, designing-data-intensive-applications, release-it, site-reliability-engineering, understanding-distributed-systems)
Migration Pattern Selection — Decision tree: where's the seam, is correctness the dominant risk, granularity, duration, parallel-run cost; pattern composition (service extraction, embedded capability extraction, database split, platform migration); database decomposition patterns; rollback as a feature (informed by: monolith-to-microservices, building-evolutionary-architectures, mastering-api-architecture, release-it)
Cost Vs Availability — Nines table with money attached; conversion via downtime cost; investment cost per nine; where each nine is earned; antipatterns (tyranny of the nines, MTBF without MTTR, redundancy without isolation); architectural choices that make availability cheap or expensive (informed by: release-it, site-reliability-engineering, understanding-distributed-systems, foundations-of-scalable-systems, software-architecture-metrics)
Software Architecture The Hard Parts — Software Architecture: The Hard Parts — Ford, Richards, Sadalage, Dehghani (ingested 2026-05-14; fully ingested)
Adam Bellemare — Author of Building Event-Driven Microservices; event-driven architecture specialist; event schema design and data liberation
Vlad Khononov — Author of Learning Domain-Driven Design; DDD practitioner and educator; strategic and tactical DDD, EventStorming
Daniel Bryant — Co-author of Mastering API Architecture; Principal Technologist at Datawire; security and gateway expert
James Gough — Co-author of Mastering API Architecture; API-first and contract testing specialist
Mark Richards — Author of Fundamentals of Software Architecture (with Ford), Software Architecture Patterns, Software Architecture: The Hard Parts (with Ford, Sadalage, Dehghani)
Pramod Sadalage — Co-author of Software Architecture: The Hard Parts; data architect at ThoughtWorks; evolutionary database design and NoSQL specialist
Zhamak Dehghani — Co-author of Software Architecture: The Hard Parts; creator of Data Mesh; analytical data and domain data ownership advocate
Matthew Auburn — Co-author of Mastering API Architecture; cloud migration and deployment strategy specialist
Neal Ford — Author of Fundamentals of Software Architecture (with Richards), Building Evolutionary Architectures, Software Architecture: The Hard Parts (with Richards, Sadalage, Dehghani); contributing author Software Architecture Metrics ch. 8 (metrics → engineering, zero-day fitness function, checklist manifesto framing)
Patrick Kua — Co-author of Building Evolutionary Architectures; technical leadership and engineering culture specialist
Rebecca Parsons — Co-author of Building Evolutionary Architectures; ThoughtWorks CTO; distributed systems and evolutionary computation background
Martin Kleppmann — Author of Designing Data-Intensive Applications; distributed systems researcher at Cambridge; CRDT and local-first software advocate
Eric Evans — Author of Domain-Driven Design (2003); originator of DDD vocabulary (ubiquitous language, bounded contexts, aggregates, strategic design)
Sam Newman — Author of Monolith to Microservices and Building Microservices; independent deployability, migration planning, monolith decomposition
Roberto Vitillo — Author of Understanding Distributed Systems
Matthew Skelton — Co-author of Team Topologies; co-creator of Team Topologies model; fast flow and organisational design specialist
Manuel Pais — Co-author of Team Topologies; DevOps and platform engineering consultant; team interaction and organisational sensing specialist
Gregor Hohpe — Co-author of Enterprise Integration Patterns; enterprise messaging and integration architect; ESB and MOM specialist
Bobby Woolf — Co-author of Enterprise Integration Patterns; messaging middleware and design patterns practitioner
Martin Fowler — Author of Patterns of Enterprise Application Architecture; ThoughtWorks Chief Scientist; coined Transaction Script, Domain Model, Active Record, Data Mapper, Repository, Service Layer
Michael Nygard — Author of Release It!; stability patterns practitioner; coined Circuit Breaker, Bulkhead, Timeout in the software context; design-for-production advocate
Ian Gorton — Author of Foundations of Scalable Systems; distributed systems architect; scalability measurement and empirical architecture
Andrew Harmel Law — Contributing author Software Architecture Metrics ch. 1; DORA four key metrics practitioner; delivery transformation consultant
Dave Farley — Contributing author Software Architecture Metrics ch. 3; co-author of Continuous Delivery; testability and deployability as architectural drivers; TDD as design discipline
Carola Lilienthal — Contributing author Software Architecture Metrics ch. 4; developer of the Modularity Maturity Index (MMI); empirical architecture quality measurement grounded in cognitive science
Christian Ciceri — Editor of Software Architecture Metrics; contributing author ch. 5; private build antipattern remediation; trunk stability as architectural prerequisite
Joao Rosa — Contributing author Software Architecture Metrics ch. 6; sociotechnical architecture; KPI Value Tree; Big Picture EventStorming for architectural strategy
Alexander Von Zitzewitz — Contributing author Software Architecture Metrics ch. 9; creator of Sonargraph; structural metrics (Propagation Cost, Relative Cyclicity, SDI, Maintainability Level, LCOM4, Component Rank); six golden rules; structural erosion as default outcome
Michael Keeling — Contributing author Software Architecture Metrics ch. 10; author of Design It!; Goal-Question-Metric (GQM) framework; measurement as alignment and coaching tool
John Ousterhout — Author of A Philosophy of Software Design; Stanford CS professor; creator of Tcl and Raft; deep modules, information hiding, and complexity management advocate
Nicole Forsgren — Co-author of Accelerate; PhD in MIS; DORA research programme; psychometric and statistical rigour applied to DevOps; four key metrics originator
Jez Humble — Co-author of Accelerate; co-author of Continuous Delivery; CI/CD, Lean, DevOps practitioner; DORA research programme
Betsy Beyer — Co-editor of Site Reliability Engineering; Google Technical Writer for SRE; cultural and documentary aspects of reliability
Chris Jones — Co-editor of Site Reliability Engineering; Google SRE on App Engine; platform-service and capacity-planning perspective
Jennifer Petoff — Co-editor of Site Reliability Engineering; Google SRE Programme Manager; training, on-call rotation design, postmortem culture
Niall Richard Murphy — Co-editor of Site Reliability Engineering; co-author of Reliable Machine Learning; Google SRE in Dublin; incident response, federation, SRE applied to ML systems
Benjamin Treynor Sloss — Wrote Ch. 1 of Site Reliability Engineering; VP Engineering at Google; originator of the term "Site Reliability Engineering"; creator of the error budget model
Gene Kim — Co-author of Accelerate; founder and CTO of Tripwire; co-author of The Phoenix Project and The DevOps Handbook; high-performing technology organisation researcher
Casey Rosenthal — Co-author of Chaos Engineering; built and managed Netflix's Chaos Engineering team; co-creator of the Principles of Chaos Engineering
Nora Jones — Co-author of Chaos Engineering; Netflix Chaos Engineering team; safety science and sociotechnical systems perspective
Chip Huyen — Author of AI Engineering; Stanford lecturer (CS 329S: ML Systems Design); ML systems and AI engineering specialist
Cathy Chen — Co-author of Reliable Machine Learning; ML systems practitioner; SRE approach to ML production operations
Kranti Parisa — Co-author of Reliable Machine Learning; ML engineering practitioner; data management and fairness
D Sculley — Co-author of Reliable Machine Learning; Google research scientist; coined "hidden technical debt in machine learning systems"
Todd Underwood — Co-author of Reliable Machine Learning; SRE practitioner; applying SRE discipline to ML training and serving pipelines