Spring Boot 프로젝트 구조 선택 가이드
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- Java/Spring Boot 개발자
- 초보자부터 중급 개발자까지
- 프로젝트 규모와 팀 구성에 따른 아키텍처 선택 필요
핵심 요약
- 모노리스 구조는 간단한 프로젝트에 적합하지만 확장성 부족
- 모듈형 구조는 대규모 팀/프로젝트에 유리하며 독립적인 테스트 가능
- 하екс라곤 아키텍처는 DDD(도메인 주도 설계)를 기반으로 유연성과 확장성 극대화
- 프로젝트 복잡도에 따라 구조 선택 (기본 → 모듈형 → 하екс라곤)
섹션별 세부 요약
1. **Basic/Monolithic Structure (모노리스 구조)**
- 파일 구조:
controller
,service
,repository
,model
계층 분리 - 특징:
DemoApplication.java
가 애플리케이션 진입점application.properties
로 환경 설정- 장점:
- 간단한 학습 곡선, 초반 개발 속도 빠름
- 단점:
- 대규모 프로젝트 시 모듈 간 의존성 혼란 발생
2. **Modular/Multi-Module Structure (모듈형 구조)**
- 프로젝트 구조:
common
(공통 DTO/Util),user-service
,order-service
,web
모듈 분리pom.xml
에서 모든 모듈 의존성 관리- 장점:
- 모듈별 독립적인 테스트/배포 가능
- 팀 협업 시 코드 유지보수성 향상
- 단점:
- 의존성 관리 복잡화, 빌드 프로세스 추가 오버헤드
3. **Hexagonal Architecture (하екс라곤 아키텍처)**
- 계층 구조:
domain
(도메인 로직),application
(비즈니스 로직),infrastructure
(JPA/REST 클라이언트),web
(컨트롤러)- 특징:
- DDD 원칙을 기반으로 도메인 중심 설계
- 외부 어댑터와의 분리로 변경에 유연한 설계
- 장점:
- 테스트 용이성 (모의 어댑터 사용 가능)
- 장기적인 유지보수성 강화
- 단점:
- 초기 학습 곡선 가파름, 설계 복잡성 증가
4. **구조 비교 표**
| 구조 | 적합 프로젝트 | 복잡도 | 유연성 | 팀 규모 |
|--------------|----------------|--------|--------|----------|
| Basic | 소규모/중간 | ⭐⭐⭐⭐ | ⭐ | 1-2인 |
| Modular | 중간/대규모 | ⭐⭐⭐ | ⭐⭐⭐⭐ | 3-10인 |
| Hexagonal | 대규모/기관 | ⭐⭐ | ⭐⭐⭐⭐⭐ | 5+인 |
결론
- 초기 프로젝트는 Basic 구조로 시작 후 복잡도 증가 시 Modular → Hexagonal로 이전
- 하екс라곤 아키텍처는 DDD 원칙을 준수하고, 모듈 간 의존성 분리가 필수
- 모듈형 구조는 Maven/Gradle 의존성 관리와 빌드 자동화 도구 사용 필수