Choosing Architecture & SDLC
This page is a decision aid. Given requirements — team size, domain complexity, latency, consistency, release cadence, compliance — pick an architecture style and an SDLC model that fit. No table replaces judgment, but tables prevent pattern tourism.
Always write the drivers first (Requirements), then consult these matrices, then record the choice as an ADR (Best Practices).
info
| Input | Questions to answer |
|---|---|
| Team size & topology | One team or many? Autonomy needed? |
| Domain complexity | CRUD or rich invariants? Boundary clarity? |
| Consistency | Strong ACID across entities? Eventual OK? |
| Latency / scale | p95 targets? Spiky vs steady? Multi-region? |
| Release cadence | Daily deploys? Quarterly audited releases? |
| Compliance | Traceability? Data residency? PCI/HIPAA? |
| Ops maturity | CI/CD, on-call, observability ready? |
| Budget / time | Runway for platform investment? |
| Situation | Prefer | Avoid |
|---|---|---|
| ≤2 teams, evolving product | Modular monolith + hexagonal | Microservices |
| Clear domains, many teams, mature platform | Microservices on bounded contexts | Single shared DB |
| Need vendor/UI swap, rich domain | Hexagonal / Clean | Framework-entangled domain |
| Simple CRUD, audit wants layers | Layered modular app | Event sourcing |
| Fan-out integration, async workflows | EDA (+ modular or services) | Sync call spaghetti |
| Divergent reads + audit trail Must | CQRS ± ES on subdomain | Global ES everywhere |
| Spiky load, event glue, cost sensitive | Serverless handlers | Always-on overprovision |
| Hard real-time low latency always | Always-on tuned services | Naive FaaS on critical path |
| Situation | Prefer | Notes |
|---|---|---|
| Fixed scope, heavy regulation | Waterfall gates / hybrid | Still prototype risks early |
| Product discovery, weekly learning | Scrum or Kanban + DevOps | Strong DoD |
| Interrupt-driven ops/platform | Kanban | WIP + flow metrics |
| Need safe frequent production change | DevOps / continuous delivery | CALMS, not only tools |
| Marketing release trains + eng agility | Hybrid trains + CD | Flags decouple release/deploy |
Startup SaaS
Modular monolith + hexagonal + Scrum/Kanban + CI/CD. Extract later with evidence.
Regulated fintech core
Modular monolith or few services + strict ADRs + gated Agile/Waterfall hybrid + traceability.
Multi-team marketplace
Microservices on clear contexts + platform team + DevOps + contract tests.
Internal automation / glue
Serverless + event triggers + Kanban for request flow.
Analytics-heavy product
CQRS read models + EDA from core write models + DevOps for projection deploys.
- 1. List Must NFRs and constraints on a whiteboard.
- 2. Score options (monolith, services, EDA, serverless) against each Must.
- 3. Eliminate options that fail a Must.
- 4. Among survivors, prefer lower complexity / higher reversibility.
- 5. Draft ADR with alternatives and revisit triggers.
- 6. Pick SDLC that matches uncertainty and compliance.
- 7. Schedule a revisit date (e.g., after 3 months metrics).
| 1 | | Driver (Must) | Modular monolith | Microservices | Serverless | |
| 2 | |-------------------------|------------------|---------------|------------| |
| 3 | | Team of 6 | ✓ | ✗ | ✓ | |
| 4 | | Strong checkout ACID | ✓ | ~ | ~ | |
| 5 | | Deploy 10x/day | ✓ with CD | ✓ | ✓ | |
| 6 | | Audit trail on ledger | ~ (+audit table) | ~ | ~ | |
| 7 | Choice: modular monolith; revisit if team > 3 streams |
Architecture is not permanent. Revisit when:
- Team count or topology changes significantly.
- An NFR repeatedly burns SLO/error budgets.
- Release coupling blocks independent value streams.
- Compliance scope expands (new certification).
- Cost model breaks (cloud bill or engineering time).
- Copying Netflix/Amazon architecture without their scale or platform investment.
- Choosing microservices to "force modularity" — modularity is cheaper in-process first.
- Picking Scrum while stakeholders refuse to attend reviews — process without feedback.
- Ignoring ops maturity — distributed styles need paved roads first.
- Optimizing for hypothetical hypergrowth while missing near-term delivery.
- Never writing ADRs — decisions evaporate; new hires re-litigate forever.
- Treating the choosing table as destiny — context beats slogans.
danger
| If you only remember one thing… | Do this |
|---|---|
| Default structure | Modular monolith |
| Default process (product) | Agile + DevOps practices |
| Default documentation | ADRs + C4 context/container |
| Default evolution | Extract on evidence, not hype |
| Default test of readiness | Can you state the Must NFRs? |
Scenario A — 5 engineers, B2B SaaS
Drivers: fast learning, one team, moderate domain complexity, weekly deploys. Choice: modular monolith + hexagonal ports for billing + Kanban/Scrum + CI/CD. Defer microservices.
Scenario B — 6 stream teams, marketplace
Drivers: independent deploy, clear domains (search, checkout, sellers). Choice: microservices on those seams + platform team + DevOps + contract tests. Avoid shared DB.
Scenario C — Medical device companion app
Drivers: traceability, fixed safety requirements, audited releases. Choice: gated hybrid SDLC + modular monolith with strict ADRs + layered evidence packages.
Scenario D — Spiky image processing
Drivers: burst traffic, cost control, async jobs. Choice: serverless workers on queue + object storage + Kanban for ops requests; API monolith for control plane.
Notice each scenario starts from drivers, not from a favorite pattern. When you present a recommendation, lead with the same structure: drivers → options → choice → risks → revisit triggers.
| Architecture \ Process | Waterfall-ish | Scrum | Kanban | DevOps CD |
|---|---|---|---|---|
| Modular monolith | OK if gated | Excellent default | Excellent | Excellent |
| Microservices | Hard without automation | Needs contract focus | Good for platform | Nearly required |
| EDA | Document sagas well | Slice vertically | Good for flow | Observability Must |
| Serverless | Rare fit | Works | Works | IaC + CI required |
Community
Get help on Slack, Discord or VIP
Stuck on a guide? Join the community and ask.