Spring/Spring Boot

[Spring Boot] 패키지 구조 : 계층형 vs 도메인형

JoonYong 2024. 2. 12. 22:48

1. MVC 패턴(계층형)

 

Spring MVC 패턴을 사용할 때 패키지를 model, view, controller로 나누는 것은 일반적인 방법 중 하나입니다.

이런 방식으로 패키지를 구성하면, 각 패키지의 역할이 명확해지고 코드의 관리가 쉬워지는 장점이 있습니다.

그러나 반드시 이런 방식으로 패키지를 나눠야 하는 것은 아닙니다. 패키지 구조는 프로젝트의 요구사항, 팀의 코딩 스타일, 유지보수의 편의성 등 여러 요인을 고려하여 결정하게 됩니다.

 


2. 스프링 부트 패키지 구조: 계층형 vs 도메인형

 


3. 계층형 패키지 구조

계층형 패키지 구조는 이름에서 알 수 있듯이, 프로젝트의 계층에 따라 패키지를 구성하는 방식입니다. 일반적으로 컨트롤러, 서비스, 리포지토리 등의 계층으로 패키지를 나눕니다.

com.example.myapp
├── controller
├── service
└── repository

이 구조의 장점은 코드의 계층을 명확하게 파악할 수 있다는 것입니다. 하지만 프로젝트가 커질수록, 각 계층 내부에서도 패키지를 나누는 것이 필요하게 됩니다.

 


4. 도메인형 패키지 구조

도메인형 패키지 구조는 비즈니스 로직의 주요 도메인에 따라 패키지를 구성하는 방식입니다. 예를 들어, 사용자, 주문, 상품 등의 도메인으로 패키지를 나눕니다. 각 도메인 패키지 내부에는 그 도메인과 관련된 컨트롤러, 서비스, 리포지리 등이 위치합니다.

com.example.myapp
├── user
│   ├── controller
│   ├── service
│   └── repository
├── order
│   ├── controller
│   ├── service
│   └── repository
└── product
    ├── controller
    ├── service
    └── repository

이 구조의 장점은 특정 도메인과 관련된 모든 코드를 한 곳에서 찾을 수 있다는 것입니다. 이는 코드의 가독성을 높이고, 도메인 별로 작업 분리하는 데 유리합니다.

 


결론

계층형과 도메인형 패키지 구조 모두 장단점이 있으며, 프로젝트의 규모, 팀의 작업 방식, 비즈니스 요구 사항 등에 따라 적합한 구조를 선택하면 됩니다. 어떤 구조를 선택하든 중요한 것은 일관성을 유지하는 것입니다. 패키지 구조가 일관성 있게 유지되면, 코드를 이해하고 유지보수하는 데 큰 도움이 됩니다.