-
Notifications
You must be signed in to change notification settings - Fork 0
KR_CS_Architecture
somaz edited this page Mar 30, 2026
·
1 revision
질문: 클린 아키텍처의 계층 구조를 설명하세요. 또한 전통적인 3-Tier 아키텍처와 현대 웹 개발에서 계층 경계가 어떻게 변화했는지 설명하세요.
| 용어 | 설명 |
|---|---|
| Clean Architecture | 비즈니스 로직을 외부 인터페이스와 분리하는 설계 방법론 |
| Entities | 핵심 비즈니스 규칙 계층 (가장 내부) |
| Use Cases | 애플리케이션 비즈니스 로직 계층 |
| Interface Adapters | Use Case와 외부 시스템 간 변환 계층 |
| Frameworks & Drivers | 가장 외부 계층 — DB, 웹 프레임워크, 디바이스 드라이버 |
| 3-Tier Architecture | Presentation, Application, Data 3계층 구조 |
| WAS | Web Application Server — 비즈니스 로직과 동적 콘텐츠 처리 |
Robert C. Martin("Uncle Bob")이 제안. 비즈니스 로직이 프레임워크·DB·UI에 독립적으로 동작하도록 설계.
┌─────────────────────────┐
│ Frameworks & Drivers │ ← DB, Web, UI, 외부 API
│ ┌───────────────────┐ │
│ │ Interface Adapters│ │ ← Controller, Presenter, Gateway
│ │ ┌─────────────┐ │ │
│ │ │ Use Cases │ │ │ ← 애플리케이션 비즈니스 로직
│ │ │ ┌───────┐ │ │ │
│ │ │ │Entities│ │ │ │ ← 핵심 비즈니스 규칙
│ │ │ └───────┘ │ │ │
│ │ └─────────────┘ │ │
│ └───────────────────┘ │
└─────────────────────────┘
| 원칙 | 설명 |
|---|---|
| 독립성 | 비즈니스 로직이 UI·DB·프레임워크에 독립적 |
| 테스트 용이성 | 외부 요소 없이 비즈니스 로직 단독 테스트 가능 |
| 가독성 | 명확하고 재사용 가능한 코드 구조 |
| 계층 | 역할 |
|---|---|
| Entities | 핵심 비즈니스 객체와 규칙 |
| Use Cases | Entities를 활용한 비즈니스 로직 구현 |
| Interface Adapters | Use Cases와 웹·DB·외부 시스템 간 중계 |
| Frameworks & Drivers | DB, 웹 프레임워크, 디바이스 드라이버 등 구체적 도구 |
| 계층 | 역할 |
|---|---|
| Presentation Layer | 사용자 인터페이스 — 입력 수신, 결과 출력 |
| Application Layer | 비즈니스 로직 — 명령 처리, 의사결정 |
| Data Layer | 데이터베이스 — 데이터 저장 및 조회 |
| 항목 | 전통적 3-Tier | 현대 웹 개발 |
|---|---|---|
| 계층 분리 | 명확한 계층 경계 | 경계 모호 — 계층 통합 경향 |
| 웹 서버 | 정적 콘텐츠만 제공 | 정적·동적 콘텐츠 모두 제공 |
| 앱 서버 (WAS) | 모든 비즈니스 로직 처리 | 프레임워크에 내장 |
| 확장성 | 중간 계층 추가 방식 | 마이크로서비스, 컨테이너 노드 |
| 예시 기술 | Apache + WebLogic + Oracle | Node.js, Spring Boot, Django |
현대 프레임워크(Spring Boot의 Tomcat, Django의 Gunicorn, Node.js)는 앱 서버를 내장하여 별도 WAS가 불필요해졌다.