[네트워크] 비동기 메시지 전송하기
본문 바로가기

Computer Science/Network

[네트워크] 비동기 메시지 전송하기

보이저엑스 백엔드 기술 질문동시 사용자 1만명을 지원하는 채팅 서버를 어떻게 만들겠는가? 에 대해 공부하다가 "비동기 메시지 전달"에 대해 더 자세히 학습한 내용, 추후 실습 진행 예정

 

비동기 메시지 전달 방식

  1. 메시지 생성 및 전송 : 클라이언트 또는 애플리케이션 서버가 메시지 생성하여 브로커 전달
  2. 메시지 브로커의 역할 : 메시지 브로커가 메시지 수신하여 큐(queue)나 토픽(topic)에 일시적으로 저장, 수신자가 메시지를 처리할 준비가 될 때까지 보관
  3. 메시지 수신 및 처리 : 수신자는 메시지 크로커에 연결되어 대기하다가 준비가 되면 브로커로부터 메시지를 가져와서 처리 ex) 다른 사용자에게 메시지를 전달하거나 데이터베이스에 저장

비동기 메시지 전달이 효율적인 이유

  1. 비동기성
    • 송신자와 수신자가 동시에 작동할 필요 없음. 송신자는 메시지를 보내고 바로 다른 작업을 할 수 있고, 수신자는 나중에 메시지 처리할 수 있음
    • 시스템의 처리 속도를 높이고 자원 사용을 최적화할 수 있음
  2. 높은 확장성
    • 메시지 브로커는 다수의 송신자와 수신자를 중계할 수 있으며, 시스템의 부하가 증가할 때 수신자를 쉽게 추가하여 확장할 수 있음
    • 메시지 브로커는 메시지를 일시적으로 저장하여 시스템이 급격한 부하 증가에 유연하게 대응할 수 있도록 함
  3. 내결함성
    • 송신자와 수신자가 직접 연결되지 않기 때문에 한쪽이 장애가 발생해도 다른 쪽은 계속해서 작업 수행 가능
    • 메시지 브로커는 메시지를 안전하게 저장하여 시스템 장애 시에도 데이터 손실 방지

예시

채팅 애플리케이션에서, 사용자가 메시지를 보내면 메시지 브로커에 저장된다. 이 메시지는 수신자 클라이언트가 연결될 때까지 대기 상태로 남아 있다. 수신자가 온라인 상태가 되면 메시지 브로커에서 메시지를 가져와 화면에 표시한다. 이는 실시간 응답성을 유지하면서도 시스템 부하를 효율적으로 분산시킨다.

 

결론적으로, 비동기 메시지 전달은 시스템의 유연성과 효율성을 높이며, 높은 동시성과 확장성을 필요로 하는 애플리케이션에 매우 유용하다.

실습

 

'Computer Science > Network' 카테고리의 다른 글

[네트워크] HTTP  (0) 2024.06.02
[NW] 학부 과정 복습  (0) 2024.05.09