Skip to content

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이 갖는 강점이 크다

2. 쪽지 기능을 구현한다고 한다면, 유의깊게 살펴봐야 할 만한 것들이 있을까요?

만약 구현을 한다면

  1. A가 B에게 쪽지(짧은 문장)를 보낸다.(이건 단순 api로 요청을 받아도 되는건지?)
  2. B가 접속해있는 경우, server-sent-event를 이용하여 쪽지를 push 한다.
  3. B가 접속해있지 않은 경우, 보내야하는 쪽지들을 DB에 저장해놨다가, B가 접속한 경우 쪽지를 push 한다. 이정도의 기능을 생각하고 있습니다.

신경써야할만한 부분들이 있을까요?

  • 쪽지 내역을 NoSQL DB 에 저장할 때 주의사항(내역이 무한대로 증가하는 경우는 어떻게 해야하는지)
  • 많은 사용자의 동시다발적인 요청을 경험하기 위해서 어떤 방법이 있을지?
  • 등등

3. 프론트엔드 폴더 구조에 대한 패턴, 디자인 패턴 궁금증

얼리버드

프로젝트

개발일지

스프린트 계획

멘토링

데일리 스크럼

데일리 개인 회고

위클리 그룹 회고

스터디

Clone this wiki locally