피드로 돌아가기
Building software in C#: part 1 - history.
Dev.toDev.to
Backend

Layered Architecture에서 Vertical Slicing으로의 진화와 복잡성 제어

Building software in C#: part 1 - history.

Miroslav Thompson2026년 5월 28일6intermediate

Context

3-Layer Monolithic 구조의 오용으로 인한 비즈니스 로직 분산과 Onion Architecture 및 DDD 도입 과정에서의 과도한 추상화 발생. 특히 DDD/ES/CQRS 조합이 유일성 검증과 같은 단순 요구사항 처리 시 극심한 엔지니어링 오버헤드를 유발하는 한계 노출.

Technical Solution

  • 비즈니스 핵심 로직을 중심에 두는 Onion Architecture를 통한 기술 계층과 도메인 계층의 분리 시도
  • Event Sourcing 및 CQRS 도입으로 Command와 Query 책임 분리를 통한 도메인 순수성 확보 및 읽기 모델 최적화
  • MediatR 패턴을 활용하여 도메인을 단일 작업 단위(Unit of Work)의 평면적 리스트로 재구성함으로써 유지보수성 향상
  • Clean Architecture를 통한 관심사 분리(Separation of Concerns)의 현대적 재해석 및 코드 배치 구조 표준화
  • Vertical Slicing 기법을 적용하여 기술 계층 중심이 아닌 비즈니스 기능 중심의 폴더 구조로 변경하여 모듈성 극대화

- 단순 CRUD 위주의 서비스에 DDD/ES/CQRS 도입 전 엔지니어링 비용과 복잡도 검토 - 비즈니스 요구사항 변경이 잦은 경우 기술 계층 분리보다 Vertical Slicing 기반의 기능별 그룹화 고려 - MediatR와 같은 Mediator 패턴을 사용하여 요청 파이프라인을 단순화하고 도메인 로직의 예측 가능성 확보 - 아키텍처의 순수성보다 실제 제품 배포 속도와 유지보수 편의성을 우선한 실용적 설계 선택

원문 읽기