ADR-T-006
## 초기 단계에서는 CQRS 및 마이크로서비스를 도입하지 않고 단일 백엔드 구조를 유지한다
ADR ID: ADR-T-006
상태: Accepted
작성일: 2026-03-02
작성자: YSY
관련 ADR: ADR-T-001
1. 배경 (Context)
플랫폼은 다음 특성을 가진다:
슬롯, 예약, 사용 확정, 제재 등 명확한 도메인 분리 가능
트랜잭션 중심 로직 존재
향후 확장 시 서비스 분리 가능성 존재
이러한 특성은 CQRS(Command Query Responsibility Segregation)나
마이크로서비스 아키텍처 도입을 유혹한다.
그러나 현재는:
1인 개발
MVP 단계
지역 밀도 검증 전
트래픽 불확실
이다.
아키텍처를 조기에 분리할 경우:
복잡도 증가
배포 및 디버깅 비용 증가
DevOps 부담 증가
실제 필요성이 검증되지 않은 상태에서 구조 고착 위험
이 존재한다.
2. 결정 (Decision)
초기 단계에서는 CQRS를 도입하지 않는다.
마이크로서비스로 분리하지 않는다.
단일 데이터베이스(PostgreSQL) + RPC 중심 구조를 유지한다.
Command와 Query는 코드 레벨에서만 분리하고,
물리적 서비스 분리는 수행하지 않는다.
3. 대안 (Alternatives Considered)
대안 A: 초기부터 CQRS 도입
설명
Command와 Query 모델을 분리하고, 읽기 전용 뷰/리포지토리 별도 구성
장점
확장성 우수
읽기/쓰기 최적화 가능
단점
구조 복잡도 증가
개발 속도 저하
운영 부담 증가
채택하지 않은 이유
MVP 단계에서 과설계에 해당한다.
대안 B: 마이크로서비스 아키텍처
설명
예약/슬롯/제재/결제 등 서비스 단위 분리
장점
서비스 독립 배포 가능
확장 유연성
단점
네트워크 복잡도 증가
트랜잭션 처리 어려움
DevOps 리소스 필요
채택하지 않은 이유
현재 트래픽과 팀 규모에 부적합하다.
대안 C: 모듈형 단일 구조 (채택)
설명
단일 DB + 단일 백엔드 구조 유지하되,
코드 레벨에서 도메인 모듈 분리
장점
복잡도 낮음
추후 분리 가능성 유지
MVP 속도 확보
단점
- 대규모 확장 시 재설계 필요
채택 이유
현재 단계에 가장 적합하다.
4. 결과 (Consequences)
긍정적 결과
개발 속도 향상
배포 단순화
디버깅 용이
트랜잭션 일관성 유지
부정적 결과
향후 확장 시 구조 재정비 필요
단일 DB에 의존
고트래픽 상황에서 스케일링 제약 가능
5. 영향 범위 (Impact)
기술
Supabase 단일 프로젝트 구조 유지
RPC 중심 트랜잭션 처리
코드 레벨 모듈 분리 유지(슬롯/예약/제재 등)
운영
서비스 간 네트워크 장애 리스크 없음
단일 장애 지점(Single Point of Failure) 존재
확장
- 일정 트래픽 도달 시 분리 전략 필요
6. 재검토 조건 (Revisit Conditions)
다음 조건 중 하나 이상 충족 시 재검토:
서울 전체 밀도 확보 및 DAU 급증
읽기 트래픽과 쓰기 트래픽의 명확한 병목 발생
분석/리포트 서비스가 실시간 운영 로직과 충돌
팀 규모 확대(백엔드 전담 인력 확보)