8fc88ffc14
Build & Push / Pipeline Tests (push) Failing after 59s
Build & Push / Build & Push Docker Image (push) Has been skipped
Test / Type Check (all packages) (push) Failing after 51s
Test / API Unit Tests (push) Has been skipped
Test / Homepage Unit Tests (push) Has been skipped
Test / Carplace Unit Tests (push) Has been skipped
Test / Admin Unit Tests (push) Has been skipped
Test / Dashboard Unit Tests (push) Has been skipped
Test / API Integration Tests (push) Has been skipped
1.4 KiB
1.4 KiB
ADR-003 — Do not extract microservices until measurement gates pass
Status
Accepted (Phase 4 planning) — modular monolith remains the default
Context
The production-readiness plan and diligence review both forbid a microservices rewrite for its own sake. Phase 1 already isolated the notification/job worker process inside the same deployable (api-worker). Phase 4 candidates (payments/webhooks, notification worker as a separate service, media processing) are optional extractions only after Phase 3 load/ownership evidence shows a real bottleneck or blast-radius problem.
Decision
- Default: keep one API codebase + dedicated worker process(es) sharing the same package and schema.
- Do not create new deployable services for payments, webhooks, or media until all gates in
docs/ops/phase4-extraction-gates.mdare met for that candidate. - Prefer in-monolith hardening first: clearer module boundaries, queue isolation, separate worker replicas, object-storage media pipeline — without new network hops.
- Any approved extraction must ship with: ownership, SLO, independent deploy/rollback, contract tests, and dual-run evidence before cutting over.
Consequences
- Phase 4 work in-repo is gates, measurement templates, and module-boundary notes — not a service split.
- Claiming “we moved to microservices” without gate evidence is a non-goal (§11 of the readiness plan).