Enterprise Service Bus(ESB)를 이용하여,
SOA의 유연성을 최대화할 수 있습니다. 서비스 상호작용에서 참여자는 서로 직접 연결되기보다는
ESB에 연결됩니다.
서비스 요청자가 ESB에 연결하면, ESB는 메시지를 사용하여 필요한 기능과 서비스 품질을
제공하는 서비스 프로바이더에게 요청을 전달할 책임이 있습니다. ESB는 요청자-프로바이더
상호작용을 용이하게 하며 불일치 프로토콜, 상호작용 패턴 또는 서비스 기능을 지정합니다. 또한 ESB는
모니터링 및 관리를 사용하거나 향상시킬 수 있습니다. ESB는 SOA의 코어 기능을 구현하고 확장하는
관리 기능과 가상화를 제공합니다.
ESB는 다음과 같은 기능으로 요약될 수 있습니다.
- 위치 및 ID
- 참여자는 다른 참여자의 위치나 ID를 알 필요가 없습니다.
예를 들어, 요청자는 여러 프로바이더가 요청을 처리할 수 있다는 사실과 관계없이
서비스 프로바이더를 추가하거나 제거할 수 있습니다.
- 대화식 프로토콜
- 참여자는 동일한 통신 프로토콜이나 대화식 스타일을 공유할 필요가
없습니다. 예를 들어, HTTP에서 SOAP로 표시되는 요청은
JMS(Java™ Message Service)에서 SOAP를
이해하는 프로바이더가 서비스할 수 있습니다.
- 인터페이스
- 요청자 및 프로바이더는 공통 인터페이스에 대한 의견에 동의할 필요는 없습니다.
ESB는 프로바이더가 예측한 양식으로 요청 및 응답 메시지를 변환하여 차이를
조정합니다.
- 요청자 및 프로바이더는 공통 인터페이스에 대해 의견이 동일할 필요는 없습니다.
- ESB는 프로바이더가 예상하는 양식으로 요청 메시지를 변환하여 차이를 조정합니다.
- 서비스(상호작용)의 품질
- 참여자나 시스템 관리자는 요청의 권한, 메시지 컨텐츠의 암호화 및 해독,
서비스 상호작용의 자동 감사를 포함하여 서비스 품질 요구사항을 선언하고,
요청이 라우트되어야 하는 방식(예: 속도나 비용의 최적화)을 선언합니다.
참여자 간에 ESB 조정은 중개라는 논리 구성을 통해 상호작용을
조정할 수 있게 합니다. 중개는 요청자와 프로바이더 간의 인플라이트 메시지에서 작동합니다.
예를 들어, 요청자가 원하는 특정 특성을 갖는 서비스를 찾거나 요청자와 프로바이더 간의
인터페이스 차이를 해결하기 위해 중개를 사용할 수 있습니다. 복합 상호작용의 경우,
순차적으로 중개를 체인할 수 있습니다.
중개를 이용하여
Enterprise Service Bus는
요청자와 서비스 간에 다음 조치를 수행합니다.
- 서비스 간의 라우팅 메시지. Enterprise Service Bus는
서비스 연결에 사용 가능한 공통 통신 하부 구조를 제공하며 그 결과 프로그래머가 복합 연결 로직을 쓰거나
유지하지 않고도 비즈니스 함수를 나타낼 수 있습니다.
- 요청자 및 서비스 간의 전송 프로토콜 변환. Enterprise Service Bus는
다른 IT 표준을 사용하는 비즈니스 함수을 통합하는 일관된 표준 기반 방식을
제공합니다. 각 부서의 응용프로그램을 연결하거나 서비스 상호작용에 참여하기 위해 여러 회사의 응용프로그램을 사용 가능하게 하는
것과 같이, 정상적으로 통신할 수 없는 비즈니스 함수의 통합을 가능하게 합니다.
- 요청자와 서비스 간의 메시지 형식 변환.
Enterprise Service Bus는 비즈니스 함수가
여러 형식으로 정보를 교환하게 하며 비즈니스 함수로 전달되는 정보가 해당
응용프로그램에서 요구하는 형식이 되게 합니다.
- 다른 소스로부터 비즈니스 이벤트 처리.
Enterprise Service Bus는 이벤트 기반 상호작용을
지원하며 서비스 요청을 처리하기 위해 메시지 교환을 가능하게 합니다.
그림 1. Enterprise Service Bus.
Enterprise Service Bus는 서비스의 요청자와 프로바이더인 응용프로그램 간의
메시지 라우팅입니다. 해당 버스는 전송 프로토콜을 변환하며 요청자와 프로바이더 간의
메시지 형식을 변환합니다.
이 그림에서, 각 응용프로그램은 다른 프로토콜(서로 다른 기하학적 모양으로 커넥터 형태로 표시됨)을
사용하며 다른 메시지 형식을 사용합니다.
Enterprise Service Bus를 사용하여
컴퓨터 시스템 이외의 코어 비즈니스에 집중할 수 있습니다. 필요하면 서비스를 변경하거나 추가할 수 있습니다.
예를 들어, 비즈니스 요구사항의 변경에 반응하거나 별도의 서비스 기능을 추가하거나, 새 기능을 추가할 수 있습니다.
버스를 사용하는 기존 서비스와 응용프로그램에 거의 영향을 미치지 않거나 영향을 주지 않고 버스를
재구성하여 필요한 변경사항을 작성할 수 있습니다.