ESB 란 무엇이며 어떤 용도로 유용합니까?


88

이전 직장에서 "Enterprise Service Bus"(ESB)에 대한 이야기가 많았습니다. 나는 그것에 대한 개념 책의 일부를 읽었지만 구체적인 용어로 구현 / 통합하는 방법을 실제로 이해하지 못했습니다. SOA / queueing / directory services / etc에 익숙합니다. 하지만 ESB가 정확히 무엇인지 이해하지 못합니다.

모든 앱을 다른 방식으로 연결하는 것이 구체적인 것 (서비스 / 서버 / 브로커 등)입니까, 아니면 시스템을 설계하는 개념적 방법일까요?

좋은 예에 대한 설명이나 링크는 대단히 감사하겠습니다. 감사.


4
Martin Fowler에게 물어 보면 그는 그것이 Egregious Spaghetti Box를 의미한다고 말할 것입니다.
anataliocs

ESB에 대한 정보는 wso2.com/library/articles/2017/07/what-is-wso2-esb 에서도 찾을 수 있지만 wso2 esb에 대해 구체적으로 설명합니다.
Riyafa Abdul Hameed

답변:


53

상당히 높은 수준의 추상화 개념입니다. 핵심 개념은 ESB가 기업이 코드를 작성하지 않고도 애플리케이션을 연결할 수 있도록 미들웨어와 인터페이스를 제공한다는 것입니다.

여기에는 호환되지 않는 프로토콜, 데이터 및 상호 작용을 조정하기위한 중재가 포함될 수 있습니다.

모든 것이 통과하는 중앙 버스의 아이디어는 추가적인 추상화 계층을위한 기회를 제공합니다. 업계 표준을 사용하여 다른 애플리케이션, 클라이언트 등을이 버스에 "연결"하면 서로 다른 요구를 가진 새로운 서비스, 데이터 소스, 클라이언트를 비교적 쉽게 연결할 수 있습니다.

실제 구현

실제 구현에 관한 한 그것은 대기업 지원 비즈니스의 영역입니다. 매우 유행어이지만 목표는 인터넷과의 비교를 통해 어느 정도 작은 수준에서 이해할 수있는 이상입니다.

인터넷과의 유사성

용도와 데이터가 매우 다른 하나의 큰 통신 버스는 모두 프로토콜을 표준화합니다.

실제로 브라우저가 FTP 클라이언트를 호출하지 않고 FTP 사이트에 액세스 할 수 있도록하는 HTTP-FTP 커넥터를 작성할 수 있습니다 (일반적으로 현재 브라우저에 내장 됨).

매시업

매쉬업은 흥미로운 구현을 보여줍니다. 샌프란시스코 당국의 버스 경로 데이터, Google의지도, yahoo의 스시 바 위치를 평가하고 가장 가까운 스시 바를 제공하는 간단한 쿼리를 실행하여 가중치를 부여합니다. 더 나은 술집을 위해 조금 더 멀리 이동할 의향이 있습니다.

완전히 다른 모든 서비스는 자체적으로 호환되지 않지만 표준 커넥터 (예 : yahoo 파이프)를 사용하면 응집력 있고 유용한 전체로 통합 될 수 있습니다.

-아담


45

면책 조항 : 저는 IBM에서 근무하며 ESB를 구축하도록 설계된 IBM 제품인 WebSphere ESB에 대해 컨설팅합니다. 다음은 제 의견이며 반드시 IBM의 입장을 반영하는 것은 아닙니다.

안타깝게도 ESB는 사람마다 다릅니다.

저에게 ESB는 SOA (Service-Oriented Architecture)에 삽입 할 수있는 모든 기술로, 서로 다른 시스템을 함께 연결할 수 있습니다. 종종 프로토콜 변환, 메시지 수정, 라우팅, 로깅, 보안 게이트웨이 역할 등의 기능을 수행합니다. 예를 들어, ESB를 사용하여 이전에는 JMS 기반 서비스로 웹 서비스로만 사용할 수 있었던 서비스를 노출 할 수 있습니다.

이 점에서 ESB 구현 (또는 더 정확하게 말하면 ESB를 구축하기 위해 판매되는 소프트웨어)는 목적이 다소 다르지만 메시징 또는 대기열 브로커로 알려진 것과 기술적으로 유사합니다. , (두문자어에서 알 수 있듯이) 메시지를 한 곳에서 다른 곳으로 이동하는 것이 아니라 서비스를 중심으로하기 때문입니다. 기술적으로 구별이 얼마나 중요한지는 의견의 문제입니다.


나는 동의한다. 비슷한 토론
Aniket Thakur

37

상업용 ESB에 대한 나의 경험은 해결하는만큼 많은 문제를 일으키는 과장되고 값 비싼 기술이라는 것입니다. ESB는 새로운 시스템과 레거시를 연결하고 메시지는 버스를 통해 전송되며 모든 것이 다른 모든 것과 원활하게 통신 할 수 있습니다. 탄력성, 오케스트레이션을 도입하면 매우 강력한 엔터프라이즈 응용 프로그램 소프트웨어가 있습니다.

문제는 그것들을 실제로 사용하려고 할 때 발생하며, 버스 작성, 메시지 구조 작성 등의 오버 헤드가 이점을 능가 할 수 있습니다. 고비용 항목 인 ESB는 그렇지 않은 모든 기술 문제에 대한 만병 통치약으로 간주되며, 연결된 애플리케이션 / 데이터가 아닌 버스에서 너무 많은 시간을 소비합니다. 여러 경쟁 표준이 동일한 조직에서 우위를 차지하기 위해 싸우는 경우가 종종 있으며 이러한 시스템이 실제로 수정해야하는 고전적인 기술 지배 사일로로 이어집니다.

IMHO는 일반적으로 필요한 시스템 사이에서만 웹 서비스를 사용하여 적은 수의 특정 인터페이스를 만드는 것이 훨씬 좋습니다.


1
나는 "과장되고 값 비싼 기술"부분에 동의합니다. 그러나 개별 웹 서비스를 함께 "접착"하려면 여전히 무언가가 필요합니다. 이는 새로운 웹 서비스 (아마 가장 엄격한), ESB의 BPEL-대규모 인프라이지만 덜 견고하거나 매시업 서버와 같이 더 민첩하고 유연한 것일 수 있습니다. 이들은 그다지 식 (모델링 등)하지 않는 앱 개발을위한 좋은 애자일 대안입니다.
Dan

매시업 방식은 제가 가장 좋아하는 방식입니다. 예전에는 '모 놀리 식'HTML + JS 웹 페이지를 만들었으나 이제는 다양한 브라우저 / 장치를 대상으로하는 모든 종류의 콘텐츠 매시업을 만듭니다. 애플리케이션 디자인도 같은 방식으로 진행됩니다.
MrTelly 2009

3
BTW 당신은 ​​아마도 내 대답에서 약간의 공급 업체 피로를 감지 할 수 있습니다. 새로운 사람들은 너무 많은 사람들에게 너무 많은 돈을 너무 많이 지불했습니다.
MrTelly 2009

대신이 아키텍처 패턴 출시에 특정 문제에 초점을 맞추고, ESB가이 무슨 말을하는 데 실패
MickyD

1
".... ESB는 새로운 시스템과 레거시를 연결하고, 메시지는 버스를 통해 날아가고 모든 것이 다른 모든 것과 원활하게 통신 할 수 있습니다. 복원력, 오케스트레이션을 도입하면 매우 강력한 엔터프라이즈 애플리케이션 소프트웨어가 있습니다. ... "-그게 요약 된 줄 알았지?
MrTelly

12

그것은 기본적으로 시스템을 설계하는 개념적인 방법입니다. 소프트웨어 회사는 'ESB'스티커를 붙임으로써 더 많이 판매하려고하고 관리자는 ESB가 '상위 수준'에서 좋아 보이기 때문에 좋아합니다.

ESB는 기본적으로 데이터 모델 및 구조 정의 관리가 추가 된 MOM (메시지 지향 미들웨어)입니다. 해당 버스의 모든 애플리케이션 및 어댑터에 대한 공통 데이터 정의가 있습니다 (공유 XSD가있는 XML 일 수 있음). 연결되는 모든 것은이 데이터 정의를 준수하는 정보를 전송해야합니다. ESB는이 공통 데이터 정의의로드, 공유 및 버전 관리를 지원합니다. 새 구성 요소를 ESB에 연결할 때 MOM에 연결할 때보 다 기본적으로 더 많은 '호환성'을 기대할 수 있습니다. 해당 버스의 각 구성 요소는 개념적으로 '리소스'로 취급되므로 송신기와 수신기를 분리하기위한 추가 추상화가 도입되었습니다.

예 : 표준 메시지 지향 미들웨어에서 애플리케이션 A를 애플리케이션 B와 연결한다고 가정 해 보겠습니다. JMS를 살펴 보겠습니다. 애플리케이션 B를 작업중인 동료와 이야기하고 주제, 메시지 유형 및 필드에 동의 한 후 전송합니다 (의사 코드) : sendJms ( "TRADE.MSFT", {MapMessage trader = "pete"price = 101.4 vol = 100})

서비스 지향 아키텍처에서 동일한 작업을 수행하는 경우

  1. 추가 소프트웨어 설치
  2. 많은 새로운 개념을 배우십시오
  3. ESB의 관리 GUI에서 새 Java 구성 요소를 정의하십시오.
  4. ESB에서 제어하는 ​​일부 인터페이스 구현
  5. 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)로 이동하십시오. 프로젝트가 제 시간에 충분한 작업을 수행하지 못해 어려움을 겪는 경우 더 간단하고 형식없는 솔루션을 선택하십시오. 둘 다인 경우-컨설턴트를 구하십시오 (농담입니다 ;-)


4

글쎄요, 그것은 당신이 누구에게 물어 보는가에 달려 있습니다. 많은 사람들은이 모듈들 사이의 메시징에서 코딩을 제거하기 위해 다양한 "비즈니스 로직"을 연결하는 "미들웨어"라고 말할 것입니다. 나는 그것이 충분히 일반적인 정의라고 생각하지만, 당신은 이미 Wikipedia와 그 밖의 것들을 통해 거기에 도착했다고 확신합니다.

위대한 ESB가 세상을 구할 수있는 사람들은 그것이 가장 일반적으로 제시되는 것처럼 모든 것을 할 수있는 허브라고 생각합니다. 대부분의 ESB 구현은 비즈니스 소프트웨어에서 볼 수있는 모든 반복 작업을 캡슐화하기 위해 노력합니다. 즉, 대부분의 ESB는 데이터 전송, 보안, 로깅, 프로토콜 번역, 이벤트 시스템, 웹 서비스를 통한 API 노출 등을 처리합니다.

가능한 한 분명하다고 생각합니다. 도움이되기를 바랍니다.



2

Wikipedia 에서 얻을 수있는 표준 정의를 넘어서 . 여러 플랫폼과 기술에 걸쳐 많은 레거시 시스템을 연결하기위한 훌륭한 도구라고 생각합니다. 또한 분산 워크 플로 및 상태 관리 시스템 (예 : 총계정 원장)을 구축하는 데 유용한 도구입니다.

그러나 유지 관리 및 확장이 다소 비싸고 복잡하며 불편하기 때문에 응용 프로그램 확장을위한 범용 도구로서 기술 선택이 좋지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.