시스템을 3계층으로 나눔
프레젠테이션 계층 (화면 표현)
, 비즈니스 로직 계층 (비즈니스 개념, 규칙, 흐름제어)
, 데이터 엑세스 계층 (데이터 처리)
으로 나눔
상위 계층은 하위의 여러 계층을 모두 알 필요없이, 바로 밑의 근접 계층만 활용
상위 계층이 하위 계층에 영향을 받지 않게 구성
단방향성
인터페이스 이용
계층 간의 호출은 인터페이스를 통해 호출
제어 흐름이 상위 계층에서 하위 계층으로 흐르게 되어서, 하위의 인터페이스가 상위 계층의 기능에 관여하게 됨
DIP(의존 역전 원칙)는 만족할 수 있지만(계층의 인터페이스로 인해)
OCP(개방 폐쇄 원칙)는 만족하지 않음
비즈니스 로직
헥사고날 아키텍처의 경우, 비즈니스 로직이 핵심 영역
레이어드 아키텍처의 경우, 비즈니스 로직이 데이터 엑세스 계층에 의존
→ 따라서, 데이터 엑세스 계층을 비즈니스 로직에 의존하도록 구조를 변경 (데이터 엑세스 계층의 인터페이스를 비즈니스 로직에서 정의하게 함)
내부 영역 순수한 비즈니스 로직을 표현하는 독립적인 영역
외부 영역 인바운드 어댑터(외부 요청 처리), 아웃바운드 어댑터(외부와 연계)로 구성됨