Firefox의 웹소켓(WebSocket) 기능

웹소켓의 요점은 낮은 복잡성, 낮은 지연, 웹 개발자를 위한 매우 간단한 API를 가진 양방향 통신 시스템이다. 잠시 쉬면서, 만약 우리가 파이어폭스에 그것을 포함시킬지, 그렇다면 언제가 될지에 대해 이야기 해보자.

낮은 복잡성

HTTP 처럼 핸드쉐이크로 시작하는 웹소켓 프로토콜은 텍스트 패킷을 서로 주고받을 수 있는 비교적 간단한 모델을 가지고 있다. 이 프로토콜의 복잡성을 상당히 낮다. 다중 통신이나 이진 데이터는 지원하지 않고, 일단 연결이 설정되면, 실제 데이터 전송 비용이 매우 낮아진다.

하지만 다중 통신이나 이진 데이터를 지원하는 기능이 추가되어야 할 것이라고 생각하는 사람들도 있다. (맞는 말일지도 모르겠다.) 그로인해 복잡성은 분명히 증가 하겠지만, 경우에 따라 더 가치 있을 수 있다. 하지만 자세한건 나중에 계속 하기로 하자.

양방향 통신

웹소켓의 주요 특징중 한가지는 간단한 양방향 통신 지원이다. 서버는 클라이언트에 쉽게 업데이트를 할 수 있고, 클라이언트도 서버에 업데이트를 할 수 있다. 프로토콜과 API가 직접 그것을 지원하기 때문에, 사람들이 그동안 만들은 많은 Comet스타일 응용 프로그램들은 이 모델로 인해 더 간단하고 더 빠르게 될 것이다.

그것은 양방향 통신을 허용하는 한편, HTTP 동일 근원(same-origin) 모델의 제약을 받는다. 즉, 브라우저 원하는 어떤 포트상의 어느 사이트에 연결 되는 능력을 웹소켓이 주는 것은 아니다.

그래서 웹소켓은 정말 HTTP 보안 모델이 있는 TCP 인 것이다.

낮은 지연

사실상 이것이 웹소켓의 주요 장점이다. 소량의 데이터를 보내는데 드는 비용 또한 아주 작다는 것이 관건이다. 오늘날의 Comet스타일의 응용프로그램으로도 양방향 통신이 가능하지만, 소량의 데이터를 보내기 위해 커다란 오버헤드를 요구하는 경우가 종종 있다.

이해를 돕기 위해, 다른 이야기를 해보자. 구글 웨이브에서는 키 입력에 따라 실시간 통신을 시도 하고 있는데, TCP통신의 시작과 접속이 끊어지는 곳(teardown), 그리고 단 몇 바이트를 보내더라도 HTTP 메시지 헤더를 반드시 포함해야 하기 때문에, 키 입력을 할 때마다 오버헤드가 발생한다.

나도 아직 시도해보지 않았지만, 만약 당신이 HTTP Comet으로 퀘이크를 구현 한다면, 상호작용을 체감하는 부분을 빈약할 것이라고 추측한다. 바로 이 부분에서 웹소켓이 빛을 발휘한다.

간단한 API

개발자가 보는 웹소켓의 실제 API는 비교적 간단하다. 메시지를 보낼 수 있고, 메시지를 가져올 수 있으며, 소켓을 열고 닫을 때와 에러가 있을 때 이벤트가 발생한다. 누군가 개발할 것이라고 확신 할 수 있는, 추가적으로 생기는 복잡성은 자바스크립트와 백엔드 라이브러리에서 생길 것이다.

(복잡한 문제는 뒷전으로 하는 것 같지만, 사실 이것이 다른 브라우저 표준들을 통해 보아온 성공하는 모델이다. 다른 사람들이 시험할 수 있는 비교적 간단한 것을 만든다. 우리가 무엇이 느린지, 혹은 무엇이 진전을 방해하는지 이해할 때, 반복하고 발전합니다.)

언제 Firefox에서 구현되는가?

우리는 다음 버전의 파이어폭스에 정말로 정말로 웹소켓을 지원하고 싶습니다. 그리고 많은 다른 사람들도 역시 우리가 지원하는 것을 원합니다.

아주 멋진 Wellington Fernando de Macedo (가장 훌륭한 공헌자중 한명!)에 의해 쓰여진 최초의 테스트 패치 세트는 2009년 4월 처음으로 제출 되었다. 그때부터 우리는 패치를 설치하고 변경된 사양에 대한 대응을 반복 하고 있다.

불행히도, 사양은 여전히 개정 중이다. 웹소켓이 크롬 버전 4에 탑재되어 버전 5에도 그대로 변경없이 포함될 예정이라고 크롬 개발자들은 말한다. 정말 불행하게 구글이 크롬에 포함한 버전현재 초안을 반영하지 못하고 있다. 서버의 보안 향상을 크게 하기 위해, 웹소켓 연결을 어떻게 시작할지에 대한 핸드쉐이크 방식이 변경되었다. 압축 기능의 통합을 어떻게 할 것인가, 이진 데이터를 직접 지원(바이너리 데이터를 문자열로 인코딩하는 것이 아닌)이나, 다중 통신을 지원해야 하는지 여부, 그리고 많은 다른 이슈들에 관하여 아직도 많은 논쟁이 진행중이다.

아직 웹소켓은 널리 사용되지 않고, 크롬은 파이어 폭스와 유사한의 흡수율(uptake rate)을 보이고 있다. 최신 초안이 통과되면 크롬과 파이어폭스 양쪽 모두 더욱 최신 버전에서 같은 시기에 지원할 수 있기를 바란다.

간단히 요약하면 : 웹소켓의 장래는 엄청하기 때문에 우리는 그것을 지원하고 싶지만, 그것이 충분히 안정적이고 안전한지 지켜봐야 할 것이다. 코드는 문제가 아니다, 우리는 그것을 이전부터 가지고 있었다. 수억 몇의 사람들에게 이 프로토콜을 탑재하기에 “충분히 완료된”것인지 의견 일치가 필요하다.

원저자: Christoper Blizzard – 원문으로 가기

작성자: Jade Won

안녕하세요~

Jade Won가 작성한 문서들…


댓글이 없습니다.

댓글 쓰기