패키지 구조란? (주변 사람들을 설득하기 위한 생각 정리)
먼저 패키지 구조에 대해 공부를 해보았다.
패키지의 구조
- 계층형 패키지 구조
- 도메인 패키지 구조(Domain-Driven Design)
계층형 패키지 구조란?
- 계층형으로 패키지를 설계하는 방식으로 모든 구조에 상관없이 각각 controller, service, repository, entity를 나누는 구조이다.
- 예시로는 밑과 같습니다.
도메인 패키지 구조(Domain-Driven Design)란?
- 도메인으로 패키지를 설계하는 방식으로는 말 그대로 Domain(Entity)별로 나누는 구조이다.
- 위 계층형 구조에서 나눈 controller, service, repository를 entity 기준으로 묶어서 나눈다는 것이다.
- 예시로는 밑과 같습니다.
개인적으로 생각한 Best 패키지 구조
- 제가 생각한 좋은 패키지의 구조란 도메인 패키지인 것 같습니다.
- 그 이유로는
- 계층형 같은 경우에는 controller, service, repository등을 묶게 되면 저희는 30개 이상의 클래스들이 XXXController, XXXService, XXXRepository 같은 패턴으로 나열되어 헷갈리게 되는 문제가 발생할 것 같습니다.
- User에 대한 도메인을 수정한다고 하면 계층형 구조에서는 Controller 폴더에서 UserController을 찾아 수정하고, Service 폴더에서 UserService를 찾아 수정하는 등등의 일을 해줘야 하는데 도메인 구조라면 UserController, UserService, UserRepository등이 모두 한 폴더안에 있기에 유지보수에 용이할 것 같습니다.
도메인 패키지 구조(Domain-Driven Design) 현업에서도 사용하는가?
- 위 질문에 대해서는 제가 답변 드리기 어려워서 인프런 강의에 질문을 인용했습니다.
- 답변은 백기선님이 해주셨습니다.
도메인 패키지 구조(Domain-Driven Design) 예시