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

이재영님의 프로필 이미지

작성한 질문수

모르면 승진 안되는 시스템 디자인

채팅(Chatting) 시스템

채팅 시스템 key value 관련 질문이 있습니다!

24.07.29 22:30 작성

·

88

0

우선 정말 좋은 강의 제작해 주셔서 감사합니다!

채팅 시스템 관련 강의 약 19분 경에 나온 데이터 모델 설계에 대해 궁금한 점이 있습니다.

DynamoDB와 같은 key-value 저장소를 기반으로 1:1 채팅을 구현할 때, pk(key)message_id 로 설정해주셨는데요.

사용자가 로그인하여 사용자 식별자(user_id)를 얻었을 때, 이 user_id를 이용해 어떻게 관련 message_id들을 조회할 수 있을지 머릿속으로 잘 그려지지 않는데 혹시 이에 대해 좀 더 설명해주시면 정말 감사하겠습니다!!

제 생각으로는 GSI를 활용해 user_id를 별도의 키로 설정하거나, 다른 형태의 추가 키가 필요할 것 같아보여서요
아니면 혹시 이 key-value 저장소가 임시 저장 용도로만 사용되는 건가요?

답변 1

0

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

2024. 07. 30. 07:01

구현하시는 시스템의 요구 사항에 따라 많은 것이 달라집니다. 강의에서 가정하는 시스템은 1:1 chat을 가정한 것으로 일단 사용자 인증이 끝나면 별다른 보안 사항을 고려하지 않고 디자인 되어 있습니다. (강의 마지막에 보안 관련한 논의가 필요하다고 명시되어 있습니다.) user id는 로그인 때만 사용되고, 일단 채팅이 열리면 message_id를 가지고 채팅방 메시지를 관리한다고 이해하시면 됩니다. 특정 user와 채팅방, 그리고 메시지의 연관성은 고려되지 않고 단지 채팅 메시지만 주고 받는 것을 가정하여 시스템이 디자인된 것입니다.

모든 요구 사항에 맞는 시스템을 이 강의에서 디자인하거나, 일일이 답변 드리기 어려운 점 양해부탁드립니다.