Layered Architecture
장점
Layer간 응집성을 높이고 의존도를 낮출 수 있음
- 상위 계층은 하위 계층을 호출하는 단방향성 유지
- 상위 계층은 하위 계층으로부터 영향받지 않게 구성
- 하위 계층은 자신을 호출하는 상위 계층을 알지 못하게 구성
- 시스템 분석이 용이함
- 계층간 구조가 나누어져 있어 재사용성이 높음
- 계층별 테스트가 용이함
단점
- 신규 비지니스 추가 시 Repository → Service → Controller 순서대로 개발되기 쉬운 구조라 비지니스 로직에 우선하기 어려움
- ORM 사용시 비지니스 로직이 데이터엑세스 로직과 강하게 연결됨
- 프리젠테이션 layer 테스트 하기가 어려움
- 제약사항을 따르지 않아 특정 계층에 로직이 집중 될경우 유지보수 비용 증가 및 확장성 떨어짐
장점
Layered Architecture가 가진 단점들을 보완하기 위해 생겨남
꼭 Hexagonal Archtecture가 Layered Architecture보다 낫다는건 아님!!
Layered Architecture가 가진 장점들을 가져가면서
- 비지니스 로직과 인프라 영역을 명확히 분리할 수 있음
-> 비지니스 로직과 데이터엑세스간의 강결합 되는 문제가 해결됨
단점
- 패키지 구조가 Layered Architecture보다 복잡해짐
-> 외부 서비스에 의존성이 별로 없고 비지니스 복잡도가 낮다면 Layered Architecture 쓰는게 효율적임
용어
- 인바운드 어댑터 : 외부에서 들어온 요청을 인바운트 포트를 호출해서 처리
ex. Rest API 호출, 메세지컨슈머, 기업회원 호출 - 인바운드 포트 : 도메인 코드에 접근하기 위한 인터페이스
ex. 비지니스 로직이 있는 서비스 호출, CompanayUserService 호출 - 아웃바운트 어댑터 : 비지니스 로직에서 들어온 요청을 외부 어플리케이션/서비스를 호출해서 처리
ex. ORM, Database, 메시지브로커 - 아웃바운드 포트 : 도메인 코드에 접근하기 위한 인터페이스
ex. CompanyUserRepository를 통해 기업회원 조회
'아키텍쳐' 카테고리의 다른 글
Monolithic Architecture VS Micro Service Architecture (0) | 2023.02.16 |
---|---|
Redis, Kafka를 활용하여 이벤트 기반 아키텍쳐 설계 (0) | 2023.02.15 |