계층형 아키텍처란?
일반적인 3 계층 아키텍처를 표현한 그림입니다.
계층형 아키텍처의 다양한 명칭이 존재합니다.
시대에 따라 변화하여 추가, 삭제되는 용어들이나 같은 의미를 의미하고 있습니다.
Web 계층 : 사용자의 요청[ex: 등록, 수정, 삭제]에 응답하는 계층입니다.
- Web, UI, MVC, Presentation
Domain 계층 : 사용자의 요청에 대한 비즈니스 로직, 도메인[작은 단위의 업무]의 전반적인 작업을 수행하는 계층입니다.
- Domain, Service, Business
Persistence: Database 등 데이터 액세스하는 계층입니다.
- Persistence, DAO, EIS
계층형 아키텍처의 장점
- 계층의 관심사가 계층별로 분리되어 있습니다.
- 관심사 분리가 되어 있어 변경되는 요구사항에 최소한의 변경으로 빠르게 적응 가능합니다.
계층형 아키텍처의 단점
- DB 주도 설계 : DB 구조에 따라 도메인이 결정됩니다.
-> 어플리케이션은 결국 사용자가 원하는 비즈니스(업무) 처리를 하기 위해서입니다.
따라서 비즈니스 관점에서 볼 때에 올바르지 않습니다.
※ DB 주도 설계가 되는 이유 : 어플리케이션을 개발하는 언어 대부분 객체 개념을 도입하였습니다.
객체지향 개발을 하기 위해 DB와 연동을 위해 ORM 프레임워크를 사용하기 때문입니다. - 도메인 계층과 영속성 계층 사이에 강한 결합이 발생합니다.
-> ORM에 의해 관리되는 엔티티들은 영속성 계층에 존재하며, 상위 계층에서 하위 계층으로 접근 가능하기 때문에 상위계층인 Domain에서 Entity 조작을 통해 데이터에 변화를 일으킬 수 있습니다. 즉, 강한 결합이 발생합니다.
-> 만약 Entity를 상위 계층인 Domain 계층에서 처리할 경우 계층을 구분한 의미가 없어지게 됩니다.
- 의미 없는 계층 구조가 발생합니다.
-> 상위 계층에서 하위 계층에 접근 가능하기 때문에 Web 계층에서 Domain 계층을 통하지 않고 Persistence 계층을 접근하여 비즈니스 처리가 가능해집니다. 이때 도메인 로직이 여기저기 작성될 수 있으며, 테스트 복잡성이 올라가게 됩니다.
'클린코드' 카테고리의 다른 글
DPI: 의존관계 역전 원칙 (0) | 2023.04.18 |
---|---|
ISP: 인터페이스 분리 원칙 (0) | 2023.04.17 |
LSP: 리스코프 치환 원칙 (0) | 2023.04.15 |
OCP: 개방 - 폐쇄 원칙 (0) | 2023.04.14 |
SRP: 단일 책임 원칙 (0) | 2023.04.12 |