Why Your Architecture Slicing is Wrong (MVC vs Vertical)

제목

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

아키텍처 패턴

대상자

  • 웹/앱 개발자, 소프트웨어 아키텍트
  • 중급 이상의 코드베이스 설계 경험자

핵심 요약

  • MVC 아키텍처는 수직 슬라이싱이 아닌 수평 슬라이싱 기반으로 설계되어 기능별 모듈 간 높은 결합도와 낮은 일관성을 유발
  • 수직 슬라이싱 아키텍처는 기능 단위로 코드를 분리하여 하나의 디렉토리 내에서 엔드투엔드 로직 관리 가능
  • Next.js 같은 프레임워크에서는 src/features/ 디렉토리에 기능별 컴포넌트, 컨텍스트, 액션을 모듈화하여 사용 가능

섹션별 세부 요약

1. MVC 아키텍처의 한계

  • 수평 슬라이싱은 기술 계층(models/, views/, controllers/)으로 나뉘어 기능 추가 시 다중 디렉토리 이동 필요
  • 코드 변경 시 영향 범위 추적 어려움, 모듈 간 결합도 증가
  • MVC는 CRUD 중심 앱에 유리하지만, 복잡한 기능 구현 시 설계적 한계 발생

2. 수직 슬라이싱 아키텍처의 장점

  • 기능별 디렉토리(features/feature-a/)에서 모델, 컨트롤러, 뷰 로직을 엔드투엔드로 통합
  • 결합도 감소일관성 향상으로 개발자 생산성 향상
  • Next.js에서는 src/app/page.tsxsrc/features/의 기능 모듈을 모듈화된 컴포넌트로 호출

3. 수직 슬라이싱의 실무 적용

  • 공통 로직(src/database/, src/components/)은 기능별 모듈과 분리하여 재사용
  • 특정 기능(create-order, login-form)은 index.tsx, context.ts, actions.ts 등으로 구성
  • 하나의 기능에 필요한 로직이 단일 디렉토리 내에 집중되어 관리 용이

결론

  • MVC를 수직 슬라이싱으로 전환하여 기능별 모듈을 통합하고, Next.js 같은 프레임워크에서 src/features/ 디렉토리 사용을 권장
  • 수직 슬라이싱은 코드베이스의 가독성, 유지보수성, 확장성을 드라마적으로 개선하는 설계 패턴임