토요일, 12월 22, 2007

Mule

작성자 : 김재탁(gagboy@gmail.com)

The Basics

Container 혹은 Mule Model 이라 불리는 mule 은 한마디로 말해 분배가능한 object 중계자이다.

Container 는 운영되는 object 들 혹은 Universal Message Objects TM 들을 관리한다.

짧게는 UMO 라고 불리는 이런 object 들은 자기자신들과 도는 외부 어플리케이션과 통신을 한다.

여기서 통신 포인트를 "Endpoints" 라고 부른다.

아래 다이어그램은 mule server 콤포넌트들을 간단하게 그려본 것이다.


The Mule Manager

Mule Manager 는 Mule 서버 인스턴스(Node 또는 Mule Node 라고 알려진)의 중심이다.

이것의 가장 중요한 역할은 Mule 인스턴스를 위해 connector, endpoint, transformer 와 같은 다양한 object 들을 관리 하는데 있다.

이러한 object 들은 service/component 들 간의 메세지를 컨트롤 하고, 이 object 들이 다루는 Model 과 Component 들에게 서비스를 제공하는데 사용된다.


The Model

Model 은 component 들이 관리되어지고 실행되어지는 컨테이너이다.

이것은 component 들 간의 메세지의 흐름을 컨트롤하고 threading, lifecycle 그리고 pooling 을 관리한다.

디폴트 MuleModel 은 퍼포먼스와 처리량을 최대로 끌어올릴 수 있는 효율적인 event 기반의 큐잉 모델인 SEDA 기반이다.

이 컨테이너는 transaction 관리, transformation(변환) 이벤트, routing(라우팅), 이벤트 상관 관계, 로깅, 감시 그리고 관리 등의 UMO component 들을 위해 서비스 범위를 제공한다.

Mule 는 object 생성을 관리로 부터 분리했다. 이것이 뜻하는 것은 Spring, PicoContainer 또는 Plexus 와 같은 유명한 IoC/DI 컨테이너가 UMO component 들을 생성하는데 사용되도록 한다는 것이다.


UMO Components

Universal Message Object TM 를 의미하는 UMO 는 어느곳에서라도 event 를 보내고 받을 수 있는 object 이다.

UMO component 는 비즈니스 오브젝트이다. 이것들은 들어오는 이벤트에서 비즈니스 로직을 실행하는 콤포넌트들이다.

이러한 컴퍼는트들은 어떤 Mule 관련 코드도 필요 없는 표준 JavaBean 들이다.

Mule 은 component 의 설정에 기반하여 object 들 간의 라우팅과 변환을 처리한다.


Endpoints

Endpoint 는 Mule 의 통신력에 있어서 매우 중요하다. Endpoint 는 두개 혹은 그 이상의 어플리케이션 혹은 저장소 component 들간의 통신 채널을 정의한다.

Endpoint 는 어떤 프로토콜의 오브젝트간의 대화도 통합된 방법으로 할 수 있도록 하는 강력한 기능을 제공한다. Endpoint 는 Endpoint 를 통해서 누가 어떤 그리고 어떻게 메세지들을 받고 혹은 보내는지를 컨트롤 하기 위해서 message filter 들, security interceptor 들 그리고 transaction 정보로 구성된다. 더 자세한 정보를 얻으려면 Mule Endpoints 를 보아라.


External Applications

External application(외부 어플리케이션) 은 어플리케이션 서버 에서 부터 기간계 급여 시스템, 메인프레임 트레이딩 어플리케이션, 클라이언트 어플리케이션 까지 어떤 것도 될 수 있다.

기본적으로 데이타를 제공 혹은 소비할 수 있는 길이 있는 어떤 어플리케이션도 External application 이 될 수 있다는 뜻이다.

Mule 이 endpoint 들을 통해 통신을 처리하기 때문에, UMO component 들은 '어떤 어플리케이션이 데이타를 생산하는가?', '어플리케이션이 어디에 위치해 있는가?', '어떤 전송 프로토콜을 사용하는가?' 에 대한 정보를 가지고 있지 않다.

Mule Objects

Mule 에서 사용되는 전문용어는 약간의 혼란을 가져올 수 있지만, 그 혼란은 아주 간단히 없앨 수 있다.


Object Term Description
Transport transport 또는 "provider", 는 Mule 이 특정한 종류의 전송 혹은 프로토콜을
핸들링 할 수 있도록 지원해주는 오브젝트들을 말한다.
예를 들면 "Email Provider" 는 Mule 이 SMTP, POP 그리고 IMAP 프로토콜을 통해 메세지를 주고 받는것을 가능하게 한다.
Connector connector 는 endpoint 쪽에서 메세지를 주고 받는 object 를 말한다.
Connector 들은 특정 transport 혹은 Porvider 의 일부인 번들로 제공된다.
예를 들어, FileConnector 는 파일 시스템의 파일들을 읽고 쓸수 있다.
Router router 는 connector 에 의해 받은 혹은 connector 에 의해 발송 되어지기 전의 메세지에 어떤 일을 하는 object 를 말한다.
Filter filter 는 connector 로 부터 들어오는 혹은 나가는 메세지를 선택적으로 필터링을 한다. 예를 들면, File Provider 는 파일 이름 패턴 에 의해 어떤 파일을 connector 가 읽을지 제한하는 FilenameWildcardFilter 와 함께 쓰게 된다. Filter 들은 Router 들과 함께 사용된다.
Transformer transformer 는 incoming 또는 outgoing 메세지들을 어떤 방식으로 선택적으로 변환한다.
예를 들어, BytearrayToString transformer 는 byte array 를 String 오브젝트로 변환한다.

0 개의 댓글:

최근 게시물 이전 게시물