와우자 스트리밍 요금 폭탄 방지! 세션 시간 제한 모듈 ModuleTimedDisconnect 설정방법

Last modified date

라이브 스트리밍 평균 세션 시간은 26.4분이며 수 시간을 넘어갈 경우, 비정상 세션일 가능성이 높다. Wowza Streaming Engine은 최대 세션 시간 제한 모듈을 통해 세션 자동 종료 기능을 제공한다.

"The server checks its wristwatch and attempts to unplug the power cable of the TV that is left on alone in the living room.
나 홀로 켜져 있는 TV – Copilot

라이브 스트리밍 세션의 시간 제한이 필요한 이유

일반적인 라이브 스트리밍 세션 유지시간은?

스트리밍 데이터 분석 기관인 Conviva가 발표한 2019년 보고서에 따르면, 라이브 스트리밍 시청자의 평균 세션 유지 시간은 약 26.4분으로 조사되었다. 또한 스포츠 중계나 각종 이벤트의 중계, 속보와 같은 뉴스 이벤트의 경우에도 대부분 3시간을 넘기지 않는 것이 일반적이다.

다시 말해, 어떤 세션이 평균 30분, 최대 3시간 넘게 유지되고 있다면, 해당 세션은 일반적인 사용자의 세션이 아닌, 비정상 세션일 가능성이 높다.

비정상 세션이 발생시키는 각종 비용

문제는 이런 비정상 세션들은 정상 세션과 마찬가지로 아래와 같은 여러가지 비용을 발생시킨다는 것이다.

  • 직접비용
    CDN 비용
    대부분의 CDN은 전송 데이터 양에 따라 비용이 발생한다.
    불필요한 세션이 유지되는 동안 지속적으로 데이터가 전송되므로, 가장 직접적인 영향을 미친다.
    각종 라이선스
    시스템 구성요소에, 사용량에 따라 과금하는 종량제 라이선스가 적용되어 있다면 불필요한 비용이 발생한다.
    컴퓨팅 자원
    상면, 전력, CPU, RAM, 네트워크등의 증설 등이 요구되어 불필요한 세션을 처리하기 위한 컴퓨팅 비용이 발생한다.
    AWS, Azure 같은 클라우드 환경이라도 추가적인 인스턴스 사용 비용이 발생한다.
  • 간접비용
    기회비용
    불량 세션이 선점한 자원을 사용하지 못하는 정상 사용자가 서비스 사용을 하지 못한다.
    평판하락
    불량 세션의 부하로 인해 정상 사용자들도 버퍼링, 지연시간 등의 품질 저하를 겪게 된다.
    저품질 서비스는 사용자 불만으로 이어지며, 사용자가 다른 서비스로 이탈하게 한다
    운영비용
    저품질 및 장애에 대한 민원 처리 관련 조직의 운영 비용이 상승한다.
    콘텐츠보안
    불량세션을 통한 콘텐츠 유출로, 저작권 문제가 발생할 수 있다. (이거, 본 필자가 직접 당해봤다.)
    시발비용
    결국 운영자만 죽어나는 상황이 펼쳐진다.

세션 시간으로 비정상 세션을 제어

이런 이유로, 서비스 운영자는 이런 비정상 세션들을 감지하고 차단해야 할 필요가 있다. 이를 위해 세션과 사용자에 대한 여러가지 감사 기준을 세우고 모니터해 세션들을 제어해야 하는데, 그 중 비교적 간단하고 효과적으로 비정상 세션을 감지하고 처리하는 방법이 바로 세션의 최대 유지시간을 제한 하는 방법이다.

Wowza Streaming Engine(와우자 스트리밍 엔진, 이하 와우자)은 이러한 기능을 구현하기 위한 ModuleTimedDisconnect모듈을 사용할 수 있어, 손쉽게 최대 세션 유지 시간을 제어할 수 있다.

ModuleTimedDisconnect 모듈 다운로드 및 설치

  1. 와우자 스트리밍 엔진 확장 모듈 목록에서 ModuleTimedDisconnect 을 찾아 모듈 파일을 다운로드 받는다.
  2. 와우자 스트리밍 엔진 확장 모듈 설치 방법을 참고하여 jar 파일을 설치한다.
  3. 와우자 엔진 확장 모듈 사용 방법과 예를 참고해, 적용할 어플리케이션의 Application.xmlModule섹션에 아래 내용을 등록해 준다.
    모듈 등록 정보
    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>
  4. 와우자 서비스를 재시작해 준다. (어플리케이션만 재시작 해 주면 모듈 적재가 되지 않음에 주의!)

사용할 어플리케이션에 모듈 적용

와우자 속성 추가 방법글을 참고해, 설치된 ModuleTimedDisconnect를 적용할 와우자 어플리케이션에 아래의 속성을 추가시켜 준다.

ModuleTimedDisconnect 속성
PathNameTypeValue
/Root/Application timedDisconnectTime INT 최대 허용시간 (초)
<Property>
  <Name>timedDisconnectTime</Name>
  <Value>60</Value> <!-- 최대 허용 60초 -->
  <Type>Integer</Type>
</Property>

위의 필수 속성을 포함해, 추가 옵션으로 사용할 수 있는 속성들의 목록은 와우자의 공식 문서를 참고하기 바란다.

속성을 저장한 후, 해당 어플리케이션을 재시작 하면 적용된다.

진실의 시간 – 설정 테스트

설정이 잘 적용되었는지 확인하기 위해, 해당 어플리케이션에서 송출되는 스트림을 VLC, ffplay등의 외부 플레이어를 이용해 재생해 본다.

timedDisconnectTime속성은 초단위로 입력하게 되어 있으나, 사실 완전히 딱 떨어지게 동작하지는 않는다. 예를 들어 30을 입력했다면, 1~2초 가량 재생이 더 진행되어, 실제로는 32초 정도에 연결이 끊기는 것을 확인할 수 있다.

적절한 제한 시간값을 찾는 것은 오로지 독자 제위의 몫이다. 콘텐츠와 서비스의 형태에 따라 적합한 값을 선택하기 바란다. 길다면 비정상 스트림을 차단한다는 목적을 달성할 수 없고, 짧다면 사용자 경험에 악영향을 주게 된다. 본 필자는 우선 3시간 정도로 시작해 시간을 조절해 보는 것을 추천한다.

마무리

Wowza Streaming Engine의 ModuleTimedDisconnect모듈은 비정상적인 장기 세션을 자동으로 종료시켜 스트리밍 서비스의 품질과 비용을 효율적으로 관리할 수 있는 매우 유용한 모듈 되겠다.

Since 2005, He has generated new value by converging traditional broadcasting technology and ICT. From Headend and Frontend to the Last Mile device, He possesses a comprehensive understanding and experience of the entire broadcast system.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Post comment