강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

핫산님의 프로필 이미지
핫산

작성한 질문수

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

5-15. 비동기 처리 - 대표적인 사례

강의를 듣다가 알림전송 관련 궁금한 점이 생겨 질문드립니다!

해결된 질문

작성

·

49

0

1. 현재 학습 진도

  • 몇 챕터/몇 강을 수강 중이신가요?

     

    5-15. 비동기 처리 - 대표적인 사례 (22분~23분)

  • 여기까지 이해하신 내용은 무엇인가요?

여러개의 알림을 전송 할 때 비동기로 알림을 전송하게 된다면 n개의 알림을 1개의 알림을 전송하는 시간과 같은 시간으로 전송할수 있다.

 

2. 어려움을 겪는 부분

  • 어느 부분에서 막히셨나요?

100만개의 알림을 1개의 알림 전송 시간으로 보내려면 어떻게 해야하나요?

 

3. 시도해보신 내용

  • 문제 해결을 위해 어떤 시도를 해보셨나요?

     

 제 생각에는 메세지 큐를 중간에 두어서 100만개의 알림을 일단 메세지 큐에 넣고 알림 서버의 리소스를 고려해서 토픽?을 주면 될거 같은데 맞나요?

갑자기 궁금해져서 질문드립니다!

이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다!

답변 2

0

딩코딩코님의 프로필 이미지
딩코딩코
지식공유자

준혁님 좋은 질문 해주셔서 감사합니다.

100만개 알림 전송은 면접에서 이야기할만한 재밌는 주제인 것 같습니다!!

단순히 100만개 알림을 순차적으로 보내면 1개당 100ms라고 가정할 때 총 100,000초(약 28시간)가 걸립니다. 사용자 입장에서는 완전히 실시간성을 잃어버리게 됩니다.

따라서 준혁님이 제안하신 메시지 큐 접근이 정확합니다! 하지만 여기서 핵심은 컨슈머 개수를 조절하는 것입니다.

실제로 1000개 컨슈머가 동시에 처리하면 각 컨슈머당 1000개씩 담당하고, 1000개 × 100ms = 100초면 완료될 것이라 28시간에서 2분으로 단축이 될 것 같습니다!

따라서 이력서에 "대용량 알림 시스템에서 메시지 큐와 컨슈머 스케일링을 통해 100만건 알림 처리 시간을 28시간에서 2분으로 단축, 시스템 안정성 확보" 와 같이 작성하게 되고,

실제 프로젝트에서 이런 경험을 쌓으면 면접관들이 "어떻게 컨슈머 개수를 결정했나요?" "병목 지점은 어디였나요?" 같은 깊이 있는 질문을 할 텐데, 그때 리소스 모니터링과 부하 테스트 결과로 답변하면 더 좋은 결과를 만들 수 있을 것 같습니다!

관련한 기술블로그 글을 한번 참고해주셔도 좋을 것 같습니다 좋은 하루 보내세요!! https://medium.com/daangn/%EB%8B%B9%EA%B7%BC%EB%A7%88%EC%BC%93%EC%9D%98-%ED%91%B8%EC%8B%9C%EC%95%8C%EB%A6%BC%EC%9D%84-%EC%A7%80%ED%83%B1%ED%95%98%EA%B3%A0-%EC%9E%88%EB%8A%94-node-js-%EC%84%9C%EB%B9%84%EC%8A%A4-19023ad86fc

0

안녕하세요, 인프런 AI 인턴입니다. 유준혁님.

100만 개의 알림을 효율적으로 비동기로 전송하려면, 일반적으로 메시지 큐비동기 프로세싱 방법을 사용하는 것이 효과적입니다. 이를 통해 서버의 부담을 줄이고 안정적인 전송을 할 수 있습니다.

1. 메시지 큐 사용

  • 메시지 큐는 Kafka, RabbitMQ, AWS SQS 등 다양한 솔루션이 있습니다. 알림을 전송할 때 큐가 중간에서 역할을 하여, 대량의 요청을 큐에 쌓고 비동기적으로 소비하게 됩니다.
  • 이를 통해 100만 개의 알림을 전송하는 동안 서버가 한 번에 모든 알림을 처리하지 않고, 큐에 쌓인 요청을 하나씩 또는 여러 개씩 별도의 소비자에서 처리할 수 있습니다.

2. 비동기 프로세싱

  • 비동기 처리로 알림을 전송하면, 알림 생성 후 즉시 다음 프로세스로 넘어가면서 알림 전송을 백그라운드로 돌리게 됩니다.
  • 이 과정에서 여러 개의 소비자가 메시지 큐에서 메시지를 처리하며 병렬로 다수의 알림을 전송할 수 있습니다.

3. 고려 사항

  • 부하 조절: 소비자가 알림을 처리하는 속도를 조정하여 서버 과부하를 방지하고 안정적인 알림 전송을 유지합니다.
  • 실패 처리 및 재시도 전략: 알림 전송 실패 시 재시도 로직을 추가하여 알림의 누락을 방지합니다.

관련하여 깊이 있는 논의는 다음의 링크를 참조하시면 도움이 될 것입니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

핫산님의 프로필 이미지
핫산

작성한 질문수

질문하기