소프트웨어 아키텍처 패턴 중 하나인 Dispatcher Pattern은 Client와 Server 사이에 중간 레이어인 Dispathcer를 도입하는 Client-Dispatcher-Server 패턴입니다. 정의와 설명, 구성요소(Component), 구현 순서, 장점과 단점에 대해서 정리했습니다.
글의 순서는 아래와 같습니다.
- Dispatcher Pattern의 정의와 설명
- Dispatcher Pattern의 구성요소(Component)
- Dispatcher Pattern의 구현 순서
- Dispatcher Pattern의 장점과 단점
Dispatcher Pattern의 정의와 설명
Dispatcher Pattern이란 클라이언트와 서버 간에 중간 레이어인 디스패처(Dispatcher)를 도입해서 네임 서비스(name service)를 통해 위치 투명성을 제공하고, 클라이언트와 서버 간의 통신을 위해 세부 구현을 숨기는 것입니다.
정보 검색 소프트웨어를 예로 Dispatcher Pattern에 대해서 설명해보겠습니다.
우선 분산된 서버들을 통합해야 하는데, 통합 대상 서버들은 로컬 또는 네트워크 상에 분산되어 실행됩니다. 정보 제공자는 전 세계에 분산되어 있고, 정보제공자에게 액세스 하기 위해서는 해당 위치와 실행되어야 할 서비스를 지정해야 합니다.
분산된 서버를 통합해 서비스를 제공하기 위해서는 아래와 같은 조건들을 만족해야 합니다.
- 분산된 서버를 사용할 때, 서버들 간에 통신할 방법을 제공해야 함
- 컴포넌트들 간의 연결은 통신을 시작하기 전에 설정해야 함
- 컴포넌트들 간의 연결은 어떤 통신 기능을 제공하느냐에 따라 결정됨
- 컴포넌트의 핵심 기능은 통신 메커니즘의 세부 구현으로부터 분리해야 함
- 클라이언트는 서버의 위치를 알 필요가 없음
- 서버의 위치가 변경되어도 영향이 없어야 함
위 조건들을 만족하기 위해서 Dispatcher를 서비스 제공자(서버)와 사용자(클라이언트) 사이에 도입합니다. 디스패처를 도입하면 핵심 기능 코드 분리, Name Service 구현, 클라이언트와 서버 간 통신 채널 설정이 가능합니다.
Dispatcher는 클라이언트와 서버 간의 중간 레이어 역할을 수행합니다. 따라서 서비스 소비자의 핵심 기능 구현 코드와 서비스 제공자와 연결 설정 코드가 분리가 됩니다.
Dispatcher를 통해 Name Service를 구현합니다. Name Service는 물리적 위치가 아니라 이름을 기반으로 서버를 참조하는 방식입니다. Name Service를 통해 위치 투명성이 제공됩니다.
또한 Dispatcher로 클라이언트와 서버 간 통신 채널 설정을 할 수 있습니다.
Dispatcher의 구성요소(Component)
Dispatcher를 구성하는 요소에는 Client, Server, Dispatcher가 있습니다. 각각에 대한 설명을 보면 아래와 같습니다.
Client
- 특정 도메인을 위한 태스크 수행
- Dispatcher에게 서버와의 연결을 요청
- 서버와 연결 가능한 통신 채널이 있는지 확인
- Server의 서비스를 호출
Server
- Client에게 여러 서비스를 제공
- Dispatcher로 이름과 주소를 사용해 자산을 등록
Dispatcher
- Client와 Server 간의 통신 채널을 설정
- 통신 메커니즘을 사용해 통신 링크 설정
- 서버 찾기
- 서버를 등록하거나, 삭제
- 서버의 이름을 서버의 물리적인 위치와 매핑
Dispatcher Pattern의 구현 순서
Dispatcher 패턴의 구현 순서와 상세 내용은 아래와 같습니다.
- 애플리케이션을 서버와 클라이너트로 분리
: 어떤 컴포넌트들을 서버로 구현하고, 어떤 클라이언트들이 접근할 수 있는지 정의 - 어떤 통신 기능이 필요한지 파악
: 클라이언트와 Dispatcher, 서버와 Dispatcher, 클라이언트와 서버 간의 상호작용을 위한 통신 기능 선택 - 컴포넌트 간의 상호작용 프로토콜 정의
: 통신 채널, 전송 메시지, 데이터 구조를 초기화하고 저장을 수행하는 프로토콜을 정의. 각각 서로 다른 종류의 프로토콜이 필요 - 서버의 이름을 어떻게 지을 것인지 결정
: 특정한 위치 정보를 구체적으로 드러내지 않는 이름으로 결정 - Dispatcher를 설계하고 구현
: Dispatcher가 클라이언트의 주소 공간 내 위치하면 로컬 프로시저, 공간 외에 위치하면 TCP 또는 공유 메모리 등을 사용. 병목 현상을 고려해 성능 문제도 해결할 수 있음 - Dispatcher 인터페이스에 맞게 클라이언트 컴포넌트 및 서버 컨포넌트를 구현
Dispatcher Pattern의 장점과 단점
Dispatcher Patteern의 장점은 다음과 같습니다.
- 서버의 교환 가능성 보장
: 서버를 변경하거나 추가할 때, Dispatcher와 Client를 변경할 필요 없음 - 서버의 위치 투명성(Location Transparency) 보장
: Client는 서버가 어디에 위치하는지 알 필요가 없으므로, 서버를 다른 하드웨어로 교체 가능 - 서버의 재구성 가능
: 개발자는 네트워크의 어떤 서버를 실행할지 결정할 수 있고, 지연시킬 수 있음. 해당 패턴은 소프트웨어 시스템을 분산 시스템으로 전환하는데 용이 - 장애 허용성 보장
: 네트워크 혹은 서버에서 결함이 발생했을 때, 다른 네트워크의 서버를 활성화할 수 있음
Dispatcher Pattern의 단점은 다음과 같습니다.
- 명시적이며, 우회적인 연결을 설정하기 때문에 효율성이 낮음
: 해당 패턴의 성능은 Dispatcher에서 도입되는 오버헤드에 의존 - Dispatcher 컴포넌트의 인터페이스에 발생하는 변경에 민감
: Dispatcher가 중심 역할을 하기 때문에, 소프트웨어 시스템인 Dispatcher의 Interface 변경에 민감
※ 함께 보면 좋은 글
1. 소프트웨어 아키텍처 패턴 개념 알아보기
소프트웨어 아키텍처 패턴 알아보고 아키텍처 스타일과 비교하기
소프트웨어 아키텍처 패턴은 특정 문제에 대한 해법을 추상화하고, 해법 내의 공통된 요인을 추출해 정형화한 것입니다. 아키텍처 패턴의 개념과 스키마, 대표적인 패턴과 자주 사용되는 패턴
mmp2022.tistory.com
2. Publish and Subscribe Pattern 알아보기
Publish and Subscribe Pattern의 정의, 설명, 구성요소, 구현 방법 및 코드, 장단점
소프트웨어 아키텍처 패턴인 Publisher and Subscriber Pattern은 하나의 게시를 하는 Component와 다수의 구독하는 Component로 구성되는 패턴입니다. Pub-Sub 패턴의 정의, 예시와 설명, 구성요소(Component)와 구
mmp2022.tistory.com
3. Broker Pattern 알아보기
Broker Pattern 정의, 구성요소, 구현과 코드, 장점과 단점
Broker Pattern은 서버와 클라이언트 사이에 Broker, Bridge, Server-side Proxy, Client-side Proxy 등을 둬서 서버와 클라이언트를 효과적으로 분리/분산시키는 설계 기법입니다. Broker Pattern의 정의와 설명, 구성
mmp2022.tistory.com
4. Microservice Pattern 알아보기
Microservice Pattern 정의, 특징, 설명, 구현 방법, 장점과 단점
Software Oriented Architecture(SOA)를 이어서 트렌드로 자리 잡은 소프트웨어 아키텍처는 Microservice Architecture(MSA)입니다. 이를 구현하는 방법인 Microservice Pattern에 대해서 정의와 특징, 설명, 구현 순서와
mmp2022.tistory.com
'IT' 카테고리의 다른 글
Broker Pattern 정의, 구성요소, 구현과 코드, 장점과 단점 (0) | 2023.02.09 |
---|---|
Publish and Subscribe Pattern의 정의, 설명, 구성요소, 구현 방법 및 코드, 장단점 (0) | 2023.02.08 |
Attribute Driven Design(ADD) 아키텍처 설계 7단계 (0) | 2023.02.02 |
소프트웨어 아키텍처 패턴 알아보고 아키텍처 스타일과 비교하기 (0) | 2023.02.01 |
소프트웨어 아키텍처 스타일 알아보기 : 개념, 특징, 스키마, 유형, 예시 (0) | 2023.02.01 |
댓글