ESB

[ESB] ESB 란

joheamin 2025. 8. 14. 11:14

ESB (Enterprise Service Bus)

서로 다른 애플리케이션 간의 실시간 데이터 교환을 지원하는 소프트 웨어 아키텍처 패턴이다.

한마디로 여러 서비스들을 운영하고 있는 기관들을 서로 연결해주는 기술이다.

 

쇼핑몰에서 상품을 구매하고 배송될 경우 카카오톡으로 알림이 오는 경우를 에로 들어보자

 

그런데 전혀 다른 기업에 서비스들인데 어떻게 연계가 되서 

구매하였는데 카카오톡으로 알림이 올 수 있을까?

 

이때

중간지점에서 서로 다른 서비스들을 연결해주는 역할을 하는 기술이 ESB이다.

쇼핑몰에서 알람메시지 전송을 요청하면 ESB가 받아서 메시지 포멧으로 변환하고

카카오톡 메시지 API를 호출해서 전송한다.

 

이렇게 보면 정말 ESB가 실제 서비스들에서 얼마나 많이 사용되고 있는지 알 수 있다. 

 

 

ESB의 특징

1. 표준 인터페이스 기반의 통신

서로 다른 기관의 서비스를 서로 연결하기 위해서는 ESB에서 많은 변환과 처리가 이루어져야한다.

 

형식이나 규칙 프로토콜등 표준화된 인터페이스를 기반으로 한다면

어떤 서비스들을 연결하더라도 안정적으로 변환되고 연계가 가능하다.

 

 

 

2. 애플리케이션 간의 연관성이 적은 형태의 연동 지원

즉 시스템끼리 연결은 되어있지만 깊게 얽히지 않고 느슨하게 결합된 방식으로 연동된 것을 의미한다.

 

◾결합성이 높은 경우

A 가 B 를 작동하려면 B의 내부구조,로직등을 직접 알아야지만 작동을 할 수 있고

따라서 B가 바뀌면 A도 바뀌어야 하는 일이 발생

 

◾ 결합성이 낮은 경우

A는 B의 내부 구조를 모르고 요청만 하고 응답을 받는다

따라서 B의 내부 구조가 어떻게 바뀌어도 A의 변경사항은 없다.

 

🧐 A 가 B의 구조를 모르면 어떻게 연결이 이루어질까

 

이럴 때의 사용되는 것이 ESB이다.

 

A가 B의 구조를 모른다고 해도

그 중간에서 ESB가 중간 처리를 해주기때문에 느슨한 결합으로 연결이 가능하게되는 것이다.

 

 

 

3. 소프트웨어 컴포넌트를 조합하여 서비스를 조립

한마디로 각기 다른 기능들을 분리하고 조립해서 하나의 서비스를 만드는 것이다.

 

상품 하나 주문하는데 기능들이 전부 하나로 뭉쳐있을 경우

이렇게 하나의 기능을 만들 수야 있다.

 

하지만 다른 만약 같은 쇼핑몰에서 멤버쉽 결제를 하고싶다?

 

물론 이렇게도 기능은 돌아간다.

 

그런데 기능간에 동일한 로직이 있다는걸 알 수 있다.

즉 중복되는 코드가 계속 해서 생겨난다는 것이고 기능을 추가하거나 수정할때에도 매우 번거로워진다.

 

이때 각 기능을 쪼개어 조립을 하게될 경우는 어떨까

이런식으로 기능별로 분리를 해두면

어떤 서비스의 로직을 짠다고할지라도 분리된 컴포넌트들을 재조합하여 로직을 짤 수 있다.

 

그렇다면 새로운 서비스에 출금 기능이 필요하면

굳이 로직을 짤 필요없이 미리 만들어진 출금 컴포넌트만 가져오면 될 것이고

 

수정을 한다면 출금컴포넌트만 수정하면 모두 수정이 된다.

 

🧐 ESB는 여기서 무슨 역할을 하냐?

이 분리된 컴포넌트들을 연결해주고 순서대로 호출되도록 흐름을 제어해주는 역할을 하게된다.

 

 

 

 

4. 멀티 프로토콜 지원

각 기관마다 사용하는 프로토콜이 다르다.

프로토콜이 다를 경우에 연동이 매끄럽지 못하게되는데

이떄 멀티 프로토콜이 이런 각기 다른 프로토콜을 모두 이해하고 처리해주게된다.

'ESB' 카테고리의 다른 글

[ESB] ESB를 왜 사용할까  (5) 2025.08.18