프로젝트를 진행할 때마다 패키지를 나눠 프로젝트를 구조화하는데 많은 예시들에서 Model
, Controller
, Service
와 같이 기능적인 측면에서 패키지를 구조화하는 경우를 많이 보았다.
또 다른 경우는 도메인적인 측면에서 패키지를 구조화하는 경우를 볼 수 있었다. 예를 들어 게시판을 만든다고 생각해볼 때,
Board
: 게시글
User
: 사용자
이와 같이 Board와 User 라는 도메인에 맞춰 기능을 포함하도록 구조화되어 있었다.
그렇다면 어떤 방식이 더 나은 방식인 것인가?
이와 관련해서 서칭하던 중 인프런에 비슷한 질문이 있어 참고해 결론을 낼 수 있었다
https://www.inflearn.com/questions/7214
회사마다 팀마다 패키지 정책이 다를 수 있다는 것
마이크로 서비스 도입의 영향으로 도메인으로 설계하는 경우가 많아짐
스프링 공식 예제 프로젝트 petclinic 또한 도메인 패키지 구조이다
계층형 아키텍처를 고려하다보니 Model
, Controller
, Service
구조로 설계하게 되었다.
즉, 필요에 따라 그에 맞는 방식으로 패키지를 설계하면 될 것 같다는 결론이다. 패키지 구조 설계에 대해 답은 정해져 있지 않다는 결론
비슷한 고민을 하는 사람들에게 도움이 됐으면 한다