Wednesday, July 16, 2014

WebRTC란?

WebRTC는 구글이 2011년에 릴리즈한 오픈소스 프로젝트로 쉽게 말해서 브라우저 상에서 별도의 추가적인 설치 없이 (플러그 인이나 익스텐션없이) Web-based Video Conferencing (화상회의/ 화상채팅)을 구현할 수 있게 하는 기술입니다. 여기서 중요한 사실은 별도의 추가적인 설치(Plug-in) 없이 작동한다는 점인데 이 점이 왜 중요하냐면 개발하는 쪽에서는 추가적인 개발이 없이 원천 기술을 무료로 사용할 수 있기 때문에 관련 사업을 시작하기가 좋고 (큰 추가적인 비용이 없이) 사용하는 쪽에서는 매번 사용할 때마다 팝업이 떠서 추가적인 소프트웨어를 설치해야 하는 귀찮음을 덜 수 있어서 편리합니다.

그렇지만 이런 WebRTC를 사업화하는데 여러 가지 문제가 있으며 아래는 그에 해당하는 리스트입니다.
1. 지원하는 브라우저 수의 한계: WebRTC는 구글이 주도하는 프로젝트이고 마이크로 소프트와 애플은 여러가지 이유로 현재 지원하고 있지 않습니다. (코덱 표준 설정에 대한 의견 불일치 등) 그리고 Firefox나 Opera도 지원을 하고 있지만 Chrome과 세부적인 부분에서 약간의 차이가 있거나 특정 기능의 지원이 안되는 경우가 있습니다.
2. Firewall 문제 해결: 구글에서 제공하는 WebRTC API와 node.js 를 이용하면 간단한 화상채팅 프로그램을 만들수 있지만 STUN이나 TURN서버 없이는 같은 네트워크 상에서만 사용이 가능하고 만약 다른 네트워크나 방화벽이 설치된 네트워크에 있는 컴퓨터에서 접속하려면 위에 이야기한 STUN/TURN 서버를 설치한 후 ICE candidate에 포함시켜야 합니다. 서버 구축은 어렵지 않으나 여러가지 네트워크 상황에서도 일정하게 동작하게 하는데는 (Availability) 많은 시간과 노력이 필요합니다.
3. Signaling: 구글에서 제공하는 WebRTC API는 Signaling 관련된 사항은 포함이 안되어 있기 때문에 시크널링을 어떻게 구현할 것인지도 해결해야할 큰 문제 중에 하나입니다.
4. 확장성 (Scalability): MCU(Multipoint Control Unit)없이 사용하는 WebRTC 어플리케이션은 Mesh call이기 때문에 하나의 화상회의에 참가할 수 있는 인원이 최대 10명 (구글 측에서 제시한 자료에 따르면)이지만 사실 상 유저의 컴퓨터 사양과 네트워크 상태에 따라 틀리며 7명만 넘어가면 화면이 깨지는 현상이 발생합니다. 이런 확장성 문제를 해결하기 위해서는 위에 언급한 MCU를 제작해서 포함시켜야 하는데 이 또한 많은 시간과 노력 그리고 기술이 필요합니다.

위와 같은 제약에도 불구하고 많은 장점을 가지고 있기 때문에 (코덱의 무료 사용 및 여러가지 웹컨퍼런싱기술 제공) WebRTC는 미래가 밝은 기술입니다.

WebRTC의 공식 웹사이트는 www.webrtc.org이며 관련 소스는 아래와 같습니다.
- WebRTC Application: https://apprtc.appspot.com
- Sample Source Code: github.com/GoogleChrome/webrtc

7 comments: