아키텍처란? 시스템의 기본적인 구조를 정의한다.
왜 그런 구조 사용하는데? 시스템의 중요한 품질 속성에 큰 영향을 미치기 때문.
아키텍쳐는 설계 결정의 기반이 되는 핵심적인 개념.
기본 구성 요소와 상호 관계, 제약 조건, 원칙 등을 포함한다.
대표적인 아키텍처로 계층형 아키텍처가 존재
- 시스템이 여러 개의 서브 시스템을 구성하여 계층으로 구조화 하는 아키텍처 스타일
- 계층은 사용 관계로 연결함
- 일반적으로 단방향이어야 한다는 핵심 제약이 있음
- 상위 계층 → 하위 계층으로 하향식 흐름
- 각 계층이 하위 계층의 내부 작동 방식을 알지 못하고 제한 된 인터페이스만 사용 → 계층 격리
헥사고날 아키텍처는 계층형 아키텍처와 무엇이 다른가?
대표적으로 위 아래 혹은 좌 우가 아닌 애플리케이션의 내부와 외부 세계라는 대칭 구조
를 가짐
- 헥사고날은 한글로 번역했을 때 육각형의~ 라는 단어이며 6개의 면을 가졌다는 게 특별한 의미는 아님
- 대칭 구조라는 단어가 중요하며 육각형의 중심에 어디에 선을 그어도 항상 대칭이 되는 구조로 개발을 할 수 가 있음 → 즉 외부와 내부 두 가지 관점으로만 시스템을 바라보겠다는 의미
헥사곤의 내부
쉽게 변하지 않는, 중요한 도메인 로직을 담은 코어 애플리케이션
- 도메인 로직을 가진 트랜잭션 스크립트
- 애플리케이션 서비스와 도메인 모델 패턴을 따라서 만든 도메인