✅ 1. 변경 배경
기존 프로젝트는 controller / service / repository 중심의 계층형(Layered) 아키텍처를 사용하고 있었으며, 개인 학습 단계에서는 무리가 없었으나 프로젝트가 확장될수록 다음과 같은 문제점이 드러남:
- 도메인별 코드가 여러 패키지에 흩어져 구조 파악이 어려움
- 서비스/컨트롤러가 비대해지며 책임이 모호해짐
- 기능 추가/삭제 시 영향 범위가 넓어 유지보수 부담 증가
- 팀 단위 개발 시 충돌 가능성 증가
- 전반적인 유지보수 난이도 상승
이러한 문제를 해결하기 위해 **도메인 중심 아키텍처(Domain-Oriented Architecture)**로 구조를 개편함.
✅ 2. 변경된 아키텍처 구조
com.creepereye.ecommerce
├── global
│ ├── config
│ ├── exception
│ │ ├── handler
│ │ ├── custom
│ │ └── error
│ ├── security
│ │ ├── filter
│ │ ├── handler
│ │ ├── provider
│ │ └── util
│ └── redis
└── domain
├── auth
│ ├── controller
│ ├── service
│ ├── dto
│ ├── entity
│ ├── repository
│ └── jwt (선택)
├── user
│ ├── controller
│ ├── service
│ ├── dto
│ ├── entity
│ └── repository
├── product
├── order
└── cart
✅ 3. 변경 내용 요약
✅ 3-1. 비즈니스 로직을 도메인 단위로 재구성
auth, user, product, order, cart 등
- 각 도메인 내부에 controller/service/repository/entity/dto를 배치하여 응집도 강화
✅ 3-2. 공통 기능을 global 영역으로 이동
- Security(JWT, 필터, 핸들러)
- Exception(GlobalExceptionHandler, ErrorCode)
- Config(Spring 설정)
- Redis 인프라
✅ 3-3. JWT/Redis 로직을 서비스에서 분리
- 인증/인가 로직은
global/security
- 캐시/토큰 저장은
global/redis
- 서비스는 오직 비즈니스 로직만 담당하도록 역할 명확화
✅ 4. 장점
✅ 4-1. 유지보수성 향상
- 도메인별 코드가 모여 있어 구조 파악이 쉬움
- 기능 추가/삭제 시 영향 범위 최소화
✅ 4-2. 확장성 증가
- 도메인 단위로 모듈화 가능
- MSA 전환 시에도 유리
✅ 4-3. 팀 개발에 최적화
- 도메인 단위로 작업 분리 가능
- 충돌 및 의존성 문제 감소
✅ 4-4. 코드 가독성 상승
- “이 기능은 어디에 있어야 하는가?”가 명확해짐
- 보안/예외/설정은 global
- 비즈니스 로직은 domain
✅ 4-5. 테스트 용이
- 도메인 단위로 테스트 가능
- 보안/인프라 로직과 분리되어 단위 테스트가 간단해짐
✅ 5. 단점
❌ 5-1. 초기 설계 비용 증가
❌ 5-2. 작은 프로젝트에서는 과할 수 있음
- 도메인 수가 적으면 구조가 복잡해 보일 수 있음
❌ 5-3. 팀원 간 컨벤션 필요
✅ 6. 결론
이번 아키텍처 개편을 통해
✅ 유지보수성
✅ 확장성
✅ 가독성
✅ 테스트 용이성
모두 크게 향상되었으며, 앞으로 기능을 추가할 때도 도메인 중심으로 확장해 나갈 예정임.
✅ 1. 변경 배경
기존 프로젝트는
controller / service / repository중심의 계층형(Layered) 아키텍처를 사용하고 있었으며, 개인 학습 단계에서는 무리가 없었으나 프로젝트가 확장될수록 다음과 같은 문제점이 드러남:이러한 문제를 해결하기 위해 **도메인 중심 아키텍처(Domain-Oriented Architecture)**로 구조를 개편함.
✅ 2. 변경된 아키텍처 구조
✅ 3. 변경 내용 요약
✅ 3-1. 비즈니스 로직을 도메인 단위로 재구성
auth,user,product,order,cart등✅ 3-2. 공통 기능을 global 영역으로 이동
✅ 3-3. JWT/Redis 로직을 서비스에서 분리
global/securityglobal/redis✅ 4. 장점
✅ 4-1. 유지보수성 향상
✅ 4-2. 확장성 증가
✅ 4-3. 팀 개발에 최적화
✅ 4-4. 코드 가독성 상승
✅ 4-5. 테스트 용이
✅ 5. 단점
❌ 5-1. 초기 설계 비용 증가
❌ 5-2. 작은 프로젝트에서는 과할 수 있음
❌ 5-3. 팀원 간 컨벤션 필요
✅ 6. 결론
이번 아키텍처 개편을 통해
✅ 유지보수성
✅ 확장성
✅ 가독성
✅ 테스트 용이성
모두 크게 향상되었으며, 앞으로 기능을 추가할 때도 도메인 중심으로 확장해 나갈 예정임.