해당 프로젝트는 SOPT 32th APPJAM 프로젝트의 kotlin + Spring Boot 적용 및 Architecutre 설계 프로젝트 입니다.
1.Project Info
2.Project Service Info
해당 프로젝트의 각 모듈은 CleanArchitecture 의 규칙을 이용합니다.
module-infrastructure
Clean Architecture 의 Interface Adapters 영역으로 실제 Web, UI, DB, ExternalInterface 와 연결되는 부분으로 설계하였습니다.
Framework 혹은 UI 와 같은 외부적인 요인을 내부 UseCase 에서 사용하는 모델로 변경하거나 혹은 그 반대의 어뎁터 역할로 설계하였습니다.
module-usecase
Clean Architecture 의 UseCase 영역과 동일한 역할을 수행하도록 설계하였습니다.
비즈니스 시나리오와 같은 수단을 구현하고 이를 수행하는 역할로 설계하였습니다.
module-domain
Clean Architecture 의 Entities 영역과 동일한 역할을 수행하도록 설계하였습니다.
도메인에 해당하는 로직을 구현하도록 설계하였습니다.
Kotlin 이외 의존성을 추가하지 않는 것을 목표로 설계하였습니다.
의존 방향
infrastructure -> usecase -> domain 의 방향으로 의존할 수 있도록 설계하였습니다.
내부에 존재하는 모듈은 외부의 의존하지 않으며 외부의 요청에 따라 동작할 수 있도록 DIP 를 적용하여 interface로 명시한 기능만을 수행할 수 있도록 구성하였습니다.
각 모듈의 변경이 다른 모듈의 변경을 최소화하고 테스트하기 용이하게 만들어 다양한 테스트 코드를 작성하기 위해 이와 같이 구성하게 되었습니다.