1. 문제 이해 및 설계 범위 확정
- 1대1 채팅과 그룹 채팅 전부 지원 가능
- DAU 5천만명
- 텍스트 메시지 보내기만 지원
- 사용자 접속 상태 표시 지원
2. 개략적 설계안 제시 및 동의 구하기
채팅 서비스의 경우 어떤 통신 프로토콜을 사용할 것인가도 중요한 문제이다.
HTTP 프로토콜을 사용하면 서버에서 클라이언트로 메시지를 보낼 수 없다. 즉, 수신 측 클라이언트에 대한 고려를 더 해보아야하는데 이를 위한 기술들을 살펴보자.
폴링
- 주기적으로 서버에게 새 메시지 존재 여부를 물어보기
- 답해줄 메시지가 없을 경우 서버 자원이 불필요하게 낭비된다.
롱 폴링
- 클라이언트는 새 메시지가 반환되거나 타임아웃 될때까지 연결을 유지한다.
- 새 메시지를 받으면 기존 연결을 종료하고 서버에 새로운 요청을 보내 모든 절차를 다시 시작한다.