///
Search
Duplicate
✏️

[0104~0110] 1주차 기술 멘토링 사전 노트

코드컨벤션
git 컨벤션
배포계획
(미정) Docker EC2 / AWS RDS / AWS S3
CI/CD : Github Actions
프로젝트 계획
15일까지는 도메인 개발 및 프론트엔드 개발 마무리
16일~21일까지는 배포 및 사용할 기술 정의, 학습, 구현을 목표
23일 부터는 최적화 및 성능 향상, 부하테스트 작업 진행
이번주 한 일
팀원 역할
정해인
최준영
용소희
숙제: 멘토링 결과 다음 주까지 해올 일
팀 전체 (리더와 부리더님께서 필두로 정리해 주세요.)
S.A 피드백
어떻게 구현할지에 대해서 명확하게 안적혀있는 듯하다.
채팅 기능 API 명세 MySQL에 저장하는게 맞는지
사용자가 적을경우 MySQL에 저장해도 상관없으나
카카오톡처럼 사용자가 많아질 수록은 NoSQL이 좋음
다른사용자가 채팅을 받았다는걸알 수 있는방법에 대해서 고려해보았는지
나한테 온 채팅을 서버에 1초마다 조회하는 방법(http polling)
계속된 조회로 서버에 부하(4000만명이 계속 서버에 요청)
websocket 사용
메시지가 갈때마다 알림이 간다.
기존에 배운건 HTTP 무상태성 조회 >> Websocket은 지속적인 연결로 서버에 부하가 있을 수 있음.
코드구현도 중요하지만 이 개념에 대해 확실히 이해하는게 중요함.
1.
채팅프로그램으로 정한이유가 뭔지
2.
use case가 부실하다
3.
채팅은 어떻게 구현할 것인지?
4.
채팅 내용은 어디에 저장할것인지(MySQL)
5.
왜 거기다 저장하는지 대안은 무엇인지(RDB에저장할지 NoSQL)
6.
채팅 입력을 통해 DB에 저장한다하면 상대방이 채팅내용을 받은 것을 어떻게 인지할 것인지? >> Websocket이랑 http polling >> 기술회의를 통해 문서화 해주세요! >>논의를 실제로 하고 정리하는 과정에서 면접질문에 대비가능 >> 노션에 정리하고 튜터님과의 톡방에 올리기
7.
일반적인 채팅 구현방법은 무엇인지
a.
다른서비스는 어떻게 구현하는지
b.
어떻게 구현하는지 정리해서 마찬가지로 슬랙에 올리기
8.
이 방법들중에 어떠한 것을 선택할것인지
a.
위의 방식들을 선택하게 된 계기 원인 들을 적어놓기.
b.
NoSQL이 RDB보다 성능이 좋지만 RDB를 선택한 이유 :
i.
ex) 비용 문제 때문에 이런 기술을 썼다
c.
장단점을 파악하는 습관을 기르자.
9.
http polling, websockeet에 대해 아는지
10.
카카오톡같은 대형 채팅 플랫폼은 엄청난 메세지들이 오갈텐데 이를 해당 저장소에만 저장해도 충분할지?
a.
NoSQL, kafka (10~13)번 같은 경우는 어느정도 기본기술이 갖춰진 다음에 튜터님이 다시 질문해보신다하심
11.
몇억명 몇십억명이 되어도 거기에 저장이 가능할지? 아니면 다른 곳에 옮겨서 저장해야할지?
12.
위 채팅메세지 데이터 분석은 어떤식으로 처리할지
13.
사용자가 많아지면 친구관계도 엄청나게 많아질텐데 이를 조회할때 성능은 어떻게 처리할 것인지 (JPA 연관관계로 맺게 되면 쿼리가 조인 쿼리로 나가기 때문에 성능 저하)
14.
캐싱 적용할 곳은 없는지
a.
Spring 로컬 캐시, 레디스를 사용한 캐시 처리
b.
캐싱 글로벌캐시 vs 로컬캐시
c.
네이버 뉴스 같은부분에서 >> db에 접근하지 않고
프론트엔드에 너무 시간을 쓰지 않고 최대한 간단하게 하는방법으로
>> 로그인을 눌렀을 때 어떤 API를 사용할건지
>> (시간을 많이 쓰지 말아라) >> 화면을 좀더 간단하게 하거나 Thymeleaf (어플리케이션 흐름을 이해하는데에 좋을 것 같습니다)
>> ERD는 적절
>> 단톡방은 1:1 채팅부터 구현한 후 구현예정.
우선은 MySQL로 구현. >> 중간발표후 NoSQL에 대한 자료는 어느정도 개발이 진행된다음
Docker는 지금단계에서 생각하지 않아도됨. 배포하는 단계에서 쓰는거.
너무 방대한걸 생각하기보단 구현이 완료되면 생각해보기
!! 지금 단계 채팅을 어떻게 구현할지 어떤기술을 쓸지가 중요하다. 기본부터 잘하자 !!
아직 배포는 멀었다. 선배포는 보통하지 않음.
오늘 내일은 기술회의 및 기술 채택 회의를 진행해보는걸 추천
지금 당장 할 수 있는거를 하는것도 좋음.