성공한 기술의 역사를 보면 언젠가 그 기술을 반드시 필요로 하는 때가 오기 마련입니다. 보통 외부적인 요인 때문에 기술 개선을 촉진시켜야만 할 때, 즉 나쁘지 않으면서 유망한 수준에 머물러 있던 아이디어를 사람들이 도저히 쓰지 않고는 배길 수 없는 기술로 끌어올려야 하는 때가 옵니다. 가장 최근의 대표적인 사례는 2007년 iPhone이 처음으로 출시되면서 클라우드 시장에 불어 닥친 대대적인 변화를 들 수 있습니다. 스마트폰의 등장으로 소규모 개발자들에게는 충분히 도전해 볼만한 엄청난 규모의 시장이 열렸고 대규모 개발자들 입장에서도 공용 클라우드 인프라를 활용하지 않으면 곤란할 정도로 고객층이 폭발적으로 늘었습니다. 두 경우 모두 사용자 기반에 대한 걱정은 접어두고 멋진 응용 프로그램을 구축하는데 집중할 수 있기를 바랐습니다.
작년에 코로나 바이러스가 발발하는 동안 실시간 통신 부문에도 유사한 순간이 닥쳤습니다. 소통을 가능하게 하는 것이 모든 조직의 생명줄이 된 것입니다. 2020년 이전의 소통은 전 세계의 사무실에 있는 회의실에서 이루어졌습니다. 하지만 작년 3월, 이는 극적으로 변했습니다. 이러한 회의실들은 갑자기 텅 비어버렸고, 18개월이 지난 현재에도 이러한 근무 방식의 변화는 지속되고 있습니다.
상당수 조직에서 Slack, Zoom, Teams 같은 실시간 협업 도구가 없었다면 신종 코로나바이러스 사태를 버텨내지 못했을 것이라는 점은 분명하지만 이 같은 커뮤니케이션 수단이 현재 많이 쓰이는 것은 앞으로 닥칠 일에 비하면 빙산의 일각일 뿐이라는 것이 Cloudflare의 판단입니다. 주변 상황을 보면 기업의 커뮤니케이션 방식이 재택근무 시대에 맞게, 최소 원격근무와 사무실 근무를 혼합한 방식에 맞게 바뀌는 폭발적인 기술 혁신이 다가오고 있다는 느낌을 지울 수 없습니다.
이 같은 점을 늘 염두에 둬왔던 Cloudflare는 오늘 Real Time Communications라는 플랫폼을 새로 선보이게 된 점을 기쁘게 생각합니다. 이 플랫폼은 고객 여러분이 차세대 실시간 대화형 응용 프로그램을 구축할 수 있도록 지원하기 위해 새롭게 개발된 제품군입니다. 일대일 화상통화가 됐든 그룹 음성회의 또는 화상회의가 됐든 실시간 커뮤니케이션 서비스의 수요는 갈수록 늘어날 수밖에 없습니다.
안정적이면서도 확장 가능한 실시간 커뮤니케이션 플랫폼을 운영하려면 대규모 네트워크를 구축하는 일이 필요합니다. 여러 지역에 걸쳐 사용자와 네트워트 에지가 1,000분의 1초 단위 안에 있어야만 모두가 짧은 대기 시간에, 낮은 패킷 손실율과 낮은 지터로 항상 연결 상태에 있을 수 있습니다. 즉 인터넷의 트래픽의 혼잡을 우회할 수 있는 백본이 필요합니다. 수천 명의 플랫폼 사용자에게 동시에 서비스를 제공할 수 있는 확장 가능한 인프라가 구축돼 있어야 합니다. 그 다음으로 미디어 서버를 투입하고 비즈니스 로직을 작성하고 다수의 클라이언트 플랫폼을 관리하고 아울러 이 모든 작업이 원활히 유지되도록 해야 합니다. Cloudflare는 이 모든 작업을 지원할 준비가 돼 있습니다.
여러분은 오늘부터 Cloudflare의 전역 에지 네트워크를 이용하면 "WebRTC Components"라는 이름이 붙여진 서비스를 통해 기존의 WebRTC 기반 화상 및 음성 응용 프로그램의 연결 속도를 향상시키는 것이 가능합니다. 여기에는 Cloudflare의 DDoS 공격 대응 시스템을 이용해 외부 공격으로부터 서비스를 보호하고 IP 및 ASN 기반 액세스 정책을 몇 번의 클릭만으로 시행함으로써 수천, 수만 명의 플랫폼 사용자에게 확장성을 제공하는 기능이 포함됩니다.
얼마나 실시간이 "실시간"일까요?
실시간이라는 말은 일반적으로 0.5초 이내에 오가는 커뮤니케이션을 뜻합니다. 즉 패킷(광신호)이 광통신 네트워크를 통해 전 세계를 순식간에 가로지는 속도가 실시간입니다. 2021년 현재 실시간 음성 및 화상 응용 프로그램은 대개의 경우 연결, 보안, UDP를 통한 미디어 및 데이터의 전송 방식을 정의하는 일련의 개방형 표준과 브라우저 API인 WebRTC를 이용하고 있습니다. 이 API 겸 프로토콜은 현재 많은 사용자들이 주로 의존하고 있는 브라우저 기반 통신 프로토콜인 HTTP보다 좀더 개선되고 좀더 탄력적인 양방향 커뮤니케이션 수단으로 사용하기 위해 개발됐습니다. 아울러 WebRTC는 브라우저에서도 지원이 되기 때문에 사용자는 별도의 맞춤형 클라이언트가 필요하지 않고 개발자들 입장에서도 마찬가지입니다. 사용자든 개발자든 브라우저만 있으면 문제가 없습니다.
중요한 점은 기업들의 근무 방식이 바뀌면서(Cloudflare도 예외가 아닙니다) 지구촌의 다양한 시간대와 다양한 지역에 걸쳐 실시간으로 안정적으로 서비스할 수 있는 커뮤니케이션 수단의 필요성이 급증하고 있다는 점입니다.
그렇다면 실제로 어떤 경우에 실시간이 중요할까요?
일대일 통화(FaceTime이 대표적)에서 중요합니다. 우리는 전화선으로 소통하는 종래의 방식보다 거의 즉각적인 의사소통에 익숙해져 있습니다. 과거로 되돌아갈 일은 없습니다.
그룹 통화 및 회의(Zoom 또는 Google Meet) 같은 경우, 몇 초만 지연이 발생해도 여기저기서 서로 대화하는 현상이 발생합니다.
소셜 비디오, 게임, 스포츠. 게임 중에 스트림 과정에서 몇 프레임이 누락되거나 버퍼링이 발생하여 액션이 늦어지거나, 중요한 순간을 놓치고 싶은 사람은 없습니다.
대화형 응용 프로그램: 브라우저의 3D 모델, 전화기의 증강 현실, 게임 스트리밍까지 모든 것이 실시간이어야 합니다.
Cloudflare가 볼 때 실시간 응용 프로그램의 영역에서는 이제 표면을 긁고 있는 단계입니다. 실시간 응용 프로그램을 수천 명의 사용자에게까지만 확대하려 해도 새로운 인프라 패러다임이 필요하며 전통적인 HTTP 기반 통신에 비해 더 많은 것을 요구한다는 것이 그 이유 중 하나입니다.
들어가기: WebRTC 구성 요소
Cloudflare는 오늘 중앙집중식 WebRTC TURN 서버를 운영하는 조직이 이 부하를 Cloudflare의 분산된 전역 네트워크로 옮겨 안정성을 높이고 더 많은 사용자에게 확장하며 인프라 관리에 들이는 노력을 줄일 수 있는 _WebRTC 구성 요소_의 클로즈 베타를 시작합니다.
TURN(Traversal Using Relays Around NAT, NAT = Network Address Translation)은 WebRTC 피어 투 피어 원본의 실질적 단점을 처리하기 위해 설계되었습니다. WebRTC는 피어 투 피어 기술이고 지금도 피어 투 피어 기술이지만 현실적으로 안정적인 피어 투 피어 연결을 확립하는 일은 통신회사급 NAT, 기업 NAT, 방화벽 등으로 인해 용이하지 않습니다. 또한 각각의 피어는 자체적인 네트워크 연결성으로 인한 제약이 있습니다. 전통적인 피어 투 피어 메시에서는 참가자들이 모든 피어로부터 데이터를 받아야 하므로 네트워크 연결이 빠르게 포화됩니다. 다양한 장치(모바일, 데스크톱)와 네트워크(대기 시간이 긴 3G부터 빠른 광통신까지)로 구성된 혼합 환경에서는 몇 개의 피어로 확장하는 일조차 극도로 어렵습니다.
자체 인프라가 아니라 에지에서 TURN을 실행하면 연결이 개선됩니다. Cloudflare는 250개 이상의 도시에 걸쳐 Anycast 네트워크를 운영하므로, 사용자가 있는 곳에서 매우 가깝습니다. 따라서 사용자가 Cloudflare의 TURN 서비스에 연결하면 Cloudflare 네트워크와의 연결이 매우 우수합니다. 일단 사용자가 연결되면, Cloudflare 네트워크와 사설 백본을 활용해 현재 통신 중인 다른 사용자에게까지의 연결이 탁월하게 되는 것입니다.
이게 다가 아닙니다. 확장성에 대해 걱정하지 않아도 됩니다. WebRTC 인프라는 확장성에 관한 한 악명이 높습니다. 적절한 위치에 적절한 용량을 확보해야만 합니다. Cloudflare의 TURN 서비스는 자동으로 확장되며 엔드포인트를 늘리고 싶다면 API를 한 번 호출하면 됩니다.
당연히 WebRTC 구성 요소는 Cloudflare 네트워크에 구축되므로 Cloudflare의 100Tbps 네트워크가 제공하는 DDoS 방어 기능의 혜택을 볼 수 있습니다. 이제부터 확장 가능하고 안전한 프로덕션급 WebRTC 릴레이를 전 세계에 배포하는 일은 몇 번의 API 호출로 끝납니다.
개발자 우선 실시간 플랫폼
하지만 Cloudflare는 이제 시작입니다. 확장성 있는 관리형 TURN 인프라는 일대일 및 소규모 그룹 통화에 꼭 필요한 구성 요소이며 특히 자체 인프라를 관리해 오던 조직의 경우 더욱 중요하지만, 참가자 수를 늘리기 시작하면 복잡성이 급격하게 커집니다.
그러한 복잡성은 통화 품질을 높이기 위해 각각의 클라이언트가 보내고 받는 스트림(WebRTC의 용어로는 "트랙")의 품질을 관리하는 일일 수도 있고, 대규모 이벤트에서 말하거나 방송할 사람을 결정하는 권한 시스템의 문제일 수도 있고, 미디어 환경 위에 지원 채팅 및 대화형 기능을 제공하는 신호 인프라를 구축하는 일일 수도 있겠지만, 한 가지는 명확합니다. 해결해야 할 일이 많아진다는 것입니다.
Cloudflare는 이를 염두에 두고 다음과 같은 방향으로 나아가고 있습니다.
하위 인프라, 인증, 승인, 참가가 권한 등의 관리 및 구성 필요가 없는 개발자 우선 API. 참가자, 회의실, 채널의 관점에서 생각한다면, 복잡한 ICE, 피어 연결, 미디어 트랙에 대해 학습할 필요가 없다는 말입니다.
Cloudflare for Teams와의 통합으로 조직 액세스 정책 지원. 회사 전체의 회의가 원격으로 진행된다면 이러한 역량이 필요할 것입니다.
모든 입력 및 출력 소스 연결을 쉽게 하는 것. 전통적인 HTTP 스트리밍 클라이언트에 대한 방송, [Stream Live](https://blog.cloudflare.com/stream-live/)를 이용하여 주문형 재생을 위해 녹화하기, Stream Connect 또는 WHIP 같은 미래 프로토콜로 RTMP 소스로부터 수집하기 등 포함.
Cloudflare Workers를 통해 임베딩된 서버리스 역량. 참가자 이벤트(참가, 떠남)에 Workers를 트리거하는 것부터 Durable Objects와 WebSockets을 이용해 상태 저장 채팅 및 협업 도구를 구축하는 것까지.
이 모든 것은 이제 시작입니다.
또한 RTC 플랫폼을 구축하는 데 있어 중요한 역할을 할 야심찬 엔지니어를 찾고 있습니다. 차세대 대화형 응용 프로그램을 개발하고자 하는 엔지니어라면 Cloudflare와 7함께 하세요!
Cloudflare와 협력하여 더 넓은 세계를 연결하는 데 관심이 있으며, 기존 실시간 비디오 및 오디오 플랫폼을 수백, 수천 명의 동시 사용자 이상으로 확장하는 데 어려움을 겪고 있는 경우, WebRTC 구성 요소의 클로즈 베타에 등록하세요. 특히 실시간 여정을 시작할 때 긴밀하게 협력하고자 하는 팀과의 협업을 원합니다.