Red5Pro를 이용하여 교통 모니터링 시스템을 구축한 사례는 다양하게 있습니다. 에를 들면 하와이의 호놀룰루 시, 아리조나 주 교통국, 콜로라도 주 교통국, Caltrans(California Transportation) 및 캘리포니아 주의 산호세시등이 있습니다.
오늘은 그중에서 어떻게 Realtime Streaming을 지원하는 Red5Pro 스트리밍 서버로 여러분이 잘 알고 있는 미국 산호세의 교통 모니터링 시스템 구축에 대해서 논하고자 합니다.
신호세(San Jose) 시의 교통국은 산호세시에 설치되었는 교통 모니터링 시스템을 위한 현재 시스템을 업그레이드하기로 결정하였고 이에 대한 새로운 시스템 및 솔루션은 LAN/WAN 비디오를 전달하기 위한 WebRTC 솔루션을 포함하도록 기존의 Chameleon 비디오 관리 시스템을 확장, 600개의 수신 스트림과 50명이 동시 시청자를 지원, 카메라에 PTZ제어가 필요, 들어오는 스트림은 500~1,000bps에서 H.264 스트림을 퍼블리싱하는 표준 화질 RTSP 카메라에 의해 제공해야만 했습니다. 이 시스템에는 San Jose 교통국 최초 대응팀이 사고 현장의 장치를 사용하여 생방송 할 수 있도록 하는 모바일 iOS 앱도 역시 포함되며 온프레미즈로 제공되며 산호세 교통국에서 제공하는 기존 VM 클러스터를 사용해야만 하는 까다로운 조건들이 존재했습니다.
이에 대한 시스템의 개요 다이어그램은 아래 그림1과 같으며 시스템을 단순화하였고 녹화, VOD재생 및 클러스터 확장과 같은 측면을 지정하지 않았습니다.
아키텍쳐의 요구 사항
산호세 교통국의 시스템은 종단간의 Latency를 최소화하면서 최대 600대의 RTSP 카메라 방송을 지원해야하며 이는 서버의 로드밴런싱을 맞추기 위해 여러 오리진 및 엣지가 있는 Red5Pro 클러스터를 배포하여 수행이 됩니다.. 스트림은 오리진으로 전달된 다음 각 구독자에게 제공할 에지로 전달이 됩니다.
클러스터는 다음 H.264 기준 라이브 스트림을 처리해여 합니다.
오리진(Origin): 600개 RTSP 카메라 피드 480p@30fps H.264 베이스라인(Baseline) 1,000kbps
엣지(Edge): 최대 스트림 품질이 480p@30fps인 동시 WebRTC 뷰어 50개 H.264 베이스라인(Baseline) 1,000kbps
많은 수의 스트림과 사용자를 고려할 때 시스템에는 여러 Red5Pro 오리진 및 엣지가 포함됩니다. 또한 로드 밴런싱된 Red5Pro의 스트림 관리자를 사용하여 로드를 최적의 방식으로 조정하고 분산합니다.
Red5Pro는 Terraform을 사용하여 Red5Pro 클러스터를 클라우드 플랫폼에 배포하여 API와 같은 클라우드를 노출하는 한 프라이빗 인스턴스에 VMware vSphere를 설치하여 달성할 수 있습니다. 이러한 방식으로 사설 데이터 센터의 각 베어메탈 인스턴스는 vSphere를 실행하고 스트림 관리자가 Terraform 및 vSphere Terraform Provider를 통해 클라우드와 같은 API를 사용하여 가상 머신을 제어할 수 있도록 하면서 여러 가상 머신을 가동할 수 있습니다. 시스템의 단순화된 배포 그림은 아래 그림.2에 나와있습니다.
산호세 교통국은 라이브 비디오 스트리밍 솔루션이 배치될 온프레미즈 서버를 제공합니다. Red5Pro는 산호세 교통국의 필요에 따라 온프레미즈 VM 클러스터를 공급하는 데 필요한 인스턴스의 수를 제공합니다. 오리진과 엣지의 전체 로드는 다음과 같습니다.
① Red5Pro 오리진: 600개 RTSP 480p@30fps H.264 베이스라인(Baseline) 입력 스트림
② Red5Pro 엣지: 최대 480p@30fps H.264 베이스라인(Baseline) 1,000kbps의 스트림 품질을 제공하는 WebRTC 가입자 50명.
솔루션에 필요한 인스턴스를 추정하기 위한 최악의 스트리밍 로브 시나리오의 경우 Red5Pro는 모든 시청자가 WebRTC를 사용하여 라이브 스트림을 소비할 것으로 가정했습니다.
필요한 인스턴스 수는 2개의 CPU와 4GB 또는 메모리가 있는 가상머신을 자정하여 추정되었습니다. 이러한 각 인스턴스는 480p 및 1,000kbps에서 최대 55개의 RTSP 인제스트 스트림을 지원합니다. 구독자의 경우 인스턴스는 480p 및 1,000kbps에서 최대 300명의 WebRTC 구독자를 지원합니다. 이러한 가장을 사용하여 Red5Prp는 스트리밍 로드를 지원하기 위해 11개의 오리진, 2개의 엣지 및 2개의 스트림 매니저가 필요하므로 각각 2개의 vCPU와 4GB의 메모리가 있는 총 15개의 Red5Pro 인스턴스가 필요하다고 추정했습니다.
더 큰 가상머신을 사용할 경우 가상머신의 전체 수는 위에서 계산한 15개 미만입니다. 에를 들어 vCPI가 16개이고 메모리가 32GB인 가상머신을 사용하는 경우 총 6개의 Red5Pro 인스턴스가 필요합니다. 아래의 표는 서로 다른 두 가지 유형의 가상머신에 대한 추정치를 요약한 것입니다.
Virtual Machine | Stream Managers | Origins | Edges | Total Red5 Pro Instances |
2 vCPUs, 4 GB memory | 2 | 11 | 2 | 15 |
16 vCPUs, 32 GB memory | 2 | 2 | 2 | 6 |
배포에 중복성을 추가하고 인스턴스가 실패할 경우 사용할 준비가 된 다른 노드가 이미 있음을 보장하기 위해 각 노드 유형에 대해 항상 최소 2개의 노트를 갖는 것이 좋습니다. 또한 인스턴스가 실패하면 스트림 관리자가 새 인스턴스로 교체되도록 보장합니다.
추가 이중화를 위한 Red5Pro는 두 개의 동일한 환경(스테이징 및 프로덕션 환경)이 사용되는 기술환경을 사용할 것을 권장합니다. 주어진 시간에 프로덕션 환경이라고 하는 하나의 호나경만이 시스템 사용자에게 서비스를 제공할 것입니다. 소프트웨어, 기능 또는 업데이트의 새 버전을 출시해야 하는 경우 라이브가 아닌 스테이칭 환경에서 배포 및 테스트됩니다. 이러한 방식으로 테스트 단계가 완료되면 트래픽을 프로덕션 환경에서 스테이지 환경으로 라우팅할 수 있으므로 스테이징 환경을 새로운 프로덕션 환경으로 효과적으로 만들 수 있습니다. 모든 사용자가 새 프로덕션 환경으로 전환하면 이전 환경을 중단하고 향후 업데이트를 위한 준비환경으로 사용할 수 있습니다. 이 같은 방법의 장점은 안정성이 향상되고 가종 중지 시간이 단축된다는 것입니다. 또한 스테이징 환경이 새로운 기능을 테스트하는 데 사용되지 안을 경우 프로덕션 호나경의 정확한 백업 복사본으로 사용할 수 있으므로 프로덕션 환경에 문제가 발생하면 사용자를 스테이징 환경으로 다시 라우팅할 수 있습니다. 스테이징 환경은 프로덕션 환경의 정확한 복사본이거나 하나의 오리진, 1개의 엣지, 및 2개의 스트림 매니저를 포함하는 축소된 버전일 수 있습니다.
따라서 vCPU가 16개이고 메모리가 32GB인 가상 머신을 사용할 경우, 스테이징 환경에서 부분 중복성을 사용하는 경우 10개 인스턴스로 줄일 수 있는 전체 중복성이 있는 환경에 총 12개의 인스턴스가 필요합니다. 표2는 vCPU가 16이고 메모리가 32GB인 가상머신을 사용할 때 필요한 인스턴스 수를 요약한 것입니다.
Red5 Pro IRnstance Type | Stream Manager | Origin | Edge | Total | Total Full Redundancy | Total Partial Redundancy |
Amount in Production Env | 2 | 2 | 2 | 6 | 12 | 10 |
Amount in Staging Env (Full Copy) | 2 | 2 | 2 | 6 | 12 | 10 |
Amount in Staging Env (Pared Down) | 2 | 1 | 1 | 4 | 12 | 10 |
Red5Pro는 위의 추정치와 산호세 교통국의 VM클러스터에서 사용가능한 리소스를 통해 산호세 교통국이 이 프로젝트에 필요한 리소스를 할당하거나 제공하는 최적의 방법을 찾을 수 있을 것으로 기대하였습니다.
통합
브라우저 클라이언트
시스템은 데스크톱 및 모바일 기반 클라이언트 모두에게 사용할 수 있는 모바일 친화적인 웹사이트를 활용합니다. 스트림은 즉시 사용 가능한 ABR(Adaptive Bit Rate)을 지원하고 500ms 미만의 종단 간 Latency를 제공하는 WebRTC와 함께 제공됩니다. 웹사이트는 산호세 교육부 내부 VM클러스터에 설치되면 다음 기능을 제공합니다.
① 로그인 인터페이스
② 장착 위치에 따른 카메라 그룹화
③ 카메라 번호 및 가장 가까운 주요 교차로 정보가 포함된 특정 위치의 개별 카메라 목록
④ 개별 카메라는 플레이어와 함께 실시간 스트림을 시청합니다. 페이지에는 ID, 읍, 면, 도시와 같은 이름, 위치, 포스트마일, 교차로, 카메라 유형 및 미디어 URL와 같은 카메라 정보가 포함되어야 합니다. 로그인한 사용자의 권한에 따라 PTZ, IRIS, 포커스, 프리셋 제어버튼도 사용할 수 있습니다.
웹사이트의 워크 플로우 그림은 그림3에 기술하였습니다. Red5Pro는 웹사이트를 구축하지 않았지만 FLIR이라는 카메라 업체가 책임지며 구축하였습니다. 그러나 웹사이트는 실시간 비디오 플레이어를 위해 WebRTC 기반 Red5Pro HTML5 플레이어를 사용하였습니다.
스트림 인증
산호세 교통국에는 사용자에 대한 다른 권한 수준을 설정할 수 있는 기능이 필요했습니다. 특히 제어된 사용자 하위 집단만 라이브 스트림을 시작 및 중지 할 수 있어야 하며 카메라의 제어기능을 사용할 수 있어야 합니다.
Red5Pro는 왕복 인증 프로세스를 사용하여 스트림 인증을 지원합니다. 이 과정의 일부로 Red5Pro는 RADIUS, Active Directory, 또는 LADP를 포함할 수 있는 산호세 교통국에서 사용하는 기존 인증 메커니즘과 통합되는 FLIR의 Camaleon 시스템과 인터페이스하였습니다. 특히 왕복 인증 프로세스에서 각 퍼블리싱 또는 구독 요청은 필수 사용자 이름, 암호 및 선택적 토근을 전달해야 합니다. 이 토근은 백엔드 서버에서 클라이언트에 제공하고 동일한 서버에서 제공하는 REST API에 대해 유효성이 검사됩니다. 프로세스의 상위 수준 다이어그램은 그림4에 나와 있습니다.
이 애플리케이션을 위해 FLIR의 Cameleon은 산호세 교통국의 인증서버와 인터페이스하여 자격 증명을 검색 및 검증하고 Red5Pro서버가 요청에 포함된 자격 증명을 검증하기 위해 REST API를 제공합니다. 이 프로세스를 사용하여 Red5Pro가 만드는 REST API 호출을 통해 시행되는 보안 정책의 세부 사항을 알지 못하면 클라이언트를 허용하거나 거부합니다.
오프사이트 라이브 스트리밍
Red5Pro는 산호세 교통국 최초 응급구조원이 사고 현장의 실시간 스트리밍을 운영자가 최초 응급 구조원을 조정하는 제어실에 퍼블리싱할 수 있도록 하는 iOS 모바일 앱을 제공하였습니다.
모바일 앱:
① iOS 휴대폰 지원
② 안전하고 허용된 당사자만 사용할 수 있음을 보장
③ VPN에 연결된 사용자가 동일한 VPN의 온프레미즈 Red5Pro 서버로 라이브 스트리밍을 할 수 있다.
④ 전면 카메라와 후면 카메라를 전환하는 기능을 제공
⑤ 컨트롤 룸에서 앱 사용자와 운영자 간의 양방향 오디오 통신을 허용
⑥ 통신 백업으로 문자 채팅 지원
⑦ 최대 1080p 의 퍼블리싱 지원
⑧ GPS 데이터를 포함할 수 있지만 이에 국한되지 않는 맞춤형 데이를 관제실로 보낼 수 있다.
모바일 앱을 사용하려면 산호세 교육국의 인프라는 특히 다음과 같은 인터페이스를 지원해야만 합니다.
① VPN 또는 사용자 인증 프로세스는 모바일 앱이 Red5Pro 클러스터와 인터페이스하는데 필요한 포트에서 통신을 허용하는 앱을 사용하는 최초 응답자에게 생성되어야 한다.
② 관제실의 운영자가 원격지역에서 실시간 스트리밍 중인 응급 구조대원과 다시 통신할 수 있도록 하려면 운영자 앱을 설치해야만 한다.
Red5Pro가 제공할 수 있는 모바일 앱은 iOS에 국한되지만 필요한 경우 이 프로젝트에 포함된 맞춤형 개발의 일부로 안드로이드 기반 앱을 구현할 수 있습니다.
이에 관련하여 문의사항은 sales@strmlabs.com 로 문의하여 주기 바랍니다.
Comments