와우자 스트리밍 엔진의 ModuleTimedDisconnect 모듈을 이용하면 라이브 스트리밍 세션의 최대 유지 시간을 초 단위로 제한할 수 있다. 비정상적으로 장시간 유지되는 세션이 발생시키는 비용과 품질 저하, 콘텐츠 보안 문제를 살펴보고, 모듈 설치와 프로퍼티 설정 및 실제 동작을 확인하는 방법을 설명한다.
라이브 스트리밍 세션의 시간 제한이 필요한 이유는?
일반적인 라이브 스트리밍 세션 유지 시간은?
스트리밍 데이터 분석 기관인 Conviva가 발표한 2019년 보고서에 따르면, 라이브 스트리밍 시청자의 평균 세션 유지 시간은 약 26.4분으로 조사되었다. 또한 스포츠 중계나 각종 이벤트의 중계, 속보와 같은 뉴스 이벤트의 경우에도 보통 3시간을 넘기지 않는 것이 일반적이다.
즉, 콘텐츠의 유형에 따른 차이가 있겠으나, 일반적으로 어떤 세션이 평균 30분, 최대 3시간 넘게 유지되고 있다면, 일반적인 사용자의 세션이 아닌 비정상 세션일 가능성이 높다고 판단할 수 있다.
비정상 세션이 발생시키는 각종 비용
문제는 이런 비정상 세션들이 정상 세션과 마찬가지로 아래와 같은 여러 가지 비용을 발생시킨다는 것이다.
- 직접 비용
- CDN 비용
- 대부분의 CDN은 전송 데이터 양에 따라 비용이 발생한다.
- 불필요한 세션이 유지되는 동안 지속적으로 데이터가 전송되므로, 가장 직접적인 영향을 미친다.
- 각종 라이선스
- 시스템 구성 요소 중 사용량에 따라 과금하는 종량제 라이선스가 적용되어 있다면 불필요한 비용이 발생한다.
- 컴퓨팅 자원
- 상면, 전력, CPU, RAM, 네트워크 등의 증설이 요구되어 불필요한 세션을 처리하기 위한 컴퓨팅 비용이 발생한다.
- AWS, Azure 같은 클라우드 환경이라도 추가적인 인스턴스 사용 비용이 발생한다.
- 간접 비용
- 기회비용
- 비정상 세션이 서버의 동시 접속 수와 처리 자원을 선점하면 정상 사용자의 신규 접속이 거부되거나 서비스 이용이 제한될 수 있다.
- 평판 하락
- 비정상 세션의 부하로 인해 정상 사용자들도 버퍼링, 지연 시간 등의 품질 저하를 겪게 된다.
- 저품질 서비스는 사용자 불만으로 이어지며, 사용자가 다른 서비스로 이탈하게 한다.
- 운영 비용
- 저품질 및 장애에 대한 민원 처리 관련 조직의 운영 비용이 상승한다.
- 비정상 세션으로 인한 왜곡된 지표를 기준으로 서버 증설, CDN 계약과 콘텐츠 편성 정책을 결정하면 추가적인 비용과 잘못된 운영 판단으로 이어질 수 있다.
- 콘텐츠 보안
- 비정상 세션을 통한 콘텐츠 유출로, 저작권 문제가 발생할 수 있다. (이거, 본 필자의 경험이다.)
시발비용결국 운영자만 죽어나는 상황이 펼쳐진다.
세션 시간으로 비정상 세션을 제어
이런 이유로, 서비스 운영자는 비정상 세션들을 감지하고 차단해야 할 필요가 있다. 이를 위해 세션과 사용자에 대한 여러 가지 감사 기준을 세우고 모니터해 세션들을 제어해야 하는데, 비교적 간단하고 효과적인 방법중의 하나가 바로 세션의 최대 유지 시간을 제한하는 방법이다.
와우자 스트리밍 엔진(Wowza Streaming Engine, 이하 와우자)은 이러한 기능을 구현하기 위한 ModuleTimedDisconnect 모듈을 사용할 수 있어, 손쉽게 최대 세션 유지 시간을 제어할 수 있다.
ModuleTimedDisconnect 모듈 설치 절차
ModuleTimedDisconnect 모듈을 적용하려면 다음 절차에 따라 설치한다. 이 모듈은 서버 전체가 아니라 세션 시간을 제한할 와우자 어플리케이션의 Application.xml에 등록해 사용한다.
ModuleTimedDisconnect 모듈 다운로드 및 설치
- 와우자 스트리밍 엔진 확장 모듈중 하나인
ModuleTimedDisconnect모듈을 찾아 다운로드받는다. - 와우자 스트리밍 엔진 확장 모듈 설치 방법을 참고해 다운로드한 압축 파일을 해제하고, 패키지의
JAR파일을 와우자 설치 디렉토리의lib디렉토리에 복사한다. - 와우자 스트리밍 엔진 확장 모듈 적용 방법을 참고해 모듈을 사용할 어플리케이션의
Application.xml의Module섹션에 모듈 정보를 등록해 준다.모듈 등록 정보 Name Description Fully Qualified Class Name ModuleTimedDisconnect 세션 시간 제한 com.wowza.wms.plugin.ModuleTimedDisconnect <Module> <Name>ModuleTimedDisconnect</Name> <Description>세션 시간 제한</Description> <Class>com.wowza.wms.plugin.ModuleTimedDisconnect</Class> </Module> - 와우자 서비스를 재시작해 준다. 새로운 JAR 파일을 설치했기 때문에 어플리케이션만 재시작해 주면 모듈 적재가 되지 않는다.
ModuleTimedDisconnect 모듈 프로퍼티 입력
설치한 모듈을 사용하기 위해서는 관련 프로퍼티를 입력해 주어야 한다. 프로퍼티 입력 방법을 참고하여 모듈을 사용할 어플리케이션에 프로퍼티를 추가해 준다.
| Path | Name | Type | Value |
|---|---|---|---|
| /Root/Application | timedDisconnectTime | Integer | 60 |
<Property>
<Name>timedDisconnectTime</Name>
<Value>60</Value> <!-- 세션 제한 시간은 60초 -->
<Type>Integer</Type>
</Property>
필요한 프로퍼티를 저장한 후, 해당 어플리케이션을 재시작하면 적용된다.
위에서 사용한 필수 속성을 포함해, 추가 옵션으로 사용할 수 있는 속성들의 목록은 와우자의 공식 문서를 참고하기 바란다.
진실의 시간 – 설정 테스트
설정이 잘 적용되었는지 확인하기 위해 해당 어플리케이션에서 송출되는 스트림을 VLC, ffplay 등의 플레이어를 이용해 재생해 본다.
timedDisconnectTime 프로퍼티는 초 단위로 입력하게 되어 있으나, 사실 완전히 딱 떨어지게 동작하지는 않는다. 본 필자의 경우, 30을 입력했을 때, 1~2초 가량 재생이 더 진행되어, 실제로는 32초 정도에 연결이 끊기는 것을 확인할 수 있었다.
이러한 차이는 세션 상태를 확인하는 주기, 네트워크 지연과 플레이어의 버퍼 상태 등에 따라 달라질 수 있다. 설정값을 절대적인 종료 시각으로 보기보다는 최대 세션 시간을 제어하기 위한 기준값으로 이해하는 편이 좋다.
적절한 제한 시간 값을 찾는 것은 오로지 독자 제위의 몫이다. 콘텐츠와 서비스의 형태에 따라 적당한 값을 선택하기 바란다. 너무 길다면 비정상 스트림을 차단한다는 목적을 달성할 수 없고, 반대로 너무 짧다면 사용자 경험에 악영향을 주게 된다. 본 필자는 우선 3시간 정도로 시작해 시간을 조절해 보는 것을 추천한다.
마무리
ModuleTimedDisconnect 모듈은 설정한 시간을 초과해 장시간 유지되는 세션을 자동으로 종료한다. 이를 이용하면 비교적 간단한 설정만으로 불필요한 세션의 자원 점유를 줄이고, 스트리밍 서비스의 품질과 운영 비용을 보다 효율적으로 관리할 수 있다.
비정상 세션을 판단할 때 사용할 수 있는 지표는 세션 유지 시간만이 아니다. 사용자 조작 여부, 재생 상태, 네트워크 전송량, 인증 정보, 접속 위치, 동시 접속 수와 같은 여러 지표를 함께 활용할 수 있다. 대형 플랫폼들은 빵빵한 예산과 함께 서비스의 특성에 맞는 고유한 알고리즘과 정책을 이용해 비정상 세션을 제어한다.
세션 유지 시간은 이러한 여러 판단 기준 가운데 하나에 불과하며, 하나의 기준만으로 모든 비정상 세션을 완전히 통제할 수는 없다. 독자 제위께서는 가급적 하나의 지표에만 의존하기보다 서비스의 콘텐츠 유형과 사용자 이용 형태에 맞는 여러 지표를 함께 적용해 보다 효과적인 세션 제어 정책을 구현하시기를 권장하는 바이다.
FAQ
- 와우자 스트리밍 엔진을 이용해 스트림 재생 시간을 제한할 수 있는가?
- 가능하다.
ModuleTimedDisconnect모듈을 설치하고timedDisconnectTime프로퍼티를 설정하면, 플레이어가 어플리케이션에 연결된 시간을 기준으로 최대 세션 유지 시간을 제한할 수 있다. - 스트림 재생 시간 제한이 필요한 이유는 무엇인가?
- 종료되지 않고 장시간 유지되는 세션은 CDN 전송량, 서버 자원, 종량제 라이선스와 클라우드 비용을 불필요하게 증가시킬 수 있다. 또한 정상 사용자의 접속 기회를 줄이고 서비스 품질과 운영 통계를 왜곡할 수 있으므로, 서비스 정책에 맞는 최대 세션 시간을 설정할 필요가 있다.
- 라이브 스트리밍 세션의 평균 유지 시간은 얼마인가?
- 2019년 Conviva 보고서에서는 라이브 스트리밍의 평균 세션 유지 시간이 약 26.4분으로 조사되었다. 다만 평균 세션 시간은 콘텐츠 유형, 플랫폼, 재생 장치와 서비스 특성에 따라 달라지며, 스포츠 경기, 공연과 장시간 이벤트는 수 시간 동안 정상적으로 유지될 수 있다.
- 3시간을 넘는 라이브 스트리밍 세션은 모두 비정상 세션인가?
- 모두 비정상 세션인 것은 아니다. 콘텐츠 유형에 따라 정상적인 세션도 3시간을 넘을 수 있다. 다만 서비스에서 예상한 콘텐츠 길이와 이용 시간을 크게 초과하고, 사용자 조작이나 정상적인 상태 갱신 없이 유지되는 세션은 비정상 세션일 가능성이 있다.
ModuleTimedDisconnect모듈의 역할은 무엇인가?- 와우자 스트리밍 엔진의 확장 모듈 가운데 하나로, 세션의 최대 유지 시간을 초 단위로 설정할 수 있게 한다. 설정한 최대 유지 시간이 지나면 해당 세션의 연결을 자동으로 종료한다.
- 세션 시간만으로 비정상 세션을 완전히 제어할 수 있는가?
- 불가능하다. 세션 유지 시간 외에도 사용자 조작 여부, 재생 상태, 인증 토큰, 접속 위치, 동시 접속 수, 네트워크 전송량과 비정상적인 요청 패턴 등을 함께 확인해야 보다 정확한 세션 제어가 가능하다.
- 장시간 유지되는 세션이 콘텐츠 보안에 문제가 되는 이유는?
- 장시간 세션 자체가 곧 콘텐츠 유출을 의미하지는 않는다. 그러나 세션 공유, 인증 정보 재사용 또는 외부 서버를 통한 무단 중계와 결합되면 콘텐츠가 허가되지 않은 환경에서 계속 재생되거나 재전송될 가능성이 커질 수 있다. 이러한 행위는 서비스 이용 계약과 콘텐츠 사용 조건에 따라 접속 차단, 계약 해지 또는 손해배상 문제로 이어질 수 있다.
갱신 내역
- — 최초 게시
- — 1차 수정
- — 2차 수정 및 주소 이전