MQ, AMQP

hyng·2022년 1월 5일
0

웹 채팅 토이 프로젝트 진행 중에 대화 내용을 저장하기 위한 방법을 찾던 중,
MQ를 알게 되었고 MQ, AMQP에 대해 알게된 내용을 정리합니다.
자세한 내용은 출처 자료 확인을 추천합니다.

MQ(Message Queue)란?

MQ란 프로세스(프로그램) 간에 데이터를 교환할 때 사용하는 통신방법 중 하나이다.

사용자가 접속해서 트래픽을 발생시키는 API와 데이터를 계속해서 처리하고 있는 분석 서버가 한 컴퓨터에서 같이 돌아가게 되면, 갑자기 트래픽이 폭주하는 상황에서 분석 서버가 죽거나 또는 분석할 데이터양이 늘어 분석 서버가 폭주해서 API 서버가 죽어버려 서비스를 하지 못하게 되는 문제가 발생할 수 있다.

그래서 백엔드의 front라 할 수 있는 API 서버와 백엔드의 back이라고 할 수 있는 Analysis 서버를 한 컴퓨터에서 모두 돌리는 것은 위험하다. -> 서버를 분할하자.

그럼 분할된 서버들이 어떻게 데이터를 주고받느냐가 문제인데, 분석 서버가 데이터 분석을 끝내고 이를 API 서버로 요청해서 데이터를 적재한다고 가정해보자.

분석 서버가 분석해야 할 데이터의 양이 갑자기 폭주해, API 서버가 폭주하는 데이터를 버텨내지 못하고 죽게 된다면 서비스는 멈추게 된다. 그래서 분할된 서버 간 다이렉트로 데이터를 주고받는 대신, 서버 사이에서 완충제 역할을 해줄
수 있는 큐를 가운데 두고 데이터를 큐에 적재하도록 하는 것이다.

데이터가 폭주할 때 분석은 추가적으로 안되겠지만 DB도 무사하고 인증서버도 무사하므로 서비스를 하지 못하는 최악의 상황을 피할 수 있다.

메시지 큐의 종류는 Kafka, RabbitMQ, ActiveMQ등이 있다.

2. AMQP(Advanced Message Queuing Protocol)

MQ의 오픈소스에 기반한 표준 프로토콜을 의미한다.

AMQP가 존재하기 전, 기존 MQ 제품들은 플랫폼 종속적이었기 때문에 이기종 간에 메시지 교환을 위해서는 메시지 포맷 컨버전을 위한 메시지 브릿지 이용(속도 저하) 하거나 시스템 자체를 통일해야 하는 불편함과 비효율성이 존재했다.

이러한 문제를 보완하기 위해 등장한 것이 AMQP이다.

출처

http://egloos.zum.com/killins/v/3025514
https://steady-snail.tistory.com/165
https://kamang-it.tistory.com/entry/AMQPRabbitMQRabbitMQ%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0%EC%99%80-%EC%84%A4%EC%B9%98%EB%B0%A9%EB%B2%95-1

profile
공부하고 알게 된 내용을 기록하는 블로그

0개의 댓글