콘텐츠로 이동

2023 11 21

2023-11-21

MQ

참고: https://tecoble.techcourse.co.kr/post/2021-09-19-message-queue/ 개요

  • 메시지 큐: 프로세스 또는 프로그램 간에 데이터를 교환할 때 사용하는 통신 방법 중 하나
    • 메시지 지향 미들웨어를 구현한 시스템을 의미
  • 메시지 지향 미들웨어
    • 비동기 메시지를 사용하는 어플리케이션 사이에서 데이터를 송수신 하는 것을 의미
      • 메시지: 요청/응답/오류 메시지/단순 정보 등 작은 데이터
  • 메시지 전송자 (Producer) -- 메시지 큐 --> 메시지 소비자 (Consumer)
    • 각 메시지는 하나의 소비자에 의해 한번만 처리됨
    • 메시지 큐를 따라서 1:1 통신으로 부름
  • When to use it?
    • 간단한 서버에선 굳이
    • 시스템의 목적에 맞는 메시지 큐를 선정해야 함
      • 메시지 큐의 사용법도 익혀야하고, 지원하는 다양한 옵션 중에 시스템이 추구하는 목적에 맞는 옵션도 설정해야 하고...
    • 메시지 큐는 소비자가 실제로 메시지를 어느시점에 가져가서 처리하는지 보장 X
      • 큐에 넣어둔 메시지가 소비될것이라고 믿는 것
      • 비동기적 특성으로인해 실패하면 치명적인것 X, 어플리케이션의 부가기능으로 사용하는것이 적합
  • 예시1. 이메일
    • 비밀번호 잊어버려서 임시 비밀번호 이메일로 발급
    • 바로 리얼타임일 이유는 없음 -> 알아서 오겠거니~
    • 어느 정도의 응답지연이 허락되며 + 어플리케이션의 메인 기능은 아닌 것
    • 그니까
      • 비밀번호 재설정 위해 이메일 발급 데이터를 큐에 넣자
      • 이메일 전송 전용 서비스는 생산자는 알바없고, 메시지큐의 메시지 하나씩 소비하고 보내야 할곳으로 보내기만 하면 ㄱㅊ
      • 메시지 수 많아지면 그냥 서비스 인스턴스 더 둠으로 확장 가능
  • 예시2. 블로그 포스팅
    • 블로그 사용자의 컴퓨팅 사양이 낮아 응답시간이 저해될 수 있음
    • 사용자가 업로드한 이미지를 게시 과정에서 즉각 처리하지말고, 사후 처리로 이미지 최적화 할 수 있음
    • 그니까
      • 고용량 이미지 포스팅 됨
      • 이미지 저장소에 전송됨
      • 업로드된 이미지 정보가 포함된 메시지를 이미지 최적화 서비스의 메시지 큐에 담음
      • 이미지 최적화 진행
  • MQ 장점
    • 비동기
    • 낮은 결합도
    • 확장성
    • 탄력성
    • 보장성