728x90
320x100
프로젝트 패키지 구조는 크게 레이어 중심과 도메인 중심이 있다. 어떤 차이점이 있고 어떨 때 어떤 식으로 하는 것이 좋을지 정리.
📦 레이어 중심 구조 (Layered)
- 기술 레이어 단위로 패키지 분리
com.bookbookclub
├── controller
├── service
├── repository
├── entity
├── dto
✔️ 장점
- 익숙하고 직관적
- 빠르게 개발 가능
❌ 단점
- 기능별로 뭉쳐있지 않아서 코드 이동 잦음
- 규모가 커질수록 파일 찾기 불편해짐
작고 단순한 프로젝트, 익숙한 구조로 빠르게 시작하고 싶을 때. 대규모보단 소규모에 적합.
📦 도메인 중심 구조 (Domain-based)
- 도메인별로 관련 코드 묶기
com.bookbookclub.domain
├── user
│ ├── controller
│ ├── service
│ ├── repository
│ ├── dto
│ └── entity
├── post
│ ├── controller
│ ├── service
│ └── entity
✔️ 장점
- 도메인 단위로 묶여 있어서 응집도 ↑
- 다른 도메인과 격리 잘됨 → 유지보수, 확장성에 유리
- MSA 나눌 때도 구조 그대로 사용 가능
❌ 단점
- 처음 보면 생소할 수 있음
- 작은 프로젝트에는 오히려 복잡해 보일 수 있음
도메인이 많거나, 확장 가능성을 고려한 구조. 실무/클린 아키텍처에 가깝다
728x90
320x100
'💻 하나씩 차곡차곡 > Back-end' 카테고리의 다른 글
[Spring Security] BCryptPasswordEncoder란? (정의, 사용하는 이유, 사용법 등) (0) | 2025.04.18 |
---|---|
[Spring/JPA] Auditing 기능이란? (정의, 사용법, 사용하는 이유 등) (0) | 2025.04.18 |
[Spring] @Builder란? (Feat. 정적 생성 메서드) (0) | 2025.04.18 |
[Spring] SQL 로그 출력 방법 총정리 (feat. show-sql, format_sql, log4jdbc,p6spy) (0) | 2025.04.16 |
인텔리제이(IntelliJ)에서 롬복(Lombok) 활성화 하는 방법 (0) | 2025.04.04 |