본문 바로가기

EngleBee 프로젝트

[트러블슈팅] 프로젝트 구조 계층형 구조 vs 도메인형 구조

728x90

 

- 계층형 구조와 도메인형 구조 프로젝트 구조중 하나를 선택해야 했습니다.

 

계층형 구조

- Controller
	-Student
    -Teacher
    -Admin
 -Service
 	-Student
    -Teacher
    -Admin
 -Repository
 	-Student
    -Teacher
    -Admin

 

장점

-  패키지 구조만 봐도 전체적인 구조를 보기 편합니다.

- 계층별 응집도가 올라갑니다.

단점

- 규모가 커지면 여러 목적의 클래스들이 모여서 구별하기 힘듭니다.

- 도메인별 응집도가 낮습니다.

 

도메인형 구조

Student
	-controller
    -Service
    -Repository
Teacher
	-Controller
    -Service
    -Repository
Admin
	-Controller
    -Service
    -Repository

 

장점

- 도메인과 관련된 변경이 필요할때, 도메인 관련된 패키지만 보면 됩니다.

- 유스케이스별로 세분화할 수 있습니다.

 

단점

- 프로그램의 전반적인 흐름을 파악하기 어렵습니다.

- 어느 패키지에 둘지 애매한 클래스가 생길 수 있습니다.

 

규모가 작고 도메인이 적은 경우 계층형 구조를 사용하면 좋습니다.

규모가 크고 도메인이 많은 경우 도메인형 구조를 사용하면 좋습니다.

 

이번 프로젝트는 도메인형 구조로 선택하였습니다.

유저별로 클래스를 나누게 되었습니다. General 패키지에는 유저 공통으로 기능하는 클래스를 넣습니다. Global 패키지에는 도메인 전역으로 사용되는 클래스들을 넣기로 하였습니다. Common 패키지에는 Config와 같은 개발 설정을 넣기로 하였습니다