구글 같은 검색창 서비스를 이용하다보면 입력 중인 글자에 맞는 검색어들이 자동으로 추천된다. 이러한 시스템을 설계해보자.
1. 문제 이해 및 설계 범위 확정
요구사항
- 빠른 응답속도 : 사용자가 검색어를 입력함에 따라 자동 완성 검색어도 충분히 빨리 표시되어야 한다.
- 연관성 : 자동완성되어 출력되는 검색어는 사용자가 입력한 단어와 연관된 것이어야 한다.
- 정렬 : 시스템의 계산 결과는 인기도 등의 순위 모델에 의해 정렬되어 있어야 한다.
- 규모 확장성 : 시스템은 많은 트래픽을 감당할 수 있도록 확장 가능해야한다.
- 고가용성 : 시스템에 일부 장애가 발생하거나 느려지거나 예상치 못한 네트워크 문제가 생겨도 시스템은 계속 사용 가능해야한다.
개략적 규모 추정
- DAU : 천만명
- 평균적으로 한 사용자는 매일 10건의 검색을 수행한다고 가정
- 검색할 때마다 평균 20byte의 데이터 입력 가정
- 검색창에 글자를 입력할 때 마다 클라이언트는 검색어 자동완성 서버에 요청을 보낸다.
- 따라서 평균적으로 1회 검색당 20건의 요청이 백엔드로 전달된다.
- 초당 24,000건의 QPS가 발생한다.
- 최대 QPS = 24,000 * 2 = 48,000