제목
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
아키텍처 패턴
대상자
- 웹/앱 개발자, 소프트웨어 아키텍트
- 중급 이상의 코드베이스 설계 경험자
핵심 요약
- MVC 아키텍처는 수직 슬라이싱이 아닌 수평 슬라이싱 기반으로 설계되어 기능별 모듈 간 높은 결합도와 낮은 일관성을 유발
- 수직 슬라이싱 아키텍처는 기능 단위로 코드를 분리하여 하나의 디렉토리 내에서 엔드투엔드 로직 관리 가능
- Next.js 같은 프레임워크에서는
src/features/
디렉토리에 기능별 컴포넌트, 컨텍스트, 액션을 모듈화하여 사용 가능
섹션별 세부 요약
1. MVC 아키텍처의 한계
- 수평 슬라이싱은 기술 계층(
models/
,views/
,controllers/
)으로 나뉘어 기능 추가 시 다중 디렉토리 이동 필요 - 코드 변경 시 영향 범위 추적 어려움, 모듈 간 결합도 증가
- MVC는 CRUD 중심 앱에 유리하지만, 복잡한 기능 구현 시 설계적 한계 발생
2. 수직 슬라이싱 아키텍처의 장점
- 기능별 디렉토리(
features/feature-a/
)에서 모델, 컨트롤러, 뷰 로직을 엔드투엔드로 통합 - 결합도 감소 및 일관성 향상으로 개발자 생산성 향상
- Next.js에서는
src/app/
의page.tsx
가src/features/
의 기능 모듈을 모듈화된 컴포넌트로 호출
3. 수직 슬라이싱의 실무 적용
- 공통 로직(
src/database/
,src/components/
)은 기능별 모듈과 분리하여 재사용 - 특정 기능(
create-order
,login-form
)은index.tsx
,context.ts
,actions.ts
등으로 구성 - 하나의 기능에 필요한 로직이 단일 디렉토리 내에 집중되어 관리 용이
결론
- MVC를 수직 슬라이싱으로 전환하여 기능별 모듈을 통합하고, Next.js 같은 프레임워크에서
src/features/
디렉토리 사용을 권장 - 수직 슬라이싱은 코드베이스의 가독성, 유지보수성, 확장성을 드라마적으로 개선하는 설계 패턴임