29LIVE 개발기
코드너리 | 2023. 05. 29
실시간 스트리밍
사용된 기술:
개요
1. STAFF가 29LIVE admin service에 방송 정보를 송출합니다.
2. client에서 content service 재/생방송 정보를 요청합니다.
- 모든 라이브 방송은 각각 campaing key라는 고유한 키를 가지고 있습니다.
- 클라이언트에서 서버의 API 호출시 특정 방송의 campaing key만 인자로 넘겨주면 특정 방송에 관한 응답만 받을 수 있습니다.
3. content service에서 방송 정보 조회를 위해 29LIVE admin service에 api call을 요청합니다.
4. 29LIVE admin service에서 에러 혹은 응답 지연시 정해진 횟수만큼의 retry를 시도하고 정해진 횟수를 초과한다면 클라이언트에게 fallback을 응답합니다.
5. 29LIVE admin service에서 정상 응답이 조회된다면 조회된 방송 정보를 redis에 캐싱합니다.
- 29LIVE는 트레픽이 높은 편이라 부하를 줄이기 위해 방송 정보를 redis에 캐싱합니다.
- 평소 TTL(Time to Live)은 5분으로 유지합니다.
- 29LIVE는 20시 ~ 21시에 생방송을 진행합니다. 따라서 spring scheduler를 통해 생방송 시간에 맞춰 캐시 무효화를 진행합니다.
6. 생방송 혹은 재방송 정보를 클라이언트에게 응답합니다.