계층화(layering)는 복잡한 소프트웨어 시스템을 분할하는 데 사용하는 일반적인 기법이다.
네트워킹에서 OSI 7 계층을 예로 들 수 있다.
이렇게 나눈 계층은 불투명한 구조를 가진다는 특징이 있다.
상위 계층은 하위 계층이 정의하는 다양한 서비스를 사용하지만, 하위 계층은 상위 계층을 인식하지 못한다.
이러한 체계를 불투명한 구조라고 한다.
계층화의 이점
1. 다른 계층에 대한 정보 없이도 단일 계층을 하나의 일관된 계층으로 이해할 수 있다.
예) 이더넷이 작동하는 방법을 자세히 몰라도 FTP 서비스를 구축할 수 있다.
2. 동일한 기본 서비스를 가진 대안 구현으로 계층을 대체할 수 있다.
예) FTP 서비스는 이더넷, PPP 또는 케이블 회사에서 제공하는 다른 프로토콜 기반에서 변경 없이 작동할 수 있다.
3. 계층 간의 의존성을 최소화할 수 있다.
예) 케이블 회사에서 물리 전송 시스템을 교체하더라도 IP만 작동하면 FTP 서비스를 변경할 필요가 없다.
4. 계층은 표준화하기 좋은 위치다.
예) TCP와 IP는 해당 계층이 작동하는 위치를 정의하기 때문에 표준이 됐다.
5. 한 번 구축한 계층은 여러 다른 상위 서비스에서 사용할 수 있다.
예) TCP/IP는 FTP, 텔넷, SSH, HTTP에서 사용된다.
TCP/IP가 없다면 상위 계층마다 동일한 하위 프로토콜을 일일이 구축해야한다.
계층화의 단점
1. 계층은 전체가 효과적으로 캡슐화되지 않는다. 따라서 뭔가를 변경했을 때 다른 계층에 영향을 미치는 경우가 있다.
예) UI에 표시해야 하는 필드가 데이터베이스에도 있어야 하므로 그 사이에 있는 모든 계층에 필드를 추가해야 한다.
2. 계층을 추가하면 성능이 저하된다.
계층화 아키텍처에서 가장 어려운 부분은 어떤 계층을 만들고 각 계층이 어떤 역할을 담당할지 결정하는 것이다.
'Study > 엔터프라이즈 애플리케이션 아키텍처 패턴' 카테고리의 다른 글
05장 - 동시성 (0) | 2023.02.14 |
---|---|
03장 - 관계형 데이터베이스 매핑 02 - 데이터 읽기 / 구조적 매핑 패턴 (0) | 2023.02.08 |
03장 - 관계형 데이터베이스 매핑 01 - 아키텍처 패턴 / 동작 문제 (0) | 2023.02.07 |
02장 - 도메인 논리 구성 (0) | 2023.02.07 |
01장 - 계층화 02 : 계층의 발전과 주요 계층 (0) | 2023.02.01 |