✨ Refactoring
-
새로운 탭을 열 때마다 소켓을 연결하여, 10개의 탭을 열면 10명이 보는 것으로 인식
- SocketIO 작동 원리와 재연결 방식
- 현재 소켓을 zustand를 사용하여 전역으로 관리하고 있기 때문에 zustand에 대해서 학습
- 탭마다 소켓 연결을 방지하기 위한 Shared Worker 학습 및 진행 중
-
Album Domain API 성능 측정
- 시간 계산 쿼리 적용 테이블에 인덱스 설정
- 각각 메소드 불러오던 것 Promise 병렬 처리
- Redis를 N번 접근하던 것 pipeline으로 1번 처리
⇒ local 기준 0.5-1ms, 프로덕트 기준 30-50ms 단축
-
Redis Adapter 적용
- 스케일 아웃 상황에서 각 인스턴스가 소켓 서버를 동기화하지 않아 같은 채팅방이더라도 채팅이 전달되지 않는 문제
- Redis Adapter를 통해 각 인스턴스 소켓 서버 동기화
- 테스트 코드를 통해 localhost:3000 에서 메시지 이벤트가 발생되고 localhost:3001 에서 응답되는 것을 확인
-
시나리오 기반 부하테스트 진행
- 각 클라이언트 별 m3u8 파일 요청 이후 ts 파일에 관한 추가 요청을 시나리오로 잡고 부하테스트 진행
- 각 워커 쓰레드가 병렬적으로 요청을 진행하기에 실제 인이어 동작 흐름과 유사하게 진행
- 결과: http 응답 성공률 100%, 평균 응답 속도 2ms으로 매우 양호
- 고민: 현재 아키텍쳐에서 발전 시킬 수 있는 방향성(모놀리식 유지 or 서비스 기준 분리) 및 성능 지표 수립에 관한 고민