메세지 큐 (MQ)

Minky·2021년 11월 15일
0

회사에서 맡게된 업무 중 메세지큐를 도입하기로 하였고 메세지큐에 대해 잘몰라 개념 숙지겸 기록한다.

메세지 큐란?

메세지 지향 미들웨어(MOM)을 구현한 시스템. 데이터를 서로 교환할때 사용하는 방법. Kafka, RabbitMQ, ActiveMQ등이 있다.

중간에 큐를 두고 테이터를 처리하여, 많은 데이터 통신으로 병목현상이 생기고 서버의 성능이 저하되는걸 미들웨어에 위임하여 순차적으로 처리하게끔 한다. (각 시스템끼리 영향을 주지 않도록 중간에 미들웨어를 두는것..Loosely coupled System)

알아두면 좋은 개념

  • 메세지 지향 미들웨어 (MOM) 분산 시스템간 메세지를 주고 받는 기능을 지원하는 소프트웨어나 하드웨어 인프라
  • 브로커 Message Queue 시스테
  • AMQP (Advanced Message Queueing Protocal) 메세지 지향 미들웨어를 위한 프로토콜

  • producer = publisher (생산자) 메세지를 발행. 큐에 넣는다.
  • Exchange producer로 부터 메세지를 수신받고 큐에 분배.
  • Queue 메세지를 보관하는곳. 큐는 컨슈머에게 메세지를 전달한다.
  • Consumber = subscriber 메세지를 받는곳. 큐에 있는 메세지를 가져온다.
  • Queue 방식 / Topic 방식
    • Queue : 여러 컨슈머를 둘수있지만, 동일한 메세지가 여러 컨슈머로 전달되지 않는다 (point to point)
    • Topic : 여러 subscriber가 하나의 메세지를 각자 처리할 수 있음. (point to Multi-point, broadcast)

SNS 와 SQS

  • SNS (Simple Notification Service)
    • 메세지(Topic)를 발행해주는 push형 서비스. Pub/sub 메시징 서비스.
    • publisher가 subscriber에게 메세지를 전송하는 관리형 서비스.
    • lambda, sqs, email등의 다양한 전달방식을 쓸 수 있음.
  • SQS (Simple Queue Service)
    • 동일한 로직을 수행할 경우를 대비해 validation 작업 필요할수도 있음. (2회 이상 동일한 메세지가 전달될수 있으므로)
    • Queue, pull형 방식 (컨슈머가 직접 꺼내와야함).
    • 완전관리형(고객이 직접 어플리케이션을 구성하는 작업이 필요 없는) 메세지 큐를 제공하는 서비스.
    • 큐에 있는 메세지들은 하나의 cunsumer, 서비스에서 실행된다.
    • 메세지를 처리를 했으면 delete로 직접 삭제해줘야한다.
    • Visibility timeout : 하나의 컨슈머가 큐에서 메세지를 사용하고, 다른 컨슈머에서 액세스 할 수 없는 시간. 이걸 이용해서 동시에 꺼낼 수 없도록 한다. (default 30초 ~ 0초 ~12시간까지 가능)
      ⇒ 이 옵션을 통해, 큐를 삭제하지않거나 이 시간이 끝나기전까지 처리가 안된다면 ,다시 큐가 살아난다. 충분한 시간을 줘야한다.
    • Long Polling : 수신자가 메세지를 얻을 수 있을대까지의 기다리는 시간. 큐에 메세지가 없는 경우 컨슈머에서는 계속 request를 날려 비용발생. (default = shot polling).
      ⇒ 메세지가 잇으면 즉시 꺼내오고, 메세지가 없으면 long polling의 시간동안 응답을 주지않아 request를 줄여줄수 있다.
    • Dead Letter Queue : 제대로 ㅓ리하지못한 메세지를 이 큐에 보관하고 원인 분석 후에 처리할수있도록 활용할 수 있다.

💡 Queue 방식 / Topic 방식

  • Queue : 여러 컨슈머를 둘수있지만, 동일한 메세지가 여러 컨슈머로 전달되지 않는다 (point to point)
  • Topic : 여러 subscriber가 하나의 메세지를 각자 처리할 수 있음. (point to Multi-point, broadcast)

참고

https://jaemunbro.medium.com/aws-메시징서비스-비교-kinesis-sqs-sns-ab397a07cb1d

https://seohyun0120.tistory.com/entry/AWS-SNS-vs-SQS-차이점

https://www.youtube.com/watch?v=IafgrRB2quY

profile
소통하는 Web Developer가 되고 싶습니다 :)

0개의 댓글