ESB (Enterprise Service Bus)는 웹서비스 IT 기술을 기반으로 서비스 기반 아키텍처(SOA) 구성을 지원하는 플랫폼 기술입니다. 이 문서에서는 ESB 기술의 의미와 구성요소 그리고 구축을 위한 세부 아키텍처에 대해서 정리해보겠습니다.
ESB 개념
ESB는 소프트웨어 서비스(Web)와 각 service component 등을 연동하는 백본과 같은 역할을 수행합니다. 아래 그림과 같이 ESB를 통해 여러 요소들을 통합 연동하는 것이 가능하며 컴퓨터의 Bus와 같이 각 요소 간 메시지 통신을 가능케 하는 역할을 합니다.
ESB를 통한 서비스 구성요소로는 웹서비스, 레거시 component, B2B component, J2EE/.Net component 등이 있습니다. 이런 각 요소들이 기존의 분산되어 존재하는 방식에서 ESB를 통해 서로 통합되어 유기적으로 동작할 수 있게 됩니다.
ESB 기술은 2000년대 초반에 가트너에 의해 처음 소개되어 초기의 웹서비스 기반에서 SOA > BPM > ESB라는 단계로 점차 성숙하여가는 과정에 있습니다. 이 의미는 ESB의 앞 단계에 있는 SOA, BPM 등이 필수요소라는 의미이기도 합니다.
ESB 특징
기업 내에 분산된 각 컴포넌트의 효율적인 통합을 위해서 각 구성 요소들을 프로세스 기반의 통합을 지원하는 역할을 합니다. 이는 기능적으로 기존의 EAI와 유사한 역할을 하며 Process 기반의 통합지원과 이를 Web 기반으로 관리하는 통합 환경을 제공하여 중앙에서 쉽게 모니터링 및 통제가 가능합니다. ESB가 가지는 특징을 자세히 알아보면 다음과 같습니다.
- 느슨한 결합: WSDL 표준 interface를 지원하는 메시지 규격에 따라 각 애플리케이션이 loosely coupled 되어 동작합니다. 기는 각 애플리케이션 간 결합도를 낮추어 간단히 연결, 분리가 가능합니다.
- 이벤트 기반 동작: 각 서비스 컴포넌트 간 Event 기반으로 메시지 통신을 하거나 각 application의 시작, 정지, 재시작은 이벤트를 통해 제어합니다.
- 메시지 기반 동작방식
- 지원언어: COM, CICS, 닷넷, JDBC 및 웹서비스
ESB 아키텍처 구성요소
ESB 아키텍처는 다음의 그림과 같이 각 서비스의 연결로 구성되는 프로세스와 이를 외부의 웹서비스, Legacy System 그리고 워크 리스트와 연결하는 Adapter로 구성됩니다.
위의 그림과 같이 ESB는 또 다른 ESB와 상호 작용할 수 있습니다. 각 아키텍처 구성요소 들의 세부 요소를 자세히 알아보겠습니다.
1. Process
사용자가 정의한 활동 단위(Service)로 수행이 가능하도록 절차를 정의하고, 조건에 따라 Routing이 가능하도록 설계합니다. 각 프로세스에는 이에 종속된 서브 프로세스를 가질 수도 있습니다. 이 프로세스의 시작부터 종료까지 ESB를 통해서 실행되며 여러 프로세스를 관리하기 위한 별도의 관리 프로세스가 존재할 수 있습니다.
2. 서비스
프로세스는 여러단계 서비스들의 집합으로 구성됩니다. 즉 서비스는 하나의 Activity라고 할 수 있습니다. 이 서비스는 독립적으로도 동작이 가능하나 메시지를 통해 외부의 서비스 컴포넌트를 호출할 수도 있습니다.
3. Adapter
기존 기업의 레거시 시스템과 상호 연동하거나 웹서비스와 통합될 경우 사용되는 기능입니다. 주로 외부의 Application과 통합하는 경우에 많이 사용하며 메시지 기반으로 중계하는 역할을 담당합니다.
ESB의 각 요소는 Message를 기반으로 동작하는데 이를 위해 다음과 같은 특징을 가집니다. 보통 내부 시스템 간의 통합작업에는 큰 문제가 없지만, 이기종간 ESB를 통합할 경우 이런 메시지 전달방식의 차이로 인해 문제점이 발생할 수 있으니 주의가 필요합니다.
- 신뢰성있는 메시지의 전송
- 메시지가 올바른 목적지로 전송될 수 있도록 경로처리
- 메시지 전송 도중에 실패할 경우이를 재 전송 가능하도록 보관 및 통제하는 처리
활용방안
ESB 시스템을 활용하면 거대한 업무 기반의 프로세스들을 모니터링하여 각 업무를 세부적으로 통합할 수 있게 됩니다. 이를 통해 BPM 프로세스 관리의 효과적인 활용에도 적용할 수 있겠습니다.
이상으로 ESB 개념과 특징 그리고 아키텍처 구성요소에 대해서 자세히 알아보았습니다.
댓글