프로젝트에서 사용한 패키지 구조에 대해 간단하게 포스팅 해보려고 합니다
계층형 패키지 구조의 예시이다.
서비스 계층에 따라 패키지를 설계하는 방식이다.
com
ㄴ example
ㄴ nuribank
ㄴ config
ㄴ controller
ㄴ domain
ㄴ repository
ㄴ service
ㄴ security
ㄴ exception
코드랩은 우선 멀티 모듈로 진행한 프로젝트이다.
멀티 모듈은 전에도 다룬 내용이 있어 간단하게 말하자면, 하나의 서비스나 프로젝트를 여러 개의 모듈로 나누어 개발하는 것이다.
https://velog.io/@yookyungmin/Gradle%EC%9D%B4%EB%9E%80
사진과 같이 api, common, intergration으로 분리되어 있고
api 패키지는 계층형 구조로 되어 있고 common 패키지는 엔티티를 정의한 곳이다. intergration은 s3 관련, discordwebhook 관련된 내용들이 있다.
일반적으로 장단점은
이라한다. 멀티 모듈도 처음, 계층형 패키지 구조도 처음이지만 새로운 패키지구조로 경험을 할수 있어서 좋았습니다.
아래의 예시처럼 도메인 별로 나누는 구조입니다.
com
ㄴ example
ㄴ nuribank
ㄴ domain
| ㄴ account
| | ㄴ controller
| | ㄴ dto
| | ㄴ entity
| | ㄴ exception
| | ㄴ repository
| | ㄴ service
| ㄴ user
| | ㄴ controller
| | ㄴ dto
| | ㄴ entity
| | ㄴ exception
| | ㄴ repository
| | ㄴ service
| ...
ㄴ global
ㄴ auth
ㄴ common
ㄴ config
ㄴ error
ㄴ infra
ㄴ util
아래 사진의 프로젝트의 이름은 딜리이고 도메인 패키지 구조로 프로젝트를 진행 하였습니다.
해당 프로젝트를 도메인 구조로 진행 한 이유는 다수결 투표로 채택 되었는데 투표했을 당시에 도메인별로 패키지 구조가 나누어져 있는게 깔끔해 보였습니다.
도메인 패키지 구조의 장단점에 대한 전반적인 의견은
이러한데 내 생각엔 도메인별로 나누어져 있어서 직관적이고 개발을 할 때나 복습할때도 쉽게 파악을 할수 있었던거 같다
어디 블로그에서나 말하듯 도메인 패키지구조나 계층형 패키지 구조나 뭐가 더낫다 정답이 없는거 같긴 합니다
취업한 회사의 패키지 구조를 따라야할뿐,,
요즘은 MSA(마이크로 서비스 아키텍쳐) 영향으로 도메인 패키지구조를 많이 쓰는 추세라고 합니다.
참고
https://ksh-coding.tistory.com/96
https://gksdudrb922.tistory.com/271