와우자 스트리밍 엔진 제어 방법 비교 : REST API, JAVA API, 웹 UI, CLI
와우자 서버 관리와 자동화를 위한 Wowza Streaming Engine 제어 방법 4가지 CommandInterface, WEB UI, REST API, JMX 의 장단점과 특징에 대해 정리한다.
와우자 스트리밍 엔진(Wowza Streaming Engine, 이하 와우자)은 와우자를 제어하고 관리할 수 있는 다양한 방법을 제공하고 있다. 이 글에서는 와우자가 공식적으로 지원하는 4가지 제어 방법과 각 방식의 특징을 살펴봄으로, 독자 제위가 가장 적합한 방법을 선택하여 보다 효율적으로 와우자를 운영 및 관리하는데 도움이 되고자 한다.
와우자에서 사용가능한 제어방법
와우자는 공식적으로, 다음의 4가지 제어 수단을 제공하고 있다. 각 접속방법에 대한 상세 설정은 아래의 파일을 통해 관리된다.
[와우자 설치 경로]/conf/Server.xml
- CommandInterface
- 웹 UI
- REST API
- JAVA API
각각의 제어 수단은 그 특징과 사용할 수 있는 한계가 명확하다.
CommandInterface
CommandInterface는 와우자 서버에서 제공되는 CLI(Command Line Interface)이다. 전통적인 TELNET 클라이언트를 이용해서 와우자 서버의 TCP 8083 포트에 접속하면 사용할 수 있다.
사실, 본 필자도 매뉴얼에서만 본 방법이긴 하다. 또한 CLI 명령들도 꼭꼭 숨겨 두었는지 찾기가 쉽지 않다. 와우자에서는 단지
The Wowza Streaming Engine command interface is only used to allow remote shutdown of the server.
서버 끄기 전용이란다.
– 와우자 메뉴얼
라고만 안내하고 있다.
하지만, 실제로 접속이 이루어지는 것은 사실이며, 인터넷 상에 CLI 명령 목록이 있다는 정보도 있다. 본 필자는 Server.xml 을 수정해 사용하지 못하도록 비활성화 하는 것을 독자께 권한다. 실제로 와우자에서도 프로덕션 환경에서는 관련 설정을 모두 주석 처리해 비활성화 할 것을 권하고 있다.
웹 UI (Wowza Streaming Engine Manager)
웹 UI는 가장 널리 사용되고, 기본적으로 사용되는 방법이다. 와우자를 설치하면 Wowza Streaming Engine과 Wowza Streaming Engine Manager 이렇게 두 서비스가 설치 되는데, 바로 두 번째가 이 웹 UI를 동작시키는 서비스이다.
와우자의 웹 UI는 기본 TCP 8088 포트를 사용하며, 접속하기 위해서는 웹 브라우저의 주소창에 아래의 주소를 입력해 주면 된다.
http://서버의주소:8088/enginemanager
웹 UI는 그 자체로는 와우자서버를 제어하지 못한다. 웹 UI는 단지 사용자의 편의를 위한 인터페이스만을 제공할 뿐이며, 아래에서 설명할 REST API를 통해 와우자의 설정을 변경하거나 상태정보를 읽어와 사용자에게 친숙한 형태로 보여준다. 즉, REST API가 비활성화되면 웹 UI에 접속은 가능하지만 정상적으로 작동하지 않게 된다.
REST API
REST API(REpresentational State Transfer Application Programming Interface)와우자에서만 사용되는 개념은 아니다. 서버의 제어 가능한 각종 프로퍼티들에 ID를 부여하고, HTTP 프로토콜을 이용해 읽기/쓰기/생성/삭제 동작을 할 수 있도록 제작된 일반적인 인터페이스로, 와우자 외의 여러 분야와 제품들에서 폭넓게 사용되고 있다.
이런 이유로, 와우자 외부에서 와우자의 상태값을 읽어와 판단하고, 와우자의 설정을 변경하는 식의 연동운용이 가능해져, 자동화된 스트리밍 환경 등을 구성하는데 매우 핵심적인 역할을 하게 된다..
예를 들어, cURL이나 Postman과 같은 도구 또는 웹브라우저를 통해 아래와 같은 요청을 와우자에게 보내면, 와우자는 명령에 대한 응답으로 자신의 로그를 클라이언트에게 반환해 준다.
http://[ID]:[PW]@[와우자.서버.주소]:8087/v2/servers/defaultServer/logfiles?order=newsFirst
REST API의 활성화 및 기본 구성 방법 및 REST API 사용에 대한 자세한 설명은 Wowza REST API 문서를 참고 하기 바란다.
JAVA API
와우자는 자바(JAVA) 기반으로 개발된 프로그램이다. 자바에는 자바와 자바 기반으로 실행되는 프로그램들을 관리할 수 있는 도구가 있는데 그것이 JMX(Java Management Extensions)이며, 자바의 API를 통해 연동된다. JMX는 와우자의 실행환경 자체를 감시하고 제어할 수 있기 때문에 와우자의 거의 모든 설정이나 동작상태 (이러한 개별 항목들을 자바에서는 오브젝트-object-라 칭한다) 를 조회하고 관리할 수 있다.
예를 들어 REST API로는 확인할 수 없는 아래와 같은 항목들에 대해서도 정보를 수집하고 제어할 수 있게 된다
- 특정 애플리케이션의 입력 소스 품질 모니터링
- 스레드 풀의 사용 현황 확인
- 커넥션 수 및 I/O 통계 조회
J Console이라 불리는 자바 관리 도구나, 직접 개발한 자바 모듈등을 통해 연동이 가능하다. 시스템의 세밀한 부분까지도 제어가 가능하기 때문에, 본 필자는 사용하지 않을 경우, 비활성화 해 줄 것을 강력히 추천한다.
JAVA API 사용에 대한 자세한 설명은 Wowza JAVA API 문서를 참고 하기 바란다.
결론
와우자 스트리밍 엔진은 다양한 제어 방법을 제공하여 사용자의 기술 수준과 필요에 맞게 서버를 관리할 수 있다. 각 제어방법에 대한 특징을 요약하면 아래와 같다.
- CommandInterface
- TELNET 기반의 제한된 제어 기능
- 테스트 환경에서 사용
- 웹 UI
- 직관적인 웹 기반 관리 인터페이스
- 일상 운영 및 관리
- REST API
- HTTP 기반의 제어 및 자동화
- 고급 운영 및 자동화
- JMX
- 자바기반의 심층적인 모니터링 및 제어
- 고급 모니터링 및 확장기능
독자 제위의 필요에 적절한 제어 방법을 잘 선택해, 꿀을 빨며 와우자를 관리할 수 있게 되기를 기원한다.