핵심 기술 정리
- 처음 접하는 동영상 스트리밍 서비스의 동작 원리를 팀원들과 함께 이해하기
- 다양한 스트리밍 프로토콜(RTMP, WebRTC, HLS 등)을 검토한 결과, 실시간 단방향 스트리밍에 적합한 RTMP와 HLS 조합으로 결정
- HLS영상을 받아오는 비동기 데이터 페칭에서의 에러핸들링
- 각 컴포넌트가 로딩 상태와 에러를 자체적으로 처리하는 방식에서부터 AsyncBoundary를 활용하여 효율적인 비동기 데이터 페칭관리와 ErrorPage 라우팅까지 처리
- 호스트 페이지에 사용되는 많은 인풋을 리액트 훅 폼을 활용하여 효율적으로 관리합니다.
- 훅 폼의 개념과 핵심 기능을 이해하고, controlled vs uncontrolled 컴포넌트, 폼 상태 관리 최적화 및 검증 로직 구현 방법을 탐구합니다.
- 채팅 구현을 위해 실시간 양방향 통신 구현 방식에 대한 학습 진행
- 생산성을 고려해 broadcast, namespace, 자동 재연결이 구현되어 있는 socket.io 라이브러리를 사용하기로 결정
- socket.io를 통한 채팅 기능을 구현했으나, 컴포넌트 마운트 시 매번 새로운 소켓이 생성되는 이슈
- shared worker thread를 도입해 다중 탭에서도 하나의 소켓을 공유할 수 있도록 개선
- 서비스 별로 분리하여 확장이 쉽고, 유지 보수에 우수한 서버를 구축하고자 계획
- NestJS의 모듈화와 DI를 통해 각 도메인 간의 종속되지 않는 DDD 서비스 설계