Service Boundary Decision Matrix
Назначение
Документ помогает решить, в какой сервис или систему помещать новую функциональность. Если ответ неочевиден, задача не готова к реализации до обновления service/domain docs или ADR.
Основное Правило
Фича принадлежит сервису, который владеет инвариантом и source of truth. UI удобство, наличие похожей таблицы или “там уже есть endpoint” не являются причиной менять ownership.
Матрица
| Вопрос | Owner |
|---|---|
| Меняются деньги, balance, hold, deposit, withdrawal? | Accounting |
| Меняется game session, round, bet/win/rollback callback state? | Execution Gateway |
| Меняется каталог, provider game metadata, restrictions? | Catalog |
| Меняется KYC profile/document/verification? | Profile/KYC |
| Меняется AML decision, CDD/EDD, suspicious case? | Compliance/AML |
| Меняется self-exclusion, operational safety limit, safety intervention? | User Safety |
| Меняется incentive definition, user incentive, cashback, reward dispatch? | Incentive Store |
| Меняется promo code, referral attribution, partner commission/payout request? | Promo/Partner |
| Меняется tenant/brand setting, feature flag, rule set? | Platform Configuration |
| Нужен dashboard/report из событий и facts? | Analytics |
| Нужен manual queue/runbook/stuck process view? | Backoffice Ops Center |
| Нужен immutable evidence/export package? | Regulatory Evidence |
Когда Нужна Replica
Replica создается, если сервису нужно локально читать чужие данные для:
- UI projection;
- filtering/search;
- idempotent consumer processing;
- eventual consistency допустима.
Replica не используется для high-impact command decision, если freshness не гарантирована. Тогда нужен owner API lookup или fail-closed.
Когда Нужна Saga
Saga нужна, если бизнес-flow:
- затрагивает несколько owning services;
- не может быть завершен одной локальной transaction;
- требует retry/compensation/reconciliation;
- имеет долгие provider calls или ручные approvals.
Когда Нужен Новый Сервис
Новый сервис оправдан, если есть:
- отдельный source of truth;
- отдельные инварианты;
- независимый lifecycle и scaling profile;
- отдельные security/compliance boundaries;
- собственные events/API/operations.
Если это только helper logic без ownership, сначала используем building block, application policy или отдельный feature group внутри existing service.
DoR Для Спорной Фичи
- выбран owner service;
- перечислены downstream consumers;
- описаны events/API/snapshots;
- указаны freshness requirements;
- описан rollback/reconciliation;
- обновлены docs и при необходимости ADR.
Обратные ссылки
Автоссылки: где используется этот документ.
- runtime-context-diagram.md (1): Runtime Context Diagram
- adr (2): ADR-0018: Service Boundary Decision Matrix, ADR-0037: Service Landscape И Business Capabilities
- architecture-overview.md (1): Архитектура Pin