송신자의 메시지 프로토콜 형식으로부터의 메시지를 수신자의 메시지 프로토콜 형식으로 변환하는 중간 컴퓨터 프로그램 모듈
메시지 브로커들은 응용 소프트웨어가 이전에 정의해둔 메지시를 교환할 수 있는 전기통신의 요소 또는 컴퓨터 네트워크이다.
요청과 그에따른 응답 및 반응을 처리할 때 두가지의 방법이 있다.
동기적 방법으로는 대표적으로 클라이언트-서버 아키텍처의 REST(HTTP)가 대표적이다. 예를 들어 세가지의 단계가 있는 작업이 있다고 가정할 때, 동기적 방법은 A를 완료한 사건을 B를 시작할 트리거로 삼아 순차적으로 진행하게 된다.
즉, 어떤 작업을 요청했을 때 그 작업이 종료될때 까지 기다린 후 다음 작업을 수행하는 방식이다.
비동기적 방법은 오늘 소개할 메시지 브로커(메시지 큐)라는 것이 있다.동기적방법과 달리 전 단계의 작업완료를 기다리지 않아도 되기 때문에 상태 또는 메시지를 보관할 곳이 필요하다. 그래서 메시지 큐를 이용한다.
분산 애플리케이션에서 프로세스 간의 느스한 결합을 제공하는 것이 가장 큰 장점이다.
만약, 강하게 결합된 시스템에서 장애가 발생한다면 어덯게 될까?
예를 들어 다음과 같은 사진에서 서버2에 장애가 발생하면 서버1에서 서버2로 가는 데이터유실이 발생하게 된다.
이때 메시지 브로커가 중간단계 역할을 하여 장애가 발생하더라도 메시지 브로커에 보관을 해놓기 때문에 데이터가 유실되지 않는다.
대표적인 메시지 브로커 세가지에 대해 알아보자.
Apache Kafaka는 고성능 데이터 파이프라인, 스트리밍 분석, 데이터 통합 및 미션 크리티컬 애플리케이션에 수천 개의 회사가 사용하는 오픈 소스 분산 이벤트 스트리밍 플랫폼이다.
그래서 카프카가 발신자와 수신자를 연결해준다.
AWS SQS는 마이크로서비스, 분산시스템 및 서버리스 애플리케이션을 쉽게 분리하고 확장할 수 있도록 지원하는 완전관리형 메시지 대기열 서비스이다.
AWS는 가용성과 확장성이 뛰어나고 선 결제 비용이 없어 설치 및 구성하는 시간과 비용을 절약할 수 있다. 그래서 신속하고 효율적인 구축 및 확장을 할 수 있다.
SQS를 사용하면 애플리케이션 구성요소를 분리할 수 있어서 구성요소가 독립적으로 실행되고 시스템의 전체 내결함성이 향상된다.
SQS에서는 서버측 암호화를 통해 각 메시지 본문을 암호화하여 민감한 데이터를 교환 할 수 있다.
AWS를 활용하여 필요에 따라 동적으로 확장된다.그리고 사용할 수 있는 대기열당 메시지 수에 제한이 없으며 표준 대기열은 거의 무제한의 처리량을 제공한다.
AWS Kinesis Data Streams는 모든 규모의 데이터 스트림을 쉽게 캡쳐, 처리 및 저장할 수 있는 서버리스 스트리밍 데이터 서비스이다.