계좌 등록/삭제, 입금/출금/이체, 거래내역 조회를 제공하는 송금 서비스 과제를 구현하는 프로젝트입니다.
- 회원가입
POST /members - 로그인
POST /login - 멱등키 발급
POST /idempotency-keys - 계좌 등록/삭제
- 출금
POST /withdrawals/{idempotencyKey}(일 한도 1,000,000원) - 입금
POST /deposits/{idempotencyKey} - 이체
POST /transfers/{idempotencyKey}(수수료 1%, 일 한도 3,000,000원) - 거래내역 조회
GET /transfers?accountId=...(최신순) - 계좌 이체 알림(SSE)
GET /notification/subscribe
- 전체 조합 로컬 실행:
./gradlew :aggregate:bootRun - 회원 도메인 로컬 실행:
./gradlew :member:application:bootRun - 계좌 도메인 로컬 실행:
./gradlew :account:application:bootRun - 송금 도메인 로컬 실행:
./gradlew :transfer:application:bootRun - 로컬 공용 RabbitMQ는 루트 compose.yml을 Spring Docker Compose support로 띄운다.
aggregate,account:application,transfer:application의bootRun은 lifecycle을start-only로 사용하므로, 애플리케이션 종료 시 RabbitMQ는 자동으로 내려가지 않는다.
aggregate는 여러 도메인을 한 번에 띄워 보는 로컬 조립용 runnable application입니다.- 정규 API 통합 테스트는
member:application,account:application,transfer:application이 각각 소유합니다. - 로그인과 회원 인증 책임은
member도메인이 소유합니다.