inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Điều kiện để kỹ sư sống sót trong kỷ nguyên AI, thiết kế hệ thống Big Tech Hoa Kỳ, tư duy thuật toán, hoàn thiện thực hành mã nguồn mở

Message Queue + Hệ thống hàng đợi (feat. AWS, OLAP, Apache Flink) Ví dụ về Ticketmaster [Cập nhật]

예시 두개가 납득이 잘 가지않네요 ㅠㅠ

Đã giải quyết

227

mokdogdev

35 câu hỏi đã được viết

1

Ex1)

User -> Message Queue -> OrderService

(그림에서도 드레이크가 고개를 가로 젓고 있는데..)

 

이점이 별로 없어보입니다 불필요한 Network Hop이 생기는거같아요

Ex2)

Google Server -> Queue ->

<- Results Store

 

이 그림에서도 검색결과를 집계하는 프로세스를 분리하여 리소스를 효율적으로 사용한다는것 외엔 오히려 응답속도를 저하시킬거같아요..

소프트웨어-설계 시스템-디자인

Câu trả lời 2

1

americasnail

좋은 질문을 주셔서 감사합니다, 목동개발자님. 말씀하신 포인트가 맞습니다. 응답을 바로 반환해야 하는 경우, 메시지 큐를 사용하면 불필요한 홉이 생겨 응답 속도가 느려질 수 있습니다.

다만, 메시지 큐는 비동기 처리가 필요하거나 리소스 분리가 필요한 상황에서 특히 유용합니다. 즉각적인 응답이 요구되지 않거나, 시스템 간 작업을 독립적으로 처리할 필요가 있을 때 큐를 사용하는 것이 적합할 수 있습니다. 또한, 큐는 재시도 메커니즘을 지원하고, 대규모 시스템에서의 안정성을 높이는 장점이 있습니다. 이런 이유로 저 같은 경우에는 예시 1에서는 메시지 큐를 적용하여 자료에 반영했습니다.

  • User -> Message Queue -> OrderService 이러한 구조에서 사용자가 OrderService에 요청을 보낼 때, 메시지 큐를 거쳐야 하는 구조는 불필요한 네트워크 홉을 추가하고 실시간 응답 속도를 저하시킬 수 있습니다. 이러한 사용자-facing 서비스에는 메시지 큐가 적합하지 않을 수 있습니다. 즉, 실시간으로 응답이 필요한 상호작용에서는 큐가 불필요한 지연을 초래할 수 있습니다.

  • OrderService -> 내부 시스템: 반면, OrderService가 Analytics, Fulfillment System, Email Notification Service와 같은 비동기 작업을 수행할 때는 메시지 큐가 유용합니다. 이 과정에서는 즉각적인 응답이 요구되지 않으며, 메시지 큐를 통해 비동기로 처리할 수 있어 시스템 간 결합도를 낮추고 확장성 및 안정성을 높일 수 있습니다.

사용자-facing 부분비동기 백그라운드 작업을 구분해 메시지 큐를 적절히 사용하는 것이 중요하다는 점을 자료에서 설명하려고 했는데 설명이 부족했던 것 같습니다. 죄송합니다.

 

예시 2에서도 좋은 관점에서 질문을 주셨습니다. 수강생 분들이 배울 수 있는 부분이 될 것 같습니다.

예시 2의 시나리오는 사용자가 "piano cat"을 검색할 때, Google 서버는 데이터베이스에서 가장 관련성 높은 10개의 결과를 조회해야 합니다. 그리고, 트래픽이 갑자기 증가하여 초당 약 100만 건의 요청이 발생하고, 이로 인해 서버가 모든 요청에 즉각적으로 응답하기 어려운 상황이 됩니다. 이때 메시지 큐를 사용하여 각 검색 요청을 큐에 넣고 순차적으로 처리하는 방식으로 부하를 관리하려고 하는 것을 나타내었습니다.

이 구조에서 여러 요청을 동시에 받아 순차적으로 처리하면 서버의 과부하를 방지할 수 있으며, Google Server가 다른 작업을 처리할 여유도 확보할 수 있습니다. 또한, 서버가 다운되거나 장애가 발생하더라도 큐에 요청이 남아 있어 복구 후에도 처리가 가능합니다.

그러나, 목동개발자님께서 말씀하신 것처럼 사용자는 큐에 요청이 쌓일수록 대기 시간이 길어져, 실시간 검색 요청에서는 불편함을 느낄 수 있습니다. 100만 건의 요청이 쌓이면 상당한 지연이 발생할 수 있습니다.따라서, 실시간 응답 요구에 부적합 하다고 할 수 있습니다. 이 방식은 트래픽 급증 시 서버를 보호할 수 있지만, 사용자 경험이 중요한 실시간 검색 서비스에서는 적합하지 않을 수 있습니다.

따라서, 메시지 큐가 트래픽 급증 시 서버 부하를 관리하는 데 유용하다는 점을 보여드리고 있지만, 실시간성을 요구하는 서비스에서는 캐시나 분산 시스템과의 조합이 필요하다는 점을 이해하실 수 있도록 구성하고자 했습니다.

좋은 관점에서의, 수강생분들께 도움이 되는 포인트의 질문 해주셔서 감사합니다.

그리고, 다시 한번 저의 설명이 부족했던 점 사과의 말씀드리며,

추후 강의 자료에서 보충하도록 하겠습니다.

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 목동 개발자님께서 제시한 두 가지 예시에 대해 설명드리겠습니다.

Ex1: Message Queue와 OrderService

  • 유리한 점: 메시지 큐를 사용하는 두 가지 주요 이유는 비동기 처리와 시스템의 디커플링(Decoupling)입니다.

    • 비동기 처리: 메시지 큐는 사용자의 요청을 즉시 수락하고 나중에 처리할 수 있도록 합니다. 이는 사용자가 즉각적인 응답을 받지 않아도 되는 상황에서 시스템의 전반적인 성능을 개선할 수 있습니다.
    • 디커플링: 메시지 큐를 통해 OrderService와 사용자 요청 간의 의존성이 줄어듭니다. 이는 시스템 확장성과 유지보수를 용이하게 합니다.
  • Network Hop의 문제: 유효하지 않다면 메시지 큐가 불필요한 네트워크 홉을 추가하여 지연을 발생시킬 수 있습니다. 다만, 시스템 설계에서 이점을 제공할 수 있는 경우도 많습니다. 각종 실패 처리 및 재시도 메커니즘이 시스템 안정성을 보장할 수 있기 때문입니다.

유사한 질문에 대한 답변을 아래 링크에서 확인하실 수 있습니다:
- “메시지 큐의 장단점에 대한 이해”

Ex2: Google Server와 Results Store

  • 이 패턴은 종종 구글 검색과 같은 대규모 시스템에서 효과를 볼 수 있습니다. 검색 요청을 처리하는 담당을 분리하여 더 나은 리소스 관리가 가능합니다.
  • 리소스 효율성: 특정 서버가 지속적으로 검색 쿼리를 처리할 필요가 없어짐으로써 서버의 부하가 줄어듭니다.
  • 응답 속도: 큐를 사용하면 처리가 매우 복잡하거나 시간이 오래 걸릴 수 있는 요청을 균일하게 처리할 수 있습니다. 결과적으로 전체적인 서비스 안정성과 효율성을 높일 수 있습니다.

관련된 더 많은 정보는 다음을 참조해 주세요:
- “검색 시스템에서의 메시지 큐 사용 사례”

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

차단 등 검증 로직의 위치

0

66

2

Substack 1년 제공

1

61

3

특별 학습 자료 프로모션 1년 멤버십 무료 제공 문의드립니다

0

48

2

특별 학습 자료 프로모션 1년 멤버십 제공 관련 문의 드립니다.

0

89

2

simcached를 검색을 했을때 해당 자료가 나오지 않는데 혹시 MemcachedGPU 라고 불리는 기술을 말씀하시는건가요?

0

81

1

유튜브 예제에서 흐름 관련 질문있습니다

0

62

2

Spotify 서비스 설계에서 transcoder service에 대해 문의 드립니다.

0

83

1

특별 학습 자료 프로모션 1년 멤버십 무료 제공 지원 확인 방법

0

125

2

[위치 이름 기반으로 호텔을 조회하는 메서드] 코드 질문 드립니다.

0

68

2

14강. 영화 DVD 대여 시스템 데이터베이스 스키마 설계에서 Inventory 테이블 질문있습니다.

0

89

2

Matching Service의 MQ 필요성, Cassandra의 필요성, Cassandara - RDB 동기화

0

107

2

Imgur 이미지 호스팅 서비스 질문

0

104

2

쿠폰 문의

0

105

1

Redis 랜덤 값 추가 시 메타데이터 저장

0

101

1

Blob Storage에서 파일 업로드에 대한 동시성을 어떻게 제어할 수 있을까요?

0

124

2

채팅을 영속할 DB로 RDB를 선택한 이유도 궁금합니다

0

311

2

URL 단축 서비스에서 redis counter를 사용하는 이유가 무엇인지 궁금합니다.

0

227

2

long url을 파티션키로 지정했을때 장점이 생각 안나네요 ㅎㅎ;;

0

150

2

실제 인터뷰에서도 Object Oriented Design 을 이런 과정으로 하는걸까요?

0

182

1

able to get all students who got a "d+" grade or lower 요구사항

0

127

1

number of copies 컬럼은 Inventory Table에 들어가야하지않을까요?

0

185

3

Spotify 서비스 시스템 디자인 및 스케일링에서 백업 클러스터 사용에 대한 문의

0

105

2

URL 단축 서비스 시스템 디자인 및 스케일링 질문있습니다.

0

203

2

강의자료는 제공 불가능할까요?

0

240

1