본문으로 이동

엔터프라이즈 서비스 버스

위키백과, 우리 모두의 백과사전.
ESB

엔터프라이즈 서비스 버스(영어: Enterprise service bus, 약칭 ESB)는 서비스들을 컴포넌트화된 논리적 집합으로 묶는 핵심 미들웨어이며, 비즈니스 프로세스 환경에 맞게 설계 및 전개할 수 있는 아키텍처 패턴이다. ESB는 서비스 지향 아키텍처(SOA)에서 상호 작용하는 소프트웨어 애플리케이션 간의 통신 시스템을 구현하며, 분산 컴퓨팅을 위한 소프트웨어 아키텍처를 나타낸다.[1] 이는 보다 일반적인 클라이언트-서버 모델의 특별한 변형으로, 모든 애플리케이션이 서버 또는 클라이언트 역할을 할 수 있다. ESB는 애플리케이션 간의 고수준 프로토콜 통신에 관한 민첩성과 유연성을 증진시키며, 이기종 및 복잡한 서비스 환경의 기업 애플리케이션 통합(EAI)에서 주로 사용된다.

이 버스는 기본적인 메시징, EAI, 중개 기술을 사용하거나 J2EE시스템의 서비스 통합 버스와 같은 플랫폼 내의 구성요소를 사용하는 등 다양한 방법으로 구현될 수 있다. 또한 ESB는 EAI와 애플리케이션 서버 기술을 함께 조합하여 구현 가능하지만 이러한 구현 방식이 전반적인 아키텍처에 영향을 미치지 않아야 한다.

ESB는 전사 컴퓨팅 인프라스트럭처에 공통적으로 분산되어 있는 여러 서비스, 애플리케이션, 다양한 데이터 등을 연결하는 지능형, 분산형, 트랜잭션형, 메시징 레이어로 작용한다. 또한 지능형 전송 기능과 라우팅 기능으로 동기 및 비동기 메시징 백본을 형성하여 메시지를 신뢰성있게 전달한다.

ESB는 개발자가 WSDL(Web Service Description Language)기반 표준 인터페이스에 의해 정의한 서비스, 즉 컴포넌트화된 비즈니스 기능을 API 또는 프로토콜에 관계없이 사용 및 호출하는 것을 가능하게 한다. WSDL은 추상화된 서비스 인터페이스 정의 부분, 재사용 가능한 프로토콜 바인딩 부분, 서비스를 제공하는 종단점(endpoint)부분으로 나뉘어 있다. 이것은 본질적으로 확장 가능하며 필요에 따라 다양한 프로토콜을 동일한 서비스에 연결할 수 있도록 포트 및 바인딩을 위한 확장 요소를 제공한다.

핵심 인프라스트럭처 서비스

[원본 편집]

서비스 요청을 처리하기 위해서는 가장 적절한 전송 프로토콜이 선택되어야 한다. 산업 표준이 필수가 되어감에 따라 웹서비스의 경우 SOAP over HTTP, SOAP over HTTPS, SOAP over JMS가 필수적인 전송층이 된다. 또한 J2EE 애플리케이션 서버 기반 노드의 경우 RMI/IIOP 기술을 지원하며 CORBA기반 구성요소와의 상호운용성도 지원한다. 표준 Java2 Connector Achitecture 또는 JMS를 통해 접근 가능한 기타 일반 어댑터를 사용함으로써, ESB는 TCP/IP를 사용하는 애플리케이션을 포함하여 거의 모든 애플리케이션을 연결할 수 있다. ESB는 운영 체제 및 프로그래밍 언어에 대한 일반적인 불가지론(agnosticism)을 가지며, 예를 들어 Java.NET 애플리케이션 간의 상호 운용성을 가능하게 한다.[2] 또한 광범위한 통신 프로토콜에 대한 포괄적인 지원을 포함한 프로토콜 변환 기능을 제공한다.

QoS(Quality of Service) 기반 라우팅

[원본 편집]

ESB에서의 QoS는 정의된 서비스 수준 협약에 따른 서비스를 제공 및 지원하는 것을 말한다. 이러한 협약은 사용과정 전반에 대해 서비스가 제공되는 방식에 대한 매개변수를 설정한다. 여기에는 응답 시간, 동기화, 역할 기반 제공, 협약에 정의된 기타 요인과 같은 여러 가지 요인들에 대한 정책을 포함할 수 있다.

ESB에서의 QoS는 정의된 서비스 수준 협약에 따른 서비스를 제공 및 지원하는 것을 말한다. 이러한 협약은 사용과정 전반에 대해 서비스가 제공되는 방식에 대한 매개변수를 설정한다. 여기에는 응답 시간, 동기화, 역할 기반 제공, 협약에 정의된 기타 요인과 같은 여러 가지 요인들에 대한 정책을 포함할 수 있다. ESB는 QoS 기능으로서 보안(암호화 및 서명), 신뢰할 수 있는 메시지 전달, 트랜잭션 관리와 같은 다른 품질 보장 서비스를 제공한다.[3] 또한 ESB는 프로토콜 변환을 통해 다양한 통신 프로토콜 간의 상호 운용성을 지원하며, 운영 체제 및 프로그래밍 언어에 대한 일반적인 불가지론을 통해 이기종 시스템 간 통합을 용이하게 한다.

웹 서비스 게이트웨이

[원본 편집]

웹 서비스 게이트웨이는 협력업체에 버스에 대한 제한된 접근을 제공하는 추가적인 버스 컴포넌트로, 개별적인 내부 서비스의 세부사항을 숨기고 사용자 액세스 권한을 검증하며 액세스를 제어하고 요청을 감시(audit)한다. 게이트웨이는 중개와 보안 등의 핵심 버스 컴포넌트를 사용하여 라우팅 및 관리 서비스를 구현한다.

ESB의 중개 기능은 서비스 요청 및 응답, 이벤트 및 메시지에 대한 지능형 처리를 가능하게 한다. 이러한 중개 기능은 애플리케이션 서비스 종단점(요청자 또는 제공자)에서 구현되거나 버스의 인프라 스트럭처 전반에 분포될 수 있다.

중개 기능에는 다음과 같은 것들이 있다.

  • 변환 : XML-XML 변환, 데이터베이스(DB)조회 및 취합
  • 메시지 검증 : 데이터 필드의 검증 또는 특정 규칙 기반하의 필드 조합 검증
  • 콘텐츠 또는 서비스 품질 선택 : 콘텐츠 또는 요구되는 QoS 기반 서비스 선택이 필요하다. 예를 들어 높은 우선순위 고객은 낮은 우선순위 고객보다 우선하여 처리량이 많은 서버에 라우팅되어야 한다.
  • 콘텐츠 기반 라우팅 : 예를 들어 서비스 매개 변수에 국가 정보가 포함되어 있다면 해당 요청은 해당 국가의 서비스 제공자로 라우팅될 수 있다.
  • 사용자 정의 로깅 : 법적 요건으로 서비스 상호작용의 로깅 및 감사 추적이 요구될 수도 있다.
  • 측정 및 모니터링 : 버스는 작업 행위 및 통합 서비스 제어를 가능하게 하는 관리 포인트를 모두 가지고 있어야 한다.
  • 자율 작업 : 특정 이벤트 감지 시 자체 구성, 치유, 최적화와 같은 대응을 한다.
  • 정책 관리 : XML로 구체화한 정책 정의를 통해 위에 기술된 항목에서 필요한 작업 규칙에 대한 설명을 제공한다.

ESB는 또한 서비스 통신에서 발생하는 경합을 해결하고, 서비스의 배포 및 버전 관리를 제어하며, 중복 서비스의 사용을 조정하는 역할을 수행한다.[4] 중개자(Mediator)는 요청자와 제공자 간의 논리적인 웹 서비스 SOAP 메시지 표현 시 중간 컴포넌트로서 작용한다. 이러한 중개자 컴포넌트는 제공자 측, 요청자 측, 또는 그 중간 지점에 위치하여 해당 기능을 제공할 수 있다. SOAP 메시지에는 중개 처리자(Mediation Handler)가 처리해야 하는 헤더를 포함하는 것이 일반적이나, 중개 컴포넌트는 SOAP 처리 및 라우팅 외의 목적으로도 사용될 수 있다.

같이 보기

[원본 편집]
  1. Lapeira, Raul. ESB is an architectural style, a software product, or a group of software products?. Artifact Consulting. 2014년 8월 8일에 원본 문서에서 보존된 문서. 2010년 4월 16일에 확인함.
  2. Enterprise Service Bus [Book].
  3. Enterprise Service Bus [Book].
  4. Lapeira, Raul. ESB is an architectural style, a software product, or a group of software products?. Artifact Consulting. 2014년 8월 8일에 원본 문서에서 보존된 문서. 2010년 4월 16일에 확인함.