시스템의 각 요소들을 명확하게 분리하면서도 유연하게 연결될 수 있도록 디자인 하는 SW 설계 구조
특징
- 안쪽에는 변경될 가능성이 적은 엔티티를, 바깥쪽에 변경될 가능성이 높은 엔티티를 배치
- 외부는 내부에 의존 가능하지만 내부는 외부에 의존X → 각 계층 간 의존성이 낮아지고 역할 구분이 확실해짐
- 구성 요소를 분리하는 모듈식 설계를 하여 테스트 용이성, 유지보수성, 시스템 확장성, 재사용성 향상
주요 원칙
- 의존성 역전 원칙 (Dependency Inversion Principle, DIP): 고수준 모듈은 저수준 모듈에 의존해서는 안 되며 모든 모듈은 추상화에 의존해야 함
- 폐쇄-개방 원칙 (Open-Closed Principle, OCP): 엔티티(클래스, 모듈, 함수 등)는 확장에는 열려 있어야 하고 수정에는 닫혀 있어야 함
- 단일 책임 원칙 (Single Responsibility Principle, SRP): 엔티티는 단 하나의 책임만을 가져야 함
디렉터리 구조 예시
- domain/
- entities/
- value-objects/
- repositories/
- application/
- services/
- use-cases/
- infrastructure/
- database/
- external-services/
- presentation/
- controllers/
- views/
- Domain
- 도메인 객체(Entity, Value Object), 비즈니스 규칙, 도메인 서비스 등이 위치
- 데이터와 그 데이터를 조작하는 규칙 포함
- 가장 중심에 위치하며 다른 계층이 의존함
- Application
- 주로 애플리케이션의 특정 기능을 위한 서비스 클래스 등이 위치
- 도메인 객체들을 조합하여 사용자의 요청에 따른 흐름을 제어
- 사용자 인터페이스와 도메인 계층 사이의 상호작용을 처리
- Infrastructure
- 데이터베이스나 외부 API 접근을 위한 코드 등이 위치
- 도메인 레이어와 의존성을 최소화하기 위해 추상화가 일반적으로 사용됨
- Presentation
- 웹 애플리케이션에서는 컨트롤러, 뷰, API 엔드포인트 등 사용자 인터페이스(UI)와 관련된 코드가 위치
- 사용자의 요청을 받아서 처리하며 사용자와 시스템 간 상호작용을 담당
참조: https://blog.toktokhan.dev/요즘-대세-clean-architecture-67b80df66c6
'study > 소프트웨어 공학' 카테고리의 다른 글
CAP 이론 (1) | 2024.10.06 |
---|---|
헥사고날 아키텍처(Hexagonal Architecture) (0) | 2024.07.13 |
레이어드 아키텍처: 3-tier architecture (0) | 2024.07.07 |
테스트 더블: Stub, Fake, Spy, Mock (0) | 2024.06.27 |
테스트 코드: 단위 테스트, 통합 테스트, E2E 테스트 (0) | 2024.06.27 |