아키텍처
- 시스템의 기본적인 구조를 정의한다
- 시스템의 중요한 품질 속성에 큰 영향을 미친다
- 설계 결정의 기반이 되는 핵심적인 개념이다
- 기본 구성 요소와 상호 관계, 제약 조건, 원칙 등을 포함한다
계층형 아키텍처 - Layered Architecture
- 서브 시스템을 계층 layers으로 구조화 하는 아키텍처 스타일이다
- 계층은 사용 관계로 연결된다
- 사용 관계는 일반적으로 단방향이어야 한다는 핵심 제약이 있다
- 상위 계층이 하위 계층의 서비스를 사용하는 하향식 흐름을 가진다
- 각 계층이 하위 계층의 내부 작동 방식을 알지 못하고 제한된 인터페이스만 사용하도록 한다
- 계층 격리 Layers of Isolation 어떤 레이어의 변경이 다른 레이어의 컴포넌트에게 가능한 영향을 주지 않도록 해야 한다
- 캡슐화의 핵심 원칙
3계층 아키텍처
변천사
ui → domain → data
presentation → domain(transaction script ≠ ddd)→ infrastructure
presentation → application service → domain → infrastructure
헥사고날 아키텍처
- 2005년 앨리스터 코번㏗Alistair Cockburn㏘이 제안한 아키텍처