본문 바로가기
개발일지/아키텍트

POSA, Forwarder-Receiver 패턴

by 사악신 2012. 1. 31.
POSA 의 통신관련 대표적인 패턴으로, 분산 시스템의 컴포넌트와 통신을 위해 사용하는 메커니즘 간 결합도(coupling)를 줄이는 방법 중 하나이다. 결합도를 낮추기 위하여 캡슐화와 위치 투명성을 고려하여야하는데 Forwader-Receiver 패턴은 캡슐화의 역할을 한다.


전체적인 구조에서 보았을 때, Peer 와 Peer 간의 통신을 나타내며 직접적인 송수신 파트는 Forwader 와 Recevier 가 담당한다. DCOM 이나 CORBA 관련 자료를 본 적이 있다면 마샬링이나 언마샬링 등이 익숙할 것이다.

Peer : 어플리케이션 서비스를 제공한다. 다른 피어들과 통신한다.
Forwarder : 메시지를 보내기 윈한 일반적인 인터페이스(SendMsg)를 제공한다. 원격 수신기에 보내는 메시지를 마샬링해서 전달한다. 이름과 물리적 주소를 매핑한다.
Receiver: 메시지를 받기 위한 일반적인 인터페이스(ReceiveMsg)를 제공한다. 원격 송신기로부터 메시지를 받아 언마샬링한다.

패턴 구현시 아래의 단계를 반복하며 진행한다.

1단계 - 이름 대 주소(name-to-address) 매핑을 정의한다.

2단계 - 피어와 송신기 간에 사용될 메시지 프로토콜을 정의한다. 이때 타임아웃 및 통신장애에 대한 고려도 하여야한다.

3단계 - 통신 메커니즘을 선택한다. TCP/IP, 소켓을 사용할 지...

4단계 - 송신기를 구현한다. 이름과 물리적 주소를 매핑하는 저장소(repository)를 정의한다. 마샬링, 메시지 전달, 저장소의 역할들을 분리하여 Whole-Part 패턴을 적용할 수 있다.

5단계 - 수신기를 구현한다. 모든 피어가 비동기적(asynchronously)으로 실행되기 때문에 메시지를 받을 때까지 블로킹 상태로 둘 것인지 결정해야한다. non-blocking I/O 를 사용할 수 없다면 쓰레딩 모델을 적용한다.

6단계 - 어플리케이션의 피어를 구현한다.

7단계 - 스타트업 구성을 구현한다. 이름과 물리적 주소를 매핑하기 위한 설정 처리 등을 고려한다.

 
반응형

'개발일지 > 아키텍트' 카테고리의 다른 글

POSA2, ACT 패턴  (0) 2012.02.08
GoF, Command 패턴  (0) 2012.02.08
POSA, Whole-Part 패턴  (0) 2012.01.30
나의, UML 객체지향 설계 - 3 -  (0) 2011.12.20
나의, UML 객체지향 설계 - 2 -  (0) 2011.12.19

댓글