그것은 기본적으로 시스템을 설계하는 개념적인 방법입니다. 소프트웨어 회사는 'ESB'스티커를 붙임으로써 더 많이 판매하려고하고 관리자는 ESB가 '상위 수준'에서 좋아 보이기 때문에 좋아합니다.
ESB는 기본적으로 데이터 모델 및 구조 정의 관리가 추가 된 MOM (메시지 지향 미들웨어)입니다. 해당 버스의 모든 애플리케이션 및 어댑터에 대한 공통 데이터 정의가 있습니다 (공유 XSD가있는 XML 일 수 있음). 연결되는 모든 것은이 데이터 정의를 준수하는 정보를 전송해야합니다. ESB는이 공통 데이터 정의의로드, 공유 및 버전 관리를 지원합니다. 새 구성 요소를 ESB에 연결할 때 MOM에 연결할 때보 다 기본적으로 더 많은 '호환성'을 기대할 수 있습니다. 해당 버스의 각 구성 요소는 개념적으로 '리소스'로 취급되므로 송신기와 수신기를 분리하기위한 추가 추상화가 도입되었습니다.
예 : 표준 메시지 지향 미들웨어에서 애플리케이션 A를 애플리케이션 B와 연결한다고 가정 해 보겠습니다. JMS를 살펴 보겠습니다. 애플리케이션 B를 작업중인 동료와 이야기하고 주제, 메시지 유형 및 필드에 동의 한 후 전송합니다 (의사 코드) : sendJms ( "TRADE.MSFT", {MapMessage trader = "pete"price = 101.4 vol = 100})
서비스 지향 아키텍처에서 동일한 작업을 수행하는 경우
- 추가 소프트웨어 설치
- 많은 새로운 개념을 배우십시오
- ESB의 관리 GUI에서 새 Java 구성 요소를 정의하십시오.
- ESB에서 제어하는 일부 인터페이스 구현
- sendJms (getDestination (), {MapMessage trader = "pete"price = 101.4 vol = 100})-대상이 ESB에서 주입됩니다.
처음에는 조금 아플 수도 있지만 EJB에 익숙해지는 것처럼 익숙해 질 수 있다고 생각합니다 ;-)
MOM 시스템은 'untyped'(동적 구조)이고 ESB는 'typed'(정적 구조)라고 말할 수 있습니다. 원시 메시징과 ESB의 장단점은 다른 유형이 지정되지 않은 / 유형이 지정된 선택과 유사합니다.
- REST 대 SOAP
- 검증되지 않은 XML과 XSD로 검증 된 XML
- 그루비 대 자바
- 해석 된 언어와 컴파일 된 언어
소규모 프로젝트의 경우 기능을 빠르게 해시하는 것이 좋지만 (예 : Groovy 코드) 큰 프로젝트의 경우 디버거 (예 : Java)를 사용하고, 일이 깨질 때 미리 경고를 받고, 사람들이 작업을 수행 하기 전에 표준을 마련하는 것이 좋습니다 . 계획.
따라서 프로젝트가 검증되지 않은 변경 사항을 확인하여 시스템을 손상시키는 사람이 너무 많으면 더 많은 구조 (MOM 대신 ESB)로 이동하십시오. 프로젝트가 제 시간에 충분한 작업을 수행하지 못해 어려움을 겪는 경우 더 간단하고 형식없는 솔루션을 선택하십시오. 둘 다인 경우-컨설턴트를 구하십시오 (농담입니다 ;-)