inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

AI 시대에도 살아남는 엔지니어의 조건, 미국 빅테크 시스템 디자인·알고리즘 사고·오픈소스 실무 완성

WhatsApp 왓츠앱 메시징 서비스 시스템 디자인 및 스케일링 DeepDive [업데이트]

차단 등 검증 로직의 위치

3

한재현

작성한 질문수 8

0

WhatsApp 채팅 아키텍처 설계에 대한 질문입니다. 영상에서는 참가자가 ws 서버에 메시지를 보내면 바로 Redis pub/sub으로 들어가고, 람다나 Stream을 통해 DB로 저장하는 방식을 설명하고 있습니다.

하지만 DB 저장에 앞서 채팅방 참가 여부 검증, 메시지 전송 차단/해제, 구독자만 전송 가능 등의 검증(validation)이 필요한 경우가 있을 것 같습니다. 또한 이 경우 사용자에게 메시지 전송 실패/불가라는 즉각적인 피드백도 제공해줘야 할 것입니다. ws 서버에서는 보통 검증 로직은 담당하지 않는 것으로 알고 있는데, 이 경우 어디에 검증 로직을 넣는 게 적당할까요?

dbms/rdbms 소프트웨어-설계 시스템-디자인 인공지능(ai) ood

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 한재현님께서는 WhatsApp 채팅 아키텍처의 설계 관련하여 검증 로직에 대한 질문을 주셨습니다. 이 질문은 백엔드 시스템 설계에서 메시지 전송을 위한 검증 로직의 위치를 결정하는 중요한 주제입니다.

검증 로직의 위치

  1. 웹소켓(ws) 서버:

    • 즉각적인 피드백 제공: 사용자가 메시지를 보낼 때, 즉각적인 피드백을 제공하기 위해서는 웹소켓 서버에서 가능한 검증을 수행하는 것이 유리할 수 있습니다. 예를 들어, 채팅방 참가 여부와 같은 간단한 검증은 웹소켓 서버에 캐싱된 데이터를 이용하여 빠르게 처리할 수 있습니다.
  2. 미들웨어 또는 API 게이트웨이:

    • 공통 검증 로직 적용: 여러 서비스가 연결되는 환경에서는 미들웨어나 API 게이트웨이를 통해 검증 로직을 관리할 수 있습니다. 이는 코드 중복을 줄이고 공통 로직을 한 곳에서 관리하게 해줍니다.
  3. Lambda 또는 Stream 처리 전에:

    • 최종 검증 단계: Lambda나 Stream 처리 전에 최종 검증을 통해 데이터의 무결성을 한 번 더 확인할 수 있습니다. 이 단계에서 데이터베이스 조회와 같은 복잡한 검증이 수행될 수 있습니다.

피드백 제공

즉각적인 피드백이 필요한 검증 로직은 요청이 처리될 때마다 클라이언트에게 바로 결과를 반환하는 구조가 필요합니다. 이는 비동기적으로도 구현할 수 있으며, 사용자 친화적인 경험을 제공합니다.

관련된 질문과 답변을 통해 더 많은 정보를 얻고자 하신다면 아래 링크를 참고하세요:

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

Substack 1년 제공

1

37

3

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

0

33

2

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

0

77

2

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

0

70

1

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

0

55

2

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

0

78

1

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

0

105

2

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

0

54

2

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

0

86

2

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

0

96

2

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

0

91

2

쿠폰 문의

0

94

1

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

0

94

1

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

0

111

2

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

0

286

2

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

0

219

2

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

0

143

2

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

0

170

1

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

0

123

1

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

0

176

3

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

0

97

2

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

0

197

2

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

1

213

2

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

0

228

1