티스토리 뷰

현재 프로젝트는 Layered Architecture를 사용하고있고, 해당 아키텍처에 따라 패키지를 분리 했다.

패키지 구조에 대해서 크게 고민해보지 않고 관습적으로 아래와 같이 작성했다.

Layered Architecture
관심사에 따라 각 계층으로 분리하며, 각 계층은 자신의 하위 계층에만 의존하도록 설계된 아키텍처 패턴입니다
│─ controller
│─ service
│─ dto
│─ domain

 

사실 위와 같은 설계가 Layered Architecture를 위반하고있지는 않다.

하지만 dto는 각각에 계층별로 사용되기 때문에 프로젝트가 커지면서 패키지별로 위치를 변경 하기로 했다.

request, response dto 위치에 대해서 토론을 했었는데

그 당시에는 구조에 대해서 크게 고민을 해보지않고 팀원이 원하는 방향인 컨트롤러 하위에 두기로 했다.

│─ controller
      │─ dto
│─ service
│─ domain

 

하지만 service 계층에서 controller 계층에 있는 dto를 의존하고있기때문에 의존성 사이클이 생기는 문제가 있다.

│─ controller
│─ service
      │─ dto
│─ domain

 

내생각

그렇기 때문에 Layered Architecture 를 사용하는 프로젝트 구조에서는 
Controller와 Service 사이에서 사용되는 request, response dto는 Service 계층에 있어야한다고 생각한다.

 


https://github.com/woowacourse/service-apply/tree/master/src/main/kotlin/apply/application

지원 플랫폼은 DDD Layered Architecture 구조이다.

'내생각' 카테고리의 다른 글

JPA Attribute Converter 활용  (0) 2023.09.18
Spring Boot 3, Java 17 선택 이유  (0) 2023.09.10