잇쿡은 매번 식사시간마다 무엇을 먹을지 고민하거나, 자신만의 요리를 자랑하고 공유하고 싶은 유저들을 위해 도와주는 서비스 입니다.
DDD와 멀티모듈 구조를 사용했습니다. 각 도메인별 연관관계를 최대한 끊어내고 도메인 이벤트를 활용해 도메인간의 의존성을 줄였습니다. 도메인 모듈 -> 인프라 모듈의 의존성을 끊어내기 위해 DIP를 적용하여 의존성을 관리했습니다.
├── ItCook-Api
│ └── com.eatcook.api
│ └── <각 usecase 별 패키지> # 예: recipe, user
│ ├── controller
│ ├── dto
│ └── service # usecase 파사드 형태로 다른 도메인 서비스들의 반환값을 모아 응답값 생성
├── ItCook-Batch # 배치 서비스 애플리케이션 (예: 스케줄링 작업)
├── ItCook-Domain
│ └── com.eatcook.domain
│ ├── common # 공통 기능 (예: AOP, 도메인 이벤트 발행)
│ ├── configs # 도메인 설정
│ └── domains
│ └── <도메인> # 예: recipe, user
│ ├── adaptor # 도메인 리포지토리를 한 번 더 감싼 컴포넌트
│ ├── domain # 도메인 객체
│ ├── exception # 도메인별 에러 정의
│ ├── repository # 도메인 리포지토리
│ └── service # 도메인 서비스, 도메인 이벤트 핸들러
└── ItCook-infra # Redis, FeignClient(외부 API 호출), 메일(AWS SES), S3 등

Lead-Backend | Backend |
---|---|
조항진 | 서찬원 |
https://github.com/hangs0908 | https://github.com/Chanwon-Seo |