Layer vs Domain 🤔
controller, Service, dto 같은 아키텍트적인 계층형 기반으로 구성된 패키지 구조
장점
- 프로젝트에 이해가 낮아도 전체적인 구조를 빠르게 파악가능
- 작성하고자 하는 계층이 명확할 경우 빠르게 개발이 가능
단점
- 각 레이어별로 수십개의 클래스들이 존재하여 코드 파악이 어려움
- Layer를 기준으로 분리했기 때문에 코드의 응집력이 떨어짐
도메인들이 최상단 루트로 구성된 패키지 구조
장점
- 관련된 코드들이 응집해 있음
- 디렉토리 구조를 통해 도메인을 이해할 수 있음
단점
- 도메인 지식 없이 이해하기 어려움
- 각 계층을 구분하기 위한 논의가 필요
member와 관련되어 사용되는 객체들로 구성
global은 프로젝트 전방위적으로 사용되는 객체들로 구성
근데 사실 아직 나는 Domain 구조로 개발을 진행해본적은 없다. 처음에 Layer 구조를 이용해서 개발하다보니 편해져서 같은 구조를 계속 지녔던 것 같은데 Domain 구조를 공부하다보니 진행했거나 하고있는 프로젝트에서 Domain 구조로 전환하게되면 어떻게 바뀔지 생각하고 그려보면서 좀 더 다르게 접근 할 수 있을 것 같아서 다음 프로젝트를 진행하게 되면 Domain 구조로 개발을 한번 해보고 싶다 🥹