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 의존성 관리와 빌드 자동화 도구 사용 필수