ADR-004 operator·mcp 운영 지원 서브시스템 격리
- 상태: 채택
- 날짜: 2026-07-03
- 근거: PRD FR-3 / TDD “컨텍스트 맵”, “관계 유형·의존 방향”
맥락
operator(내부 운영자 인박스)·mcp(AI 에이전트 토큰·감사·이상탐지)가 코어 거래 도메인과 같은 레벨 패키지로 나열돼 있다. 이 둘은 고객 거래가 아닌 내부 운영을 담당하며, 코어와 변경 주기·데이터 소유가 독립적이다.
결정
operator(지원)·mcp(서브시스템)를 운영 지원으로 분리하고, 코어와의 의존 방향을 아래로 규정한다.
- 코어 → operator/mcp: 도메인 이벤트 단방향만 허용 (예: 코어 이상 징후 →
McpAnomalyEventWorkerAFTER_COMMIT, 운영 알림 → operator inbox). - operator/mcp → 코어: 동기 호출 전면 금지. 실측상
application/operator·application/mcp는 타 도메인을 import하지 않는다(격리 확인). - operator·mcp는 자체 Aggregate Root(OperatorInboxNotification / McpToken·McpAuditLog·McpAnomalyEvent)와 자체 저장소(MySQL)를 소유한다.
근거
- 독립 라이프사이클: AI 에이전트 토큰·이상탐지는 고객 거래와 무관하게 변경. 코어에 결합하면 운영 기능 변경이 거래 흐름을 흔든다.
- 코어 안정성 보호: 지원·서브시스템이 코어를 동기 호출하면 코어가 운영 기능에 끌려다닌다. 이벤트 단방향으로 결합도 최소화.
- 실측 정합: 현재 코드가 이미 이 격리를 지킴 → 규칙은 회귀 방지.
대안 (미채택)
- operator/mcp를 코어에 흡수: 변경 주기 상이·독립 데이터 소유로 흡수 부적합. 코어 비대화.
- operator/mcp 완전 별도 서비스(MSA) 분리: Non-Goals(모놀리스 유지) 위반. 지금 규모에 과함.
영향
- FR-7 ArchUnit R3가 “지원/서브시스템 → 코어 동기 의존 금지”를 강제.
- 후속 ⑧ 지능형 장애 알림이 mcp 이상탐지·operator 인박스를 이벤트 소비 방향으로 확장할 때 이 규칙을 인용.