architectureclean-architecture
Clean Architecture - 의존성 규칙과 레이어 분리
조회 0
Clean Architecture는 의존성 규칙을 통해 비즈니스 로직을 프레임워크와 독립적으로 만드는 아키텍처 패턴입니다.
이 글에서는 Clean Architecture의 핵심 원칙과 실무 적용 방법을 정리합니다.
1. 레이어 구조
┌─────────────────┐
│ Presentation │ (UI, Controllers)
├─────────────────┤
│ Application │ (Use Cases)
├─────────────────┤
│ Domain │ (Entities, Business Logic)
├─────────────────┤
│ Infrastructure │ (DB, External APIs)
└─────────────────┘
- 의존성 방향: 외부 → 내부 (Domain이 가장 독립적)
2. 의존성 규칙
// Domain (의존성 없음)
interface UserRepository {
findById(id: string): Promise<User>;
}
// Infrastructure (Domain에 의존)
class PostgresUserRepository implements UserRepository {
async findById(id: string): Promise<User> {
// DB 접근
}
}
// Application (Domain에 의존)
class GetUserUseCase {
constructor(private userRepo: UserRepository) {}
async execute(id: string): Promise<User> {
return this.userRepo.findById(id);
}
}