💻문제점
초기 서버 아키텍처
기존 서버 아키텍처는 다음과 같이 하나의 EC2 서버에서 docker-compose를 통해 Streaming 서버, Transcoding 서버, Content 서버, Redis가 컨테이너로 구동되었다.
OBS Studio로 방송을 켜고, K6를 활용해 VUser 2만명, Duration 30m 으로 설정한 뒤 방송 시청 요청을 테스트 해보았다.
테스트 결과, 청크 데이터를 전송하는 스트리밍 서버가 메모리와 CPU 사용량을 많이 차지 하여, 해당 서버를 분리하는 것이 하드 디스크 가용성이나 처리량 측면에서 효율적이라고 생각하였다.
🔍해결
변경된 서버 아키텍처
분리된 서버는 StreamingService이다. 이 서버는 RTMP 프로토콜을 사용하여 OBS로 부터 지속적으로 전송되는 데이터를 디코딩, 엔코딩한다.
위와 같이 서버 아키텍처를 변경하고 K6로 다시 테스트를 해보았다.
다음과 같이 요청 처리 실패율이 12%대에서 8%대로 감소한 것을 확인할 수 있다.
728x90
'TIL' 카테고리의 다른 글
[TIL - 20230914~15] Github Actions+Docker CI/CD 트러블슈팅 (0) | 2023.09.15 |
---|---|
[커뮤 프로젝트] 영상 파일 삭제 로직 (동기, 비동기 처리) (0) | 2023.07.04 |
[TIL - 20230628] 후원 비관적 락 -> Redis 분산 락 변경 (동시성) (0) | 2023.06.29 |
[TIL - 20230623] rsocket 채팅창에 후원 내역 띄우기 (0) | 2023.06.24 |
[TIL - 20230622] K6 성능 테스트 시나리오 작성 (0) | 2023.06.23 |