본문 바로가기

개발/대규모 시스템 설계15

13장 - 검색어 자동 완성 시스템 13장 - 검색어 자동 완성 시스템 요구사항 빠른 응답 속도 문자 입력에 대한 자동완성 단어 노출은 100ms 이내여야 한다 연관성 입력한 단어와, 자동완성 단어는 연관 된 단어여야 한다 정렬 자동완성 단어 선정 계산 결과는 인기도 등의 순위 모델에 의해 정렬 되어야 한다 규모 확장성 시스템이 많은 트래픽을 감당할 수 있도록 확장이 가능해야 한다 고가용성 시스템의 일부에 장애가 발생하거나, 느려지거나, 예상치못한 네트워크 문제가 발생해도 시스템 사용은 계속 가능해야 한다 개략적 규모 추정 일간 능동 사용자 (DAU) 는 1000만 명으로 가정 평균적으로 한 사용자는 하루 10건의 검색을 수행 평균적으로 20 byte 규모의 데이터를 입력 글자가 입력 될 떄마다 백엔드로 요청 위 데이터를 조합하면 초당 2.. 2023. 10. 29.
12장 - 채팅 시스템 설계 (2) - 접속 상태 [이전글] 12장 - 채팅 시스템 설계 (1) - 메세지 흐름 접속 상태 표시 사용자 로그인 클라이언트와 채팅 서버 간에 web-socket 연결이 맺어지면, last_active_at 이라는 타임스탬프 값을 키-값 저장소에 저장하여 접속상태를 확인한다 위 절차가 끝나면 해당 사용자는 접속 중인 것으로 표시된다 로그아웃 사용자는 API 서버로 로그아웃 요청을 보내고, API 서버는 접송상태 서버에 접속 상태 변경을 요청한다 접속 장애 WebSocket 과 같은 지속적인 연결을 맺고 있음에도, 일시적인 접속 장애는 늘 발생할 수 있다 예를들면 데이터가 터지지 않는 터널을 지날때, 접속 상태가 offline으로 변해야 하는가? 위와 같은 일시적인 접속 장애를 유연하게 대처하기 위해 심장박동(heartbeat.. 2023. 9. 6.
12장 - 채팅 시스템 설계 (1) - 메세지 흐름 채팅 시스템 요구사항 응답 지연이 낮은 1:1 채팅 기능 최대 100명까지 참여할 수 있는 그룹 채팅 기능 사용자의 접속 상태 표시 기능 다양한 단말 지원, 하나의 계정으로 여러 단말 동시 접속 지원 Push 알림 Client - Server 통신에서의 요구사항 1) Client -> Server 메세지 수신 2) 메세지 수신자 결정 및 전달 3) 수신자가 접속(online) 상태가 아닌 경우, 접속할 때까지 메세지 보관 메세지 송신 메세지 송신의 주체는 Client이다. (Client to Server) 따라서 Client의 요구가 있을 때 HTTP 프로토콜을 사용할 수 있다 keep-alive 헤더를 이용하면 connection을 효율적으로 유지할 수 있다 keep-alive 헤더를 사용하면 TCP .. 2023. 8. 30.
11장 - 뉴스 피드 시스템 설계 페이스북의 뉴스 피드에 대한 정의 뉴스 피드는 여러분의 홈 페이지 중앙에 지속적으로 업데이트 되는 스토리들로, 사용자 상태 정보 업데이트, 사진, 비디오, 링킄, 앱 활동, 그리고 여러분이 팔로우하는 사람들, 페이지, 그룹으로부터 나오는 좋아요 등을 포함한다 설계 검토 항목 지원 시스템 모바일 앱 웹 중요한 기능 뉴스피드에 새로운 스토리를 발행할 수 있어야한다 친구들이 올린 스토리를 볼 수 있어야 한다 뉴스피드 스토리 노출 순서 토픽 점수(Topic Score) 시간 흐름 역순 한 명의 사용자가 최대 몇 명의 친구를 가질 수 있는가 ex) 5000명 트래픽 규모 DAU - 1000만 피드에 포함되는 항목 이미지, 비디오를 포함한다 설계 범주 분류 1) 피드 발행 (feed publishing) 2) 뉴스.. 2023. 8. 5.
반응형