MovieOn API는 다음 기술로 개발되었습니다.
- Kotlin 1.7.10
- SpringBoot 2.7.5
- Spring 5.3.23
- MySQL 8.0.30
모듈형 모노리스 아키텍처를 사용하여, 다음 모듈들로 프로젝트가 구성되어 있음.
모듈 | 설명 |
---|---|
server | 각 도메인 API 모듈을 통합하고 실행하는 모듈. 배포 시, 이 모듈을 사용. |
shared | 모든 모듈에서 의존하는 공통적인 의존성을 담은 모듈. |
order-api | 주문을 생성하고, 주문을 관리 및 처리하는 기능을 담당하는 모듈. |
user-api | 인증, 인가, 사용자 관리 기능을 담당하는 모듈. |
product-api | 상품을 관리하고 사용자에게 노출하는 기능을 담당하는 모듈. |
payment-api | 주문한 상품에 대한 결제 처리 및 취소를 담당하는 모듈. |
notification-api | 이메일, 푸시 등의 알림을 사용자에게 발송하고 알림 설정을 관리하는 모듈. |
query-api | 복잡한 조회와 관련한 요구사항을 처리하는 모듈(CQRS). |
batch-api | 배치 처리와 관련한 요구사항을 처리하는 모듈. |
각 도메인 API 모듈은 다음과 같은 하위 모듈로 구성되어 있음.
- 각 하위 모듈들은 계층형 아키텍처 형식을 따르며, interfaces를 기준으로 바로 아래 모듈만 의존해야 한다.
- Domain 모듈은 다른 어떠한 모듈도 의존하면 안된다. 다른 모듈이 Domain 모듈을 의존해야 한다.
- 예외적으로 infrastructure 모듈만 다른 모든 모듈을 의존할 수 있다.
- 예외적으로 특정 모듈은 하위 모듈 구성을 하지 않을 수 있고 혹은 다른 아키텍처 구조를 가져갈 수도 있다.
하위 모듈 명 | 설명 |
---|---|
user-interfaces | 유저 HTTP API에 대한 진입점을 제공하는 모듈. |
user-application | 유저의 비즈니스 로직 제어를 담당하는 모듈. |
user-domain | 유저의 비즈니스 로직이 담긴 핵심 모듈. |
user-infrastructure | 외부 구성요소, 프레임워크, 영속성을 DIP를 사용하여 역전시키고 동작가능하도록 하는 기반 모듈. |