프로젝트 기획
•
프로젝트 명 : YOUngChat!
•
소개
◦
한 줄 정리 : 실시간 채팅 서비스를 제공하는 채팅서비스
◦
내용 :
▪
YOUngChat은 채팅으로 텍스트, 이미지, 영상을 주고 받을 수 있습니다.
▪
YOUngChat은 1:1 채팅방 및 단체 채팅방 개설이 가능합니다.
▪
채팅방을 폴더(그룹)별로 구분할 수 있습니다.
•
서비스 스코프를 줄이는 대신, 기술 스택에 집중하고자 하였습니다.
◦
로깅을 통한 성능 통계 및 정보 수집
▪
로그 표준화를 통한 비선형 관계 데이터 선형화
▪
데이터 관계 이해 및 분석
▪
성능 비교를 통한 쿼리 최적화
▪
버그 정보 확인 및 해결에 이용
◦
대용량 트래픽 처리
▪
다수의 사용자가 동시에 요청을 보낼 경우, 서버 부하 방지를 위해 Scale-out 도입
◦
Http Polling, WebSocket 비교 및 적용
▪
채팅, 채팅방 조회 시 Http Polling 방식을 사용할 경우 서버 부하 증가 및 효율성 저하
▪
WebSocket 적용
◦
페이징 처리의 중요성
▪
많은 양의 데이터를 한 번에 가져올 경우, DB 부하 증가
▪
페이징 처리를 통해 성능 개선
ERD (E-R Diagram)
아키텍처
MVP 시연 영상
기술적 의사 결정
추후 개발 예정 및 기술 도전 계획
•
최종 완성본 서비스 아키텍처 구상도
◦
CQRS 패턴 도입
▪
많은 양의 데이터를 저장해야 하는 채팅 서비스의 특징
▪
Select, Insert, Update 등과 같은 쿼리가 같은 DB에 대용량으로 저장될 경우, DB 부하 및 다운의 우려가 있음
▪
이에 Master-Slave DB를 생성하여 긴급한 상황에는 Slave DB를 Master DB로 승격시켜 최악의 상황에 대비
◦
로드밸런서 도입 (ELB)
▪
한 서버에 대량의 트래픽이 몰릴 경우 서버가 다운될 것이므로, Scale-out를 적용
▪
로드밸런서를 통해 트래픽 분
•
MVP 개선 기능
◦
Web Socket 적용
◦
페이지네이션
◦
채팅방 그룹화 기능 추가