본문 바로가기
CS/기본기 탄탄📌자료들

메세지 큐 & 카프카 기본

by IMSfromSeoul 2022. 3. 18.

📦 메세지 큐

메세지 큐란?

메세지 큐란 프로세스 또는 프로그램 간에 데이터를 교환할 때 사용하는 통신 방법 중에 하나로, 메세지 지향 미들웨어(Message Oriented Middleware:MOM)를 구현한 시스템을 의미한다.

 

메세지 지향 미들웨어란 비동기 메세지를 사용하는 응용 프로그램들 사이에서 데이터를 송수신하는 것을 의미한다.

여기서 메세지란 요청, 응답, 오류 메세지 혹은 단순한 정보 등의 작은 데이터를 의미한다.

 

메세지 큐는 메세지를 임시로 저장하는 간단한 버퍼라고 생각하면 된다.

메세지를 전송 및 수신하기 위해 중간에 메세지 큐를 두는 것이다.

  • 메세지는 생산자로 취급되는 Component가 메세지를 메세지 큐에 추가함으로써 생성된다.
  • 해당 메세지는 소비자로 취급되는 또 다른 Component가 메세지를 검색한 메세지를 사용해서 특정 작업을 수행할 때까지 메세지 큐에 저장된다.
  • 각 메세지는 소비자에 의해 단 한번만 처리될 수 있다.
    • 이러한 이유로 메세지 큐를 이용하는 방식을 일대일 통신이라고 부른다.

메세지 큐의 사용 이유?

일반적인 서버 클라이언트 구조에서는 메세지 큐를 사용할 필요가 없다.

오히려 메세지 큐의 사용법을 익히고, 시스템 목적에 맞는 큐를 골라야 하며, 시스템에 따라 옵션을 추가해주어야 한다. 즉, 추가 작업이 들어간다.

 

메세지 큐는 실패하면 치명적인 핵심 기능보다는, app의 부가적인 기능에 사용하는 것이 적합하다.

왜냐하면 메시지 큐안에 들어있는 메세지들은 특정 시점에 소비자에 의해 처리될 것이 보장되지 않는다.

즉, 그저 언젠가 큐에 넣어둔 메세지가 처리될 것이라 기대한다.

메세지 큐의 사용 예시

🔖 이메일 전송

어떤 웹 사이트의 비밀번호를 잊어버려서 인증코드를 받는 상황을 생각해보자.

우리는 인증코드 이메일이 즉각적이고 빠르게 올 것이라 생각하지 않을 것이다.

즉, 어느정도의 응답 지연이 허용되며, 이런 경우 app의 핵심 기능은 아니므로 이런 경우 메세지 큐가 도움이 될 수 있다.

  • 비밀번호 재설정을 위해 이메일을 발급하는 서비스, 회원가입을 위해 이메일을 발급하는 서비스 등은 메세지( 여기서는 이메일 )를 큐에 넣을 수 있다.
  • 이메일 전송 전용 서비스는 이메일이 어느 서비스로부터 생산됐는지 관게 없이, 그저 메세지 큐의 이메일을 하나씩 소비하고 그저 이메일이 전송돼야 할 발신지로 이메일을 보낼 뿐이다.
  • 이와 같은 접근 방식은 메세지 큐에 들어오는 메세지 수가 너무 많아지는 경우 이메일 전송 전용 서비스 인스턴스를 더 둠으로써 확장할 수 있으므로 확장성이 뛰어나다.

 

🔖 블로그 포스팅

만약 사용자가 고용량의 이미지 파일을 올렸다고 가정해보자.

이 때, 사용자가 업로드한 모든 이미지를 게시 과정에서 즉각 처리하는 것이 아닌 사후 처리를 하며 최적화하는 방법이 있다.

  • 1. 사용자가 고용량의 이미지를 올린다.
  • 2. 이미지는 저장소에 저장된다.
  • 3. 업로드 된 이미지에 대한 정보가 포함된 메세지를 이미지 최적화 서비스의 메시지 큐에 담는다.
  • 4. 이미지 최적화 서비스는 저장소에서 이미지를 가져와 최적화하고, 2번에서 저장해놨던 이미지를 대체한다.

즉, 이미지를 고대로 저장해서 고대로 돌려주는 것이 아니라 이미지 최적화 서비스 메세지 큐에 사진에 대한 meta-data를 넣어놨다가 최적화를 해서 사용자에게 돌려주는 것이라고 생각하면 될 것 같다.

메세지 큐의 이점

  • 비동기
    • 기존의 동기화 방식은 메세지가 전송될 경우 병목 현상이 발생할 수 있지만, 비동기 방식이므로 나중에 처리할 수 있다.
  • 낮은 결합도
  • 확장성
  • 탄력성
  • 보장성

📦 카프카란?

공식사이트에서 분산 이벤트 스트리밍 플랫폼

즉, 스트리밍을 처리하기 위한 플랫폼이다.




1. 메세지 큐
대부분의 내용 : ( https://tecoble.techcourse.co.kr/post/2021-09-19-message-queue/ )


'CS > 기본기 탄탄📌자료들' 카테고리의 다른 글

NHN 2차 pretest 후기 & 희찬 피드백 모음  (0) 2021.11.13
네트워크 재정리  (0) 2021.11.09
JVM 관련 정리  (0) 2021.06.18
210611 네이버 웹툰 인턴 면접 review  (0) 2021.06.16
Ssafy 6기 면접대비  (0) 2021.06.13

댓글