C# 아키텍처 마스터리 — 클린 아키텍처 vs 버티컬 슬라이스 아키텍처 (파트 6)
Source: Dev.to

개요
대부분의 아키텍처 토론은 잘못된 질문을 하기 때문에 실패합니다.
❌ 어떤 아키텍처가 더 나은가?
✅ 어떤 아키텍처가 내 문제와 팀에 최적화되는가?
이번 Part 6에서는 Clean Architecture와 **Vertical Slice Architecture (VSA)**를 현대 ASP.NET Core 시스템에서 실제로 사용되는 방식대로 비교합니다 — 교리로서가 아니라 엔지니어링 트레이드‑오프로서.
1. 클린 아키텍처가 최적화하는 것
Clean Architecture는 다음을 최적화합니다:
- 장기적인 유지보수성
- 비즈니스 규칙 격리
- 프레임워크 독립성
- 크고 진화하는 도메인
핵심 아이디어
정책이 세부 사항을 우선한다 – 비즈니스 로직은 중앙에 위치합니다. 프레임워크, 데이터베이스, UI는 그 주위를 도는 형태입니다.
일반적인 구조
// Typical Clean Architecture project layout
Domain
Application
Infrastructure
Web
장점
- 명확한 경계
- 우수한 테스트 가능성
- 강력한 도메인 모델링
- 장기 변화에도 안정적
단점
- 파일 및 추상화가 많음
- 초기 복잡도 상승
- 초기 전달 속도 저하
클린 아키텍처는 변화가 불가피할 때 빛을 발합니다.
2. 수직 슬라이스 아키텍처가 최적화하는 것
Vertical Slice Architecture는 다음을 최적화합니다:
- 빠른 제공
- 지역화된 변경
- 기능 중심 사고
- 기능 간 결합 감소
핵심 아이디어
레이어가 아니라 사용 사례별로 조직 – 각 기능은 필요한 모든 것을 자체적으로 소유합니다.
일반적인 구조
// Example vertical slice folder layout
Features/
└─ CreateOrder/
├─ Endpoint.cs
├─ Handler.cs
├─ Validator.cs
└─ Model.cs
강점
- 높은 응집도
- 기능 간 최소 영향
- 쉬운 온보딩
- CQRS 스타일 시스템에 탁월
약점
- 중복 로직 위험
- 전역 일관성 유지 어려움
- 도메인 규칙이 분산될 수 있음
VSA는 기능이 독립적으로 진화할 때 빛을 발합니다.
3. 잘못된 이분법
많은 팀이 생각합니다:
Clean Architecture OR Vertical Slice Architecture
이는 잘못된 선택입니다. 실제로:
- Clean Architecture은 경계를 정의합니다
- Vertical Slices는 조직을 정의합니다
그들은 공존할 수 있습니다.
4. Clean Architecture가 무너지는 지점
Clean Architecture가 어려움을 겪는 경우:
- 과도한 추상화로 팀의 속도가 느려질 때
- 모든 변경이 여러 레이어를 건드려야 할 때
- 간단한 기능조차 무겁게 느껴질 때
결과
- 규칙을 우회함
DbContext누수- “이번만은” 위반
결과: 아키텍처에 마찰이 발생한다.
5. 수직 슬라이스 아키텍처가 무너지기 쉬운 경우
Vertical Slice Architecture는 다음과 같은 상황에서 어려움을 겪는다:
- 핵심 도메인 규칙을 공유해야 할 때
- 횡단 정책이 중복될 때
- 불변 조건이 중앙집중화되지 않을 때
결과
- 일관성 없는 비즈니스 동작
- 슬라이스 간 드리프트
- 숨겨진 결합
Result: architecture becomes fragmented.
6. 실용적인 비교
| 구분 | 클린 아키텍처 | 버티컬 슬라이스 |
|---|---|---|
| 조직 | 레이어별 | 기능별 |
| 주요 목표 | 안정성 | 속도 |
| 변경 영향 | 넓지만 통제됨 | 국소적 |
| 적합 대상 | 복잡한 도메인 | 제품 중심 팀 |
| 학습 곡선 | 가파름 | 완만함 |
| 위험 | 과도한 설계 | 규칙 중복 |
7. 하이브리드 접근법 (시니어 팀이 하는 일)
고성능 팀은 종종 사용한다:
클린 아키텍처 경계 + 수직 슬라이스 조직
예시
// Hybrid folder layout
Application/
└─ Orders/
├─ Create/
├─ Cancel/
└─ GetById/
규칙은 중앙에 유지한다.
기능은 격리한다.
이점
- 강력한 불변 조건
- 빠른 기능 제공
- 확장 가능한 팀
8. 의사결정 가이드 (이것을 사용하고, 의견은 제외)
Clean Architecture 선택 시:
- 도메인 복잡성이 높을 때
- 비즈니스 규칙이 핵심일 때
- 장기적인 유지가 중요할 때
Vertical Slice Architecture 선택 시:
- 기능이 독립적으로 진화할 때
- 시장 출시 시간이 중요할 때
- 팀이 제품 중심일 때
Hybrid 선택 시 안정성과 속도를 모두 원할 때.
9. 아키텍처는 전략이지 템플릿이 아니다
아키텍처가 고통스럽게 느껴진다면:
- 이는 “잘못 구현된” 것이 아니라 귀하의 제약 조건과 맞지 않기 때문입니다.
- 훌륭한 아키텍트는 패턴을 적용합니다.
- 형편없는 아키텍트는 패턴을 강제합니다.
최종 생각
Clean Architecture와 Vertical Slice Architecture는 도구이며, 종교가 아닙니다.
최고의 시스템은 두 가지 모두에서 아이디어를 차용합니다.
Architecture는 다음을 달성할 때 성공합니다:
- 인지 부하를 감소시킵니다
- 변화를 가능하게 합니다
- 중요한 것을 보호합니다
그 외 모든 것은 형식일 뿐입니다.
✍️ Cristian Sifuentes가 작성 — 팀이 아키텍처를 신념 체계가 아닌 엔지니어링 전략으로 선택하도록 돕습니다.