Computer >> 컴퓨터 >  >> 소프트웨어 >> 브라우저

WebRTC란 무엇일까? 인터넷 실시간 통신을 바꾸는 API 총정리

오늘날의 인터넷은 10년 전과는 완전히 다른 모습입니다. 당시에는 화상 회의처럼 조금이라도 야심 찬 기능을 구현하려면 제대로 작동하지 않는 플러그인에 의존할 수밖에 없었습니다. 물론 여기서 말하는 것은 플래시(Flash)입니다. 2010년 스티브 잡스는 플래시가 보안에 취약하고 속도가 느리며 터치 기기 환경에 부적합하다고 공개적으로 비판하면서 큰 파장을 일으킨 바 있습니다.

하지만 이제는 더 나은 대안이 등장했습니다.

바로 WebRTC입니다. WebRTC를 활용하면 개발자가 HTML5, 자바스크립트, CSS 같은 개방형 웹 기술만으로 MMORPG(대규모 다중 사용자 온라인 롤플레잉 게임)나 화상 회의 도구 같은 실시간 애플리케이션을 만들 수 있습니다.

지금부터 WebRTC에 대해 반드시 알아야 할 내용을 하나씩 살펴보겠습니다.

WebRTC로 무엇을 할 수 있을까?

가장 먼저 기억해야 할 점은 WebRTC가 단일 API(Application Programming Interface)나 제품이 아니라는 사실입니다. WebRTC는 여러 API의 집합체로, 각각 완성도와 브라우저 지원 범위가 다르며 수행하는 작업도 크게 차이가 납니다.

WebRTC API 중 일부는 그다지 화려하지 않습니다. 단순히 컴퓨터의 웹캠과 마이크에 접근하는 역할만 맡기 때문입니다. 하지만 훨씬 야심 찬 기능을 담당하는 API들도 있습니다.

예를 들어 어떤 API는 사용자가 원격 상대에게 자신의 화면을 공유할 수 있게 해줍니다. 또 다른 API는 시멀캐스트(Simulcast)를 지원해 영상을 다양한 품질과 해상도로 방송할 수 있게 합니다. 미디어스트림(MediaStream) API를 활용하면 오디오를 실시간으로 처리하여 음소거, 일시 정지, 트랙 추가 같은 작업도 가능합니다.

이 외에도 훨씬 많은 기능이 있습니다. 짧은 글 하나에 다 담을 수 없을 만큼요. 요컨대 WebRTC는 원격 컴퓨터와 실시간으로 소통할 수 있게 해주는 강력한 API군입니다. 이미 수많은 사람들이 이 기술로 놀라운 결과물을 만들어내고 있습니다.

WebRTC의 실제 활용 사례

WebRTC가 성공적으로 활용된 대표적인 사례 중 하나는 Appear.in입니다. 2012년 출시 직후 리뷰했을 때도 로그인, 계정 생성, 플러그인 설치 없이 깔끔한 디자인으로 화상 회의를 한층 편리하게 만들었다는 점에서 좋은 평가를 받았습니다. 버튼 하나를 누르고 링크만 공유하면 곧바로 화상 채팅을 시작할 수 있었죠.

WebRTC란 무엇일까? 인터넷 실시간 통신을 바꾸는 API 총정리

Appear.in만 WebRTC 기반 화상 회의 서비스인 것은 아닙니다. 주류 IT 기업들이 만든 제품들이 쏟아져 나왔습니다. 시트릭스(Citrix)의 GoToMeeting Free와 파이어폭스 헬로(Firefox Hello) 등이 그 예이며, 웹 버전 스카이프 역시 WebRTC 기반으로 운영되는 것으로 널리 알려져 있습니다.

WebRTC는 브라우저 기반의 인터랙티브 멀티플레이 게임 제작에도 활용되었습니다. 대부분 저예산 프로젝트에 그쳤지만, 예외적인 사례도 있었습니다. 2014년 말, 피터 잭슨 감독의 호빗 3부작 마지막 편 개봉에 맞춰 《호빗: 다섯 군대의 전투(The Hobbit: The Battle for Five Armies)》 웹 게임이 선보였습니다.

WebRTC란 무엇일까? 인터넷 실시간 통신을 바꾸는 API 총정리

WebGL과 WebRTC의 힘으로, 플레이어는 오크, 엘프, 인간, 드워프 중 하나의 진영을 선택해 톨킨의 판타지 세계를 지배할 권리를 두고 다른 플레이어들과 겨룰 수 있었습니다.

WebRTC란 무엇일까? 인터넷 실시간 통신을 바꾸는 API 총정리

그러나 WebRTC가 놀라운 방식으로 활용되고 있음에도 불구하고, 다양한 브라우저에서의 지원 현황은 매우 제한적이었습니다.

브라우저 지원 현황

예상대로 구글 크롬과 파이어폭스가 WebRTC를 가장 폭넓게 지원합니다. 다만 두 브라우저에도 빠진 기능이 눈에 띕니다. 예컨대 파이어폭스에는 크롬에 있는 시멀캐스트 API가 없고, 반대로 크롬에는 H.264 비디오 스트리밍이 지원되지 않습니다.

오페라(Opera)의 지원 역시 탄탄합니다. 크롬과 동일한 렌더링 엔진을 사용한다는 점을 생각하면 놀라운 일은 아니지만요.

WebRTC란 무엇일까? 인터넷 실시간 통신을 바꾸는 API 총정리

반면 인터넷 익스플로러와 사파리는 WebRTC를 지원하지 않았으며, 마이크로소프트와 애플 진영에서도 향후 지원 계획에 대한 소식은 들려오지 않았습니다. 다만 WebRTC 기능을 추가해주는 서드파티 도구는 존재했습니다.

테마시스(Temasys)의 Skylink는 IE와 사파리에서 WebRTC 기능을 사용할 수 있게 해주는 무료 플러그인입니다. 다만 제한된 수의 웹사이트에서만 작동하고 appear.in은 지원 목록에 포함되지 않는다는 한계가 있었습니다.

참고: 이 글의 집필 이후 상황은 많이 개선되었습니다. 사파리는 11 버전부터 WebRTC를 기본 지원하기 시작했으며, 크로미움 기반으로 전환된 마이크로소프트 엣지 역시 WebRTC를 완전히 지원합니다. 현재 WebRTC는 주요 브라우저 전반에서 표준처럼 사용되고 있습니다.

WebRTC는 안전한가?

WebRTC는 과거 브라우저 내 실시간 통신의 사실상 표준이던 어도비 플래시에 비하면 분명 큰 발전입니다. 플래시는 보안 취약점으로 끊임없이 시달렸고, 사용자를 해커와 악성코드에 그대로 노출시켰습니다. 스티브 잡스가 아이폰에 플래시를 탑재하지 않겠다고 밝힌 에세이에서 지목한 수많은 문제 중 하나도 바로 이 보안 문제였습니다.

다행히 WebRTC는 플래시 고유의 문제에서 비교적 자유롭습니다. 브라우저 플러그인이라는 별도의 소프트웨어가 아니라 API이기 때문입니다.

물론 WebRTC에 보안 문제가 아예 없었던 것은 아닙니다. 규모가 작을 뿐, 문제는 분명 존재했습니다.

몇 년 전에는 WebRTC API의 일부를 활용한 몇 줄의 자바스크립트 코드만으로 VPN 사용자의 실제 IP 주소를 알아낼 수 있다는 사실이 알려지며 화제가 되었습니다.

WebRTC란 무엇일까? 인터넷 실시간 통신을 바꾸는 API 총정리

VPN은 온라인 활동을 숨기고자 하는 프라이버시 의식이 강한 사용자들이 흔히 사용하는 도구입니다. 이 문제를 해결하는 업데이트가 늦게까지 나오지 않으면서, WebRTC를 완전히 비활성화하는 것이 유일한 대책으로 꼽히기도 했습니다. 파이어폭스의 Disable WebRTC 확장 프로그램이나 크롬의 Stop WebRTC 플러그인을 사용하거나, 자바스크립트 자체를 비활성화하는 방법이 대표적입니다.

앞으로 넘어야 할 산

WebRTC의 잠재력은 아무리 강조해도 지나치지 않습니다. HTML5 계열 기술 중에서도 WebRTC만큼 우리가 인터넷을 사용하는 방식을 바꿀 가능성을 가진 것은 없습니다. 인터넷을 더욱 협업적이고 상호작용적인 공간으로 만들 수 있기 때문입니다.

하지만 그 비전이 실현되기까지는 넘어야 할 장애물이 많았습니다. W3C는 마이크로소프트와 애플을 끌어들이고, WebRTC를 지원하는 브라우저 간 일관된 경험을 보장해야 했습니다.

그렇게 되기 전까지 WebRTC는 소수만 사용하는 틈새 기술로 남을 수밖에 없었습니다. 다행히도 지금은 주요 브라우저 대부분이 WebRTC를 지원하며, 화상 회의부터 클라우드 게임, 원격 협업 도구까지 그 활용 범위가 눈부시게 넓어졌습니다.

동의하시나요? 반대하시나요? 아래 댓글로 의견을 남겨주세요.