Skip to content

KR_CS_Architecture

somaz edited this page Mar 30, 2026 · 1 revision

Q8 & Q9: 클린 아키텍처와 3-Tier 아키텍처

질문: 클린 아키텍처의 계층 구조를 설명하세요. 또한 전통적인 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 — 비즈니스 로직과 동적 콘텐츠 처리

클린 아키텍처 (Clean Architecture)

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, 웹 프레임워크, 디바이스 드라이버 등 구체적 도구

3-Tier 아키텍처

전통적 구조

계층 역할
Presentation Layer 사용자 인터페이스 — 입력 수신, 결과 출력
Application Layer 비즈니스 로직 — 명령 처리, 의사결정
Data Layer 데이터베이스 — 데이터 저장 및 조회

전통적 방식 vs 현대 웹 개발 비교

항목 전통적 3-Tier 현대 웹 개발
계층 분리 명확한 계층 경계 경계 모호 — 계층 통합 경향
웹 서버 정적 콘텐츠만 제공 정적·동적 콘텐츠 모두 제공
앱 서버 (WAS) 모든 비즈니스 로직 처리 프레임워크에 내장
확장성 중간 계층 추가 방식 마이크로서비스, 컨테이너 노드
예시 기술 Apache + WebLogic + Oracle Node.js, Spring Boot, Django

현대 프레임워크(Spring Boot의 Tomcat, Django의 Gunicorn, Node.js)는 앱 서버를 내장하여 별도 WAS가 불필요해졌다.


참고 자료

Clone this wiki locally