소개
본 장에서는 EMB의 기본 개념 및 주요 기능에 대해 소개한다.
1. 개요
EMB(Enterprise Module Bus)는 가트너(Gartner, Inc.)에서 제시한 Microflows의 개념을 실체화해 Intra-SOA를 구현하는 TmaxSoft의 독창적인 기술이다.
ESB(Enterprise Service Bus)가 시스템 간 그리고 서비스 간 상호의존성을 제거하고 비주얼 툴을 이용해 서비스 오케스트레이션을 빠르게 완성시켜줌으로써 민첩성, 생산성, 재사용성을 증대시켰듯이 EMB는 Micro한 개별 서비스를 상호의존성이 제거된 하위 컴포넌트들 간의 오케스트레이션으로 빠르고 유연하게 만들 수 있도록 도와준다.
ProFrame는 이와 같은 EMB 기술을 이용하여 업무를 처리할 수 있다. 또한 서비스 모듈 등을 만들어 그 모듈들을 조합하여 다양하고 새로운 서비스를 만들 수 있다. 다시 말해서 기존 서비스 모듈을 재사용하여 코딩 없이 새로운 서비스를 개발할 수 있고 서비스 기반의 아키텍처 구현이 가능하다.
그리고 EMB는 단일 시스템(또는 도메인) 내 업무 간의 Micro한 개별 서비스의 상호의존성을 최소화하고 GUI 툴을 이용하여 업무처리 흐름을 가시화함으로써 업무 개발의 생산성을 높여주고 개발의 유연성, 재사용성을 지원한다.
위 그림에서 소프트웨어 구축 단계마다 수행되는 EMB의 역할은 다음과 같다.
-
설계 및 개발단계
-
Service Module Designer(EMB Designer)
EMB Designer는 ProFrame에서 EMB를 이용하여 업무를 개발할 때 스튜디오에서 제공되는 모듈 디자인 툴이다.
EMB Designer는 설계 및 개발단계에서 다음과 같은 역할을 한다.
-
서비스 명세 및 플로우를 정의한다.
-
업무 모듈 로직을 구현한다.
-
서비스 연동을 설정한다.
-
구현이 완료된 서비스를 시뮬레이션한다.
-
-
EMB Engine
EMB Engine은 업무 개발에 필요한 핵심 기술로 설계 및 개발단계에서 다음과 같은 역할을 한다.
구분 설명 Source Generation
EMB Designer의 플로우 다이어그램을 실행 가능한 C 언어의 소스 코드로 변환시켜 주는 기능이다.
Hot Deploy
서버의 재기동 없이 서비스 모듈을 업데이트할 수 있다.
Meta Management
각종 리소스의 메타 데이터를 관리할 수 있다.
-
-
실운영 시스템
운영단계에서는 EMB에서 생성된 모듈에 따라 다음과 같은 역할을 한다.
구분 설명 서비스 모듈
서비스 플로우를 제어한다.
비즈니스 모듈
기능 중심의 업무 로직을 구현한다.
2. 주요 기능
EMB는 다음과 같은 주요 기능을 제공함으로써 서비스 기반의 아키텍처를 구현한다.
-
비즈니스 로직을 자산화
EMB 기반 시스템에서는 개발자가 기존 소스를 열어 확인해야 했던 서비스 플로우를 GUI 툴을 이용하여 쉽게 확인할 수 있다. 따라서 서비스와 관련된 전반적인 사항을 지식화 또는 자산화할 수 있다.
-
업무 서비스 플로우의 자산화
-
Module Pool, Property Pool 기능을 통해 업무 로직을 재사용한다.
-
Meta Repository 기반의 업무, 데이터, 인터페이스를 표준화한다.
-
-
유연한 Composite 서비스 개발
EMB 기반 시스템에서는 복잡한 연동 서비스를 GUI 기반 툴인 스튜디오에서 쉽게 구현할 수 있다. 예를 들어 어러 개의 서비스를 결합하는 연동 서비스의 경우 EMB Designer에서 서비스 모듈을 분해 및 조립하여 쉽게 구현할 수 있다.
또한 EMB Designer에서 호출되는 모듈마다 RI/WS 영역을 선택할 수 있어 모듈 수정이 다른 개발자에게 끼치는 영향을 최소화하는 유연한 모듈 개발이 가능하다.
-
업무 서비스의 분해와 조립이 쉬운 아키텍처를 지원한다.
-
스튜디오를 이용하여 서비스 연동을 작성한다.
-
Module Pool 기반의 업무 로직의 기능을 블록화한다.
-
-
성능을 고려한 아키텍처
EMB 기반 시스템에서는 설계 및 개발의 편리성뿐만 아니라 생성된 서비스를 실행할 때 성능에 있어서도 우위성을 보장한다.
-
Source Generation을 이용하여 서비스를 생성하므로 ProFrame의 성능 부하를 최소화한다.
-
Dynamic Call 기반의 호출 구조로 2PC 최소화 아키텍처를 제공한다. Dynamic Call은 시스템 운영 중에 동적으로 라이브러리를 교체하기 위해 ProFrame에서 제공하는 인터페이스 모듈이다.
-
CommBuff를 이용하여 업무 모듈 간의 데이터 공유로 디스크 IO를 최소화한다. CommBuff는 업무 모듈간의 데이터 공유를 하기 위해 ProFrame에서 제공하는 인터페이스 모듈이다. 메모리 전달 및 관리를 수행한다.
-