-
Notifications
You must be signed in to change notification settings - Fork 0
4주차 멘토링
Ji Yoon Choi edited this page Dec 1, 2022
·
14 revisions
1. 사용자 간에 소통할 수 있는 기능이 있으면 좋겠다는 생각이 있어서 sse 를 이용한 쪽지 기능을 넣고자 합니다. 하지만 남은 시간이 많지 않아서 최대 일주일 정도를 투자 할 수 있을 것 같은데, 시도하는 것과 현재 구현된 기능에 대한 문서 정리를 하는 것 중에 어떤 것이 괜찮을까요?
- 메타인지
- 소켓 / Long Polling / SSE 세 개를 비교해보고 정해보는 것도 좋을듯
- SSE는 특정 브라우저에서 지원을 안 함
- IE는 지원 X, 나머지는 어지간하면 (버전이 정말 낮지 않으면) 지원을 함
- => IE도 사용자가 1%는 되기 때문에, 사용자 1%를 잃을 각오를 한다면 괜찮고 아니면 롱 폴링이나 웹소켓을 생각해야 함
- 보통 IE는 롱 폴링으로 구현
- 또는 크롬 설치 페이지로 안내
- DB에 저장 => 모든 데이터를 한 번에 저장하는 것은 risky함
- 페이징을 넣어서 문서에 넣는 방식
- 첫 번째 대화부터 99번째 대화까지는 1페이지, 100번째부터 199번째까지는 2페이지, ...
- 문서가 무제한으로 커질 염려가 적어짐
- 채팅 글자 길이 제한도 무조건 들어가야 함 (Serverside, ClientSide 검증)
- 대화내용 저장 컬렉션 => A와 B의 대화내역만, n개 단위로 페이징
- 프론트엔드 => 무한 스크롤
- 이렇게 구현하면 큰 트래픽도 커버 가능할 듯하다 (몽고디비는 서버 분산 관련 기능이 있어 효과가 좋음)
- MySQL 등으로 구현한다면? Deep Query 같은 문제를 고려해야 함
- Join 등의 쿼리에서 오는 부하가 적지 않음
- 이 부분에서 NoSQL이 갖는 강점이 크다
만약 구현을 한다면
- A가 B에게 쪽지(짧은 문장)를 보낸다.(이건 단순 api로 요청을 받아도 되는건지?)
- B가 접속해있는 경우, server-sent-event를 이용하여 쪽지를 push 한다.
- B가 접속해있지 않은 경우, 보내야하는 쪽지들을 DB에 저장해놨다가, B가 접속한 경우 쪽지를 push 한다. 이정도의 기능을 생각하고 있습니다.
신경써야할만한 부분들이 있을까요?
- 쪽지 내역을 NoSQL DB 에 저장할 때 주의사항(내역이 무한대로 증가하는 경우는 어떻게 해야하는지)
- 많은 사용자의 동시다발적인 요청을 경험하기 위해서 어떤 방법이 있을지?
- 등등
- 📃 기획서
- 📂 Backlog
- 📊 ERD, 폴더 구조
- 🗓️ 회의록