와우자 스트리밍 엔진 확장 모듈 종류와 설치 방법

와우자 스트리밍 엔진은 자바 모듈(Java modules)로 불리는 확장 플러그인을 통해, 사용자가 필요한 기능을 추가할 수 있다. 모듈을 설치하고 사용하는 방법을 예시와 예시와 함께 설명하고, 와우자에서 기본 제공하는 확장 모듈들에 대해 살펴본다.

와우자 스트리밍 엔진(Wowza Streaming Engine, 이하 와우자 엔진)ui에는 Performance Tuning이라는 이름의 메뉴가 있다. 이 메뉴는, 와우자 엔진이 설치된 하드웨어의 성능을 최대한으로 뽑아내기 위해 최적화 설정을 할 수 있는 메뉴이다.

와우자 전문가들만 다룰 수 있는 영역같아 보이기도 하지만, 쉽고 간단하게 와우자의 성능을 끌어올릴 수 있는 옵션들도 존재한다. 와우자 기술지원팀에 기술지원을 요청할 경우, 적합하지 않은 셋팅이라고 하며 가장 먼저 조정할 것을 권장하는 설정들이기도 하다.

이 글에서는 와우자 서버의 최적화를 위한 기본적인 튜닝 설정 항목들을 살펴보고, 해당 항목들을 적절하게 튜닝하는 방법에 대해 안내한다.

와우자 엔진 확장 모듈이란?

와우자 엔진 확장 모듈은 엔진의 기본 기능을 넘어, 시스템을 자동화하고 다양한 사용자 정의 기능을 구현할 수 있게 해 준다. 와우자에서 직접 배포하는 모듈 뿐 아니라, 필요에 따라 사용자가 직접 자바(Java)로 작성해 사용할 수도 있다.

Java 레벨에서 동작하는 특성상, 와우자의 거의 모든 것을 확인하고 제어할 수 있다. 때문에 단순한 API를 통한 연동 및 제어를 넘어, 훨씬 세밀하고 폭넓게 사용자의 요구에 대응할 수 있다. 예를들어, 시스템이나 스트림 장애 발생시 자동으로 Failover를 수행하거나, 큐톤(SCTE-35) 을 추가해 자동으로 광고를 삽입하고, 동적 자막을 표시하는 기능 등이 가능해진다.

굳이 새롭고 거창한 기능을 개발하지 않더라도, 와우자에서 기본 제공하는 다양한 기능의 확장 모듈이 존재한다. 많은 사용자가 필요로 하는 기능들을 중심으로 개발되었으며, 적당한 기본 제공 확장 모듈만으로도 많은 작업들이 가능해진다.

와우자 엔진 확장 모듈 설치방법

Step 1 : 모듈 준비

와우자 엔진은 자바(JAVA) 환경에서 실행된다. 때문에, 확장 모듈 역시 자바로 만들어지며, jar (Java Archive) 파일 형태로 사용된다. 와우자가 설치된 PC에서 깃(git)과 그래들래퍼(gradlw)를 이용해 생성하거나, 이미 생성된 jar 파일을 다운로드 받아 사용하면 된다.

확장 모듈 파일이 준비되었다면, 본격적인 적용을 시작할 수 있다.

Step 2 : 확장 모듈 파일 복사

준비한 확장 모듈 파일 (jar 파일)을 와우자 엔진의 라이브러리 디렉토리로 복사해 넣는다. 이때 파일 이름은 변경하지 말아야 한다. 와우자의 라이브러리 디렉토리는, 와우자의 설치 디렉토리 내에 위치한 lib라는 디렉토리다. 기본 경로는 아래와 같다.

  • 리눅스 : /usr/local/WowzaStreamingEngine/lib
  • 윈도우 : C:\Program Files\Wowza Media System (버전)\lib

Step 3 : 와우자 엔진 서비스 재시작

와우자 엔진 서비스를 재시작 해 주면, 와우자 엔진이 기동되면서 라이브러리를 갱신한다.

와우자 엔진 확장 모듈 사용 방법과 예

기능을 어플리케이션 단위로 실행할 것인지, 또는 서버 단위로 실행할 것인지에 따라 모듈을 등록해 주고, 관련된 속성(프로퍼티, Property)을 추가해 준 다음 해당 단위를 재시작 해주면 확장 모듈이 적용된다.

예를들어, 어플리케이션의 스트림출력을 복제해 동일 서버의 다른 어플리케이션에서 사용할 수 있게 해 주는 확장 모듈인, wse-plugin-duplicatestreams모듈을 사용하고자 할 경우, 아래의 순서대로 설정해 주면 된다.

  1. 와우자 UI에 접속해, 소스로 사용할 스트림이 있는 어플리케이션을 선택하고 Modules항목을 선택한다.
    SRC Application의 Modules 목록에 기본 모듈인 base, logging, flvplayback, ModuleCoreSecurity가 되어 있다.
    와우자 어플리케이션의 기본 적재 모듈
  2. Add Module버튼을 클릭해 Add New Module 창을 띄운 후, 모듈의 이름과 클래스 명을 적어준다.
    Name에 ModuleDuplicateStreams, Description에 SRC의 출력을 TARGET으로, Fully Qualified Class Name에 com.wowza.wms.plugin.ModuleDuplicateStreams 가 입력되어 있다.
    wse-plugin-duplicatestreams 모듈을 등록

    Name
    모듈을 구분할 수 있는 이름을 적어준다. 다른 모듈들과 중복되지 않아야 한다.
    Description
    모듈에 대한 추가 설명을 적어준다.
    Fully Qualified Class Name
    모듈에서 사용하는 자바 클래스 경로로, 여기서는 jar파일의 이름을 적어준다.
  3. Add버튼과 Save버튼을 클릭해 모듈 목록 화면으로 돌아오면 추가한 모듈의 정보가 표시되고 재시작 버튼이 활성화된다.
    와우자 어플리케이션 모듈 목록에 ModuleDuplicateStreams가 추가 되어 표시되고 있으며, 상단에 Restart Now 버튼이 활성화 되었다.
    사용할 모듈이 추가 되었다.
    Restart Now버튼을 클릭해 어플리케이션을 재실행한다.
  4. 어플리케이션의 Properties을 선택해 설정 메뉴로 진입한다.
    와우자 어플리케이션 목록에서 SRC를 선택하고 Properties 탭을 선택한 모습
    SRC 어플리케이션의 프로퍼티
  5. 제일 아래에 위치한 Custom 섹션으로 이동하여 수정을 위해 Edit버튼을 클릭한다.
    /Root/Application 경로에 securityPublishRequirePassword, pushPublishMapPath 속성이 설정된 모습
    어플리케이션의 기본 속성
  6. Add Custom Property버튼을 클릭해 확장 모듈에 사용할 설정값을 추가해 준다. 한번에 하나의 속성만을 추가해 줄 수 있다. 여러 속성을 추가해야 할 경우 반복해서 추가해 준다.
    와우자 스트리밍 엔진에 사용자 프로퍼티를 입력하는 창. Path는 /Root/Application, Type은 String이 선택되어 있고, Value에 SRCtoCOPY.stream, Name에 duplicateStreamsStreamsNames 가 입력되어 있다.
    Add Custom Property
  7. 모든 속성을 추가했으면 Save버튼을 클릭해 저장한 후, 어플리케이션을 재시작한다.
    Custom 속성 추가 완료. /Root/Application 에 duplicateStreamsStreamNames, duplicateStreamsTargetAppName, duplicateStreamsStreamNameSuffix 가 추가 되었다.
    wse-plugin-duplicatestreams에 필요한 Custom Property 입력을 완료한 모습
  8. 정상적으로 모듈이 동작하는지 확인한다.

와우자 엔진용 확장 모듈 목록

와우자에서 관리하는 깃허브를 통해 배포되는 와우자 엔진용 확장 모듈들이다. 이 목록 이외에도 수 많은 서드파티 확장 모듈들이 존재한다. 각 확장 모듈 이름을 클릭하면 공식 배포 페이지로 연결되며, 설명에 링크가 있는 경우, 설정하는 방법을 다룬 글로 연결된다.

wse-plugin-duplicatestreams
동일 서버 내 스트림 복제.
ModuleLoopUntilLive
라이브 스트림 필러 자동 절체.
wse-plugin-timeddisconnect
클라이언트의 최대 세션 시간 제한.
wse-plugin-streampublisher
재생목록과 스케줄을 이용한 파일 스트리밍.
wse-plugin-avmix
여러 스트림의 오디오와 비디오를 재조합하는 멀티플렉서.
wse-plugin-httpstreamcontrol
HTTP를 이용한 원격 제어.
wse-plugin-addaudiotrack
오디오가 없이 비디오만 있는 스트림에 오디오 추가.
wse-plugin-banstreams
소스 연동 차단.
wse-plugin-autorecord
연동되는 소스 스트림을 자동으로 녹화.
wse-plugin-limitpublishedstreambandwidth
RTMP 소스 스트림 대역폭 제한.
wse-plugin-geoip
국가별로 사용자 또는 소스 스트림 허용.
wse-plugin-dvrrecordercontrol
DVR기능 제어.
wse-plugin-transcoderkeyframecontrol
트랜스코더 출력 스트림의 키프레임 재생성.
wse-plugin-limitstreamviewers
클라이언트의 수 제한.
wse-plugin-onconnectauthenticate
Flash 어플리케이션에 사용할 수 있는 파일 기반의 사용자 인증 지원.
wse-plugin-analytics
구글 애널리틱스(Google Analytics) 연동.
wse-plugin-pathselector
미디어 파일의 저장경로 변경.
wse-plugin-referervalidate
도메인 기반 사용자 인증.
wse-plugin-s3upload
AWS S3 연동.
wse-plugin-loadandlockappinstances
어플리케이션 적재.
wse-plugin-packetizercontrol
HTTP 스트림 소스 선택.
wse-plugin-transcodertimedsnapshot
트랜스코더 스트림 스냅샷 자동 생성.
wse-plugin-fixstreampath
Flash 어플리케이션의 접근경로 수정.
wse-plugin-cupertinoliveattachpicture
쿠퍼티노 오디오 스트림에 이미지 추가.
wse-plugin-cupertinoautomultibitratefilter
쿠퍼티노 오디오 스트림 iOS 재생 문제 해결.
wse-plugin-transcodercontrol
HLS PUSH.
wse-plugin-multitrackvod
오디오 비디오 다중 스트림 지원.
wse-plugin-mediacachelocalcontent
콘텐츠 캐시서버 지원.
wse-plugin-akamaivalidate
아카마이 서버 지원.
wse-plugin-streamresolver
CDN 구축.

요약과 FAQ

사용자도 자바 모듈을 만들 수 있는가?
가능하다. 자바에 대한 지식이 있다면 사용자가 원하는 기능의 모듈을 직접 개발해서 사용할 수 있다.
꼭 그래들래퍼를 사용해야만 하는가?
아니다. 와우자에서 개발해 배포하는 모듈은 jar 형태의 파일도 함께 배포하고 있다. 해당 깃허브나 와우자 홈페이지를 통해 다운로드 받을 수 있다.
API와 확장모듈의 차이는?
API는 보통 간단한 동작 제어나 서버의 상태를 조회하는 데 사용된다. 와우자 스트리밍 엔진의 자바 확장 모듈은 자바 레벨에서 와우자 엔진을 제어할 수 있어 훨씬 다양하고 세밀한 동작이 가능하다.
어플리케이션 레벨과 서버 레벨의 차이는?
서버 레벨에서 확장 모듈을 설치할 경우, 설정 변경 등을 위해서는 서버 자체를 재시작 해 주어야 한다. 반대로 어플리케이션 레벨에 설치된 확장 모듈의 경우, 해당 어플리케이션만 재시작 해 주면 된다. 모듈에 따라 설치 위치를 변경할 수 없는 모듈도 있어서 서비스 환경에서는 주의가 필요하다.
와우자 스트리밍 엔진 모듈 등록시 주의해야 할 사항은?
Fully Qualified Class Name과 각각의 키 값들은 오타가 있어도 쉽게 발견하기가 어렵다. 복사-붙여넣기를 이용할 것을 권한다. 또한 설치나 설정값 변경 후에는 엔진 또는 해당 어플리케이션을 재시작해야 한다.
확장 모듈 설치 시 jar 파일 이름 변경을 하지 말아야 하는 이유는?
와우자 스트리밍 엔진은 특정 경로를 통해 모듈을 한다. jar 파일 이름이 변경되면 엔진이 해당 모듈을 찾지 못해 모듈이 작동하지 않는다.
확장 모듈의 속성 (프로퍼티, Property) 역할은?
속성은 확장 모듈의 세부 동작을 설정하는 값들이다. 설정값이 없거나 잘못되면 모듈이 의도한 대로 작동하지 않게 된다. 속성은 와우자 엔진 설정 전반에 걸쳐 사용된다.
와우자 확장 모듈을 사용하기 위해 자바(Java) 지식이 필요한가?
대부분 가이드에 따라 파일을 복사하고, 와우자 관리자 화면에서 몇 가지 설정을 하는 수준이 전부이다. 개발이 아니라면 사용에는 전혀 지장이 없다.

1998년 라이브 음향 엔지니어로 시작해 2005년부터 방송 송출 및 미디어 전송 엔지니어의 삶을 살아가고 있습니다. 아날로그 제작 시스템부터 최신 IP 미디어 라스트마일 환경까지, 미디어 기술과 정보 통신 기술(ICT)의 융합을 통해 새로운 솔루션을 제안하고 실현시켜 왔습니다.

답글 남기기

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

Post comment