계층형 패키지 구조에서 도메인형 패키지 구조로 변경하기

후투티·2025년 3월 31일

계층형 패키지

원래의 패키지 구조는 이러했다.
계층형으로 Controller, Service, Repository, Dto, Entity 나누어 작업하고 있었다.

작은 프로젝트라면 확실히 계층형이 익숙하고 직관적이라 작업하기 편하다.
그런데 작업량이 많아지고 저 폴더들을 열어둔 채 작업을 하다보면
뭐가 어디에 박혀있는지 마우스 휠을 계속 오르락내리락 해야하는 귀찮음이 생긴다.
그리고 함께 작업하는 다른 개발자와 소통을 하다보면
그 자리에서 관련된 코드들을 까봐야하는 경우가 생기는데
관련된 곳을 찾아가기 위해 뭔가 헤매는 모습을 보이는 게 스스로 영 신통치 않아보였다.
"코드 좀 봐볼게요~ 서비스에서... NotificationService... 여기서 DTO.. DTO.. 아 여깄네" 이런 나의 모습이 보기 좋지 않다고 생각되었다.
(물론 인텔리제이에서는 컨트롤 + 마우스 왼쪽 클릭을 하면 바로 관련된 곳으로 이동이 됩니다)
또한 설정들이 추가되면서 계속 다른 폴더들이 생기게 되는데
이런 애들까지 같은 계층에 있게 되니 보기가 영 좋지 않았다. .


도메인형 패키지

그래서 도메인형으로 나눠봤다.

주요 기능들을 domain 패키지로 묶고 관련된 코드들을 모아 두었다.
그리고 전역적으로 쓰는 건 global 패키지로 두면 깔끔하게 정리가 된다.

열어보면 이런 모습이다.

응집도가 높아져 유지보수하거나 확장하기에 좋을 듯하다.
또한 협업을 할 때는 자신의 도메인 폴더 내에서 작업을 하기 좋아 협업시에도 좀 더 도움이 되지 않을까 생각한다.
그런데 폴더가 꽤나 많아져서 처음에는 오히려 더 복잡하게 느껴질 수도 있을 것 같다. 지금 사실 좀 어색한 상태;;;

뭐가 더 좋지?

더 좋은 건 없고.... 그냥 자신의 상황에 맞게 하는 게 옳은 듯 하다.
초기에는, 혹은 작은 프로젝트를 하게된다면 직관적인 계층형으로 하다가
기능이 많아지거나 큰 프로젝트를 하게 된다면 도메인형으로 변경하는 것도 괜찮을 것 같다.

profile
모르는 건 모른다고 하는 사람

0개의 댓글