Ajax1.0은 시작에 불과했다.
이제 근본적인 변화를 몰고 오는 Ajax 2.0,
Comet이 온다!
<<Ajax in Action>>으로 우리에게 친숙한 데이브 크레인과 웹 개발자 필 매카시가 공동 집필한 <<COMET AND REVERSE AJAX: The Next Generation Ajax 2.0.>>가 정지웅 님의 번역으로 출간되었습니다.
Ajax가 처음 모습을 드러냈을 때의 충격은 가공할 만했었습니다. 사실 기술적인 측면만 놓고 보자면 단지 몇 문장만으로도 설명이 충분히 가능했었는데 말이죠. 하지만 그 단순한 기술이 웹기술의 사용하는 방식에, 그리고 비즈니스 모델 측면에서 거대한 변화를 불러 일으켰습니다. 여기서 중요하게 바라봐야 할 지점이 있습니다. Ajax로 인해 파생된 변화가 컸다 하더라도 그 변화는 더 큰 변화를 위한 예고편에 지나지 않았다는 점입니다.
Ajax가 웹에 불러온 변화들을 기억할 것이다.
Ajax로 더욱 풍성해진 웹은 더욱 사용자에 가깝게 다가설 수 있었고,
결국 Web 2.0이라는 커다란 패러다임의 변화를 이끌 수 있었다.
Comet은 Ajax가보여주었던 변화에서 한걸음 더 나아가는 기술입니다. 클라이언트가 요청하기 전에 서버가 자유롭게 메시지를보낼 수 있으니 말입니다. Comet이 만들어 가는 새로운 변화는 이렇듯 양측의 컴퓨터가 웹을 통해 자유롭게 대화할 수 있는 진정한 대화형 웹 애플리케이션의시대를 앞당기고 있습니다. 이것이 Comet이 향하고 있는 새로운 웹의 모습입니다.
이 책 『Comet과리버스 Ajax』는 국내 최초로 Comet의 과거와 현재 그리고 미래를 모두 다루고 있으며 그 개념부터 실전에서의 적용까지, 모든 사항을 빠짐없이 기술하고 있습니다. 웹 기반 도구로 Comet과 Reverse Ajax를 어떻게 구현하는지, 이 기술을 충족시킬 만한 비즈니스적 요구는 무엇인지가 잘 나와 있습니다.
웹의 다음 방향이 어디인지 궁금하신가?
웹을 이끌 차세대 핵심기술이 무엇인지 궁금하신가?
그렇다면 Comet이 정답이라 하겠다.
Comet은 실시간 웹이라는 변화를 이끌고 있는 마이크로 블로그서비스 트위터(Twitter)의 핵심기술로 오랜 기간 사용되어 왔습니다. 뿐만 아니라, 차세대 웹의 근간이 될 HTML 5 표준의 핵심기술로 채택되었고, 자바 표준을 제정하는 JSR에서도 서블릿 3.0의 WebSocket 기술을 통해 공식 지원되는 주류 기술로 등장하게 되었습니다.
또한 Comet은 기존의 페이지 중심 웹 모델(page-by-page web model)이 가진 제약을 극복할 수 있게 해주는 기술입니다. 그리고 이런 연결지향형 애플리케이션에서 사용되었던 폴링(Polling) 기술의한계를 뛰어넘는 기술이기도 합니다.
그간의 웹 기술(HTTP)은 ‘상태를 지니지 않은(Stateless)’ 채 필요에 따른 연결을 지향해왔습니다. 하지만, 모바일 웹이 진화를 거듭해 나가는 시대이거나, 트위터와 같이 실시간으로 내 친구들과 대화할 수 있는 실시간 웹(RealTime Web)의 시대라면 어떨까요?
이제 근본적인 변화가 필요한 시점입니다. 다행히 웹을 설계해온 선구자들은 이런 변화를 위해 관련 기술을 오래 전부터 준비해왔고, 이제 마침내 성숙한 Comet이 표준 기술로서 세상의 중심에 서고 있습니다.
사족이지만, Comet은 자바스크립트의 아버지 더글라스 크락포드(Douglas Crockford), Dojo Framework의 리더 알렉스러셀(Alex Russell), 그렉 윌킨스(Grek Wilkins) 등이 극찬한 차세대 웹의 핵심 기술이기도 합니다.
역자이신 정지웅 님께서 장문의 서문을 쓰셨습니다. 마지막으로 이 글과 저자들이 보낸 서신을 소개합니다.
우리가 이제는 너무나 당연하게 생활 속에서 사용하고 있는 월드와이드웹의 역사가 벌써 20년이 되었다고 합니다. 기술은 빠르게 발달하게 마련이지만, 사실 알고 보면 지금 우리가 쓰고 있는 기술의 대부분은 10여 년 전에 나온 표준에 근거한 것들입니다. 지금도 충분히 만족하며 쓰고들 있긴 합니다만… 변화가 어디 그리 간단한 건가요? 하지만 모바일 웹, 실시간 웹으로 대변되는 새로운 변화의 바람은 웹 기술이 근본적으로 변화해야 한다고 말하고 있습니다.
이제는 웹 페이지가 아닌 웹 스트림의 시대, 실시간 웹(Real Time Web)이 의미하는 것은?
그러한 변화 중에서 가장 화두가 되는 것은 실시간 웹(Real Time Web)입니다. 이제 인터넷은 남녀노소를 가리지 않고, 생활 속에서 밀접하게 사용할 수밖에 없는 보편재가 되었지요. 인터넷은 이제 해커들만의 전유물이 아니라, 평범한 사람들이 다른 사람과 일상의 다양한 행위를 함께 하기 위해서 사용하는 도구가 되었습니다. 최근 이런 흐름이 큰 변화의 흐름으로 나타난 것이, 이른바 소셜 웹(Social Web)과 Web 2.0이라고 할 수 있겠습니다.
이런 변화 속에서 이런 소셜 웹이란 흐름을 더욱 가속화시키는 것이 실시간 웹(Real Time Web)이라고 하는 변화입니다. 사람과 사람의 짧고 간단한 대화를 쉽게 전파하고 나누게끔 하는 커뮤니케이션 플랫폼인 Twitter와 Facebook 그리고 실생활의 지역, 친교와 같은 행위를 엮어 주는 도구인 FourSquare, Loopt 같은 모바일 애플리케이션 등이 요즘 엄청난 인기를 구가하고 있는 것이 좋은 예라고 할 수 있을 것입니다.
이런 실시간 웹은 기존에 우리가 웹에 대해 가지고 있던 개념을 바꿀 것을 요구합니다. 이따금씩 업데이트되는 웹 페이지만으로 이루어진 것이 아니라, 조금 더 작은 조각으로 잘게 나누어진 정보의 조각, 대화의 조각, 마이크로 콘텐츠들이 인터넷 공간을 오가게 됩니다. 큰 콘텐츠가 가끔씩 변하는 정적인 웹이 아니라, 작은 콘텐츠들이 링크를 타고 실시간으로 업데이트되는 세상이 오고 있는 것입니다. 지금 옆집에서 일어난 화재 소식을 아이폰으로 찍어서 플리커에 업로드하고, 트위터에 올라간 이 사진의 링크가 다른 사람들을 통해 사방으로 전파되어 자칫 더 커질 뻔했던 사고를 미연에 방지했다는 얼마 전의 뉴스는 우리가 살고 있는 세상이 실시간 웹을 통해 어떻게 변화하고 있는지를 잘 보여주는 사례라고 할 수 있습니다.
실시간 웹의 필수요소, 차세대 웹을 이끄는 선두주자 Comet과 Reverse Ajax!
이렇게 실생활에 엄청난 변화를 가져오고 있는 실시간 웹. 그러나 이런 변화에는 기술적인 도전이 한 가지 남아 있습니다. 바로, 기존의 HTTP 기술과 표준이 이런 구조를 미처 생각하지 못했던 옛날에 설계되었기 때문에 갖게 되는 문제들입니다. 서버 푸시(Server Push), 즉 클라이언트가 요청하지 않아도, 서버가 다른 사용자나 다른 마이크로 콘텐츠의 변화를 실시간으로 바로바로 클라이언트에게 알려줘야 한다는 요구조건을 충족시키는 문제 말입니다.
물론 현존하는 기술로도 어렵긴 하지만 이런 기능을 구현할 수는 있습니다. 하지만, 조금이라도 규모가 커진다면? 문제는 달라집니다. Comet과 Reverse Ajax라고 불리는 신기술은 바로 이런 실시간 웹의 문제를 해결하기 위해 제안된 기술로서, 이미 HTTP 기술의 다음 세대 표준으로 낙점된 기술입니다. 클라이언트와 서버가 양방향으로 대화하면서 크고 작은 스트림들을 쏟아낼 수 있는데, 서버의 부하는 도리어 별로 크지 않다면? 기존의 웹 아키텍처에서라면 상상할 수 없는 일이겠습니다.
Comet은 이미 적지 않은 시간 동안 성숙기를 거쳐 왔습니다. 사실, 이런 대화형 애플리케이션에서는 다양한 Hack들을 통해 Comet을 독자적으로 구축해왔던 것이 사실입니다. 웹 채팅, 웹 캘린터, 트위터 같은 실시간 콘텐츠 퍼블리싱 서비스, 증시 시황 모니터, 온라인 회의 시스템과 같은 분야들 말입니다. 그런 음지에 있던 기술을 끌어올리고, 다양한 단체와 기업, 그리고 무엇보다 W3C, JCP 같은 표준 단체의 힘을 빌려 전 세계적으로 확산을 가능하게 한 주역이 바로 Comet과 Reverse Ajax라고 할 수 있습니다.
Ajax가 맨 처음 일부 애플리케이션만 적용되었지만, 이제는 모든 애플리케이션에서 보편적으로 쓰이는 기술이 된 것처럼, 실시간 웹이라는 변화는 Comet이 지향하는 쌍방향 연결이 어느 웹 애플리케이션에서나 보편적으로 쓰이게 될 것이라는 사실을 의미합니다. 그야말로, 흔히 붙는 별칭처럼 Comet이야말로 ‘Ajax 2.0’이라고 부를 수 있을 것입니다.
이미 시작된 거대한 변화, 준비되셨나요?
Ajax라는 작은 변화가 사용자 중심의 웹 UX라는 큰 변화를 가져온 것을 모두 기억하실 겁니다. Web 2.0의 거대한 흐름 속에서 사용자에게 가장 직접적인 편익을 준 것이 바로 Ajax라는 작은 기술이었으니까요. Comet이 몰고 올 변화는 더 크고 원대합니다. 우리가 알고 있던 웹의 기본 가정들, 그로 인한 한계들을 뛰어넘고 있으니까 말입니다.
20년의 역사를 거쳐, 이제 일상생활 곳곳에 없어서는 안 될 존재로 스며든 인터넷. 이제는 소셜 웹, 모바일 웹을 통해 사람들의 일거수일투족이 항상 웹과 연결되고 동기화되는 실시간 웹의 시대로 전이하고 있습니다. 인류의 발전이 언어, 활자, 전보, 전화, 인터넷이라는 통신수단의 발전과 함께 큰 도약을 이루었던 것을 기억하시나요? 이제 한 사람 한 사람의 작은 생각과 일상이 마이크로 콘텐츠가 되어 웹 곳곳에 스며들게 되고, 서버를 통해 수많은 사람들에게 실시간으로 그 정보가 공유되는 동시성-동기화 커뮤니케이션의 시대에 우리는 접어들고 있습니다. 흩어져 있는 개인의 작은 목소리가 곧바로 온 세계로 퍼져나가는 세상, 이러한 것을 가능케 하는 기술의 변화는 분명 사회, 경제, 문화의 모든 분야에 더 큰 변화를 불러오리라 쉽게 예상해 볼 수 있습니다.
기술은 가능성의 근원이라고들 합니다. 그리고 개발자는 그 기술을 가장 가까이서 접하고, 다루는 사람들입니다. 그리고 달라진 시대는 이제 더 이상 개발자가 기술을 다루기만 하는 해커에 머물기를 원하지 않습니다. 가능성을 알고 익히는, 도구를 잘 다루는 장인의 모습이 아니라, 그 가능성이 가진 가치를 세상에 더 빨리, 더 새롭게, 더 창조적인 방법으로 실현될 수 있도록 가능성을 실현하고 가치를 창조해내는 창조자(Creator)로서의 모습을 이 시대는 요구하는 것이 아닌가 생각합니다.
멋진 코더, 멋진 개발자, 멋진 해커이길 원하세요? 그것도 충분히 의미 있는 일입니다. 하지만, 기술로 가치를 창조하고, 세상에 그 가치를 전파할 수 있는 혁신자(Innovator)나 창조자(Creator)가 한번쯤 되어보는 건 어떠하신가요? Comet과 같은 무한한 가능성을 가진 기술과 비용과 시간을 줄여줄 다양한 오픈소스 플랫폼이 있기에, 이와 더불어 여러분의 열정과 창의성만 있다면, 그런 혁신과 창조의 주인공이 되는 것도 그리 어려운 일은 아닐 것이라 생각합니다.
Comet이라는 근본적인 변화가 웹을 어디까지 변화시킬지는 누구도 쉽게 예측하지 못합니다. 트위터라는 140자짜리 단문 마이크로 블로그 서비스가 전 세계의 사람들이 서로 얽히고설키는 웹 스트림의 중심이 되리라고는 아무도 예측하지 못했듯이 말입니다. 가능성은 이미 열려있습니다. 시대는 새로운 변화를 갈망하고 있습니다. 자, 이 거대한 변화를 그냥 팔짱 낀 채 두고 보시겠습니까, 아니면 직접 그 변화의 파도 속으로 뛰어들어 그 흐름을 직접 주도할 기회를 가지시겠습니까?
불가능한 일은 아니라고 생각합니다. 기술은 모든 변화가 가능하게끔 하는 가능성의 원천일 테니까요.
끝으로, 작은 분량의 작업을 오랫동안 지지부진하게 끌고 오게 되어 독자 여러분께 너무나 죄송하다는 말씀을 드리고 싶습니다. 그만큼 오래 기다려주시고, 이 책이 가진 가능성을 믿어주신 인사이트 출판사에게도 다시 한 번 감사 말씀 드립니다. 어쩌면, Comet이 더욱 성숙해지고 이제 세상에 빛을 발하려는 지금, 책이 출간된 것이 다행이라는 생각도 한편으로 들기도 합니다. 아무쪼록, 독자 여러분이 새로운 기술과 함께 시대가 요구하는 새로운 가능성, 개발자 개개인을 변화시키는 데 필요한 새로운 가능성을 한 아름 얻어 가신다면 더 바랄 것이 없겠습니다.
정지웅 드림
——————————————-
독자 여러분께 드리는 글
지난 10년 이상의 기간 동안 우리는 웹이 애플리케이션 개발의 모든 영역을 지배하는 것을 보아왔습니다. Ajax와 같은 기술들은 이러한 경향을 추동하고 그러한 변화의 속도를 더욱 빠르게 했습니다. 웹 브라우저상에서 동작하는 애플리케이션을 만드는 일은 전통적인 데스크탑 모델에 비해 놀랄만한 이점을 가지고 있습니다. 가장 큰 사유로 배포가 훨씬 간편하다는 것을 들 수 있겠습니다. 하지만, 그만큼 많은 제약도 존재합니다. 요청-응답 모델을 사용하기 때문에, 클라이언트가 모든 통신의 시작을 책임진다는 것은 사실상 큰 골칫거리라고 볼 수 있습니다. Comet은 이러한 제약들을 효율적으로 떨쳐내었습니다. 클라이언트와 서버가 실제로 쌍방향 통신을 하는 동작방식을 통해서 말이지요.
그렇다고 플러그인이나 바이너리 소켓, 또는 특별한 기법 등이 필요한 것은 아닙니다. Comet은 놀랍게도 이 모든 것을 일반적인 HTTP 환경 하에서 처리해 냅니다. 변환 같은 조금 어려운 작업이 있긴 하지만, 그마저도 이 책에 나오는 내용을 따라하면 쉽게 처리할 수 있습니다.
물론, 이런 모델을 견고하고 확장성 있게 만드는 일은 꽤나 어려운 일입니다. 하지만, 이 책에서는 몇몇 프레임워크들과 도구들을 활용해 손쉽게 개발할 수 있는 방법을 가르쳐 드립니다. 이를 통해 실전에서 곧바로 쓰일 수 있는 Comet 솔루션을 개발할 수 있을 것 입니다.
저자인 우리들 또한 처음에는 Comet이라는 기술에 다소간 의아심이 들었던 것이 사실입니다. 하지만, 그간 Comet을 다뤄오면서 우리는 마침내 Comet이야말로 다음 세대의 웹 기반 애플리케이션이라는 거대한 흐름을 가능하게 할 핵심 요소라는 결론을 내릴 수 있었습니다. 그리고 Comet은 실제로 그만큼의 가치를 가지고 있는 기술입니다.
Comet에 대한 문서나 튜토리얼을 여기저기서 찾아볼 수 있지만, 책에서 선보이는 예제 애플리케이션은 기존의 엔터프라이즈 웹 애플리케이션과는 유사성을 거의 찾기 힘들 정도로 다릅니다. Comet에 대한 내용에 책의 모든 분량을 할애하면서, 마침내 이 주제에 대해서 좀 더 자세한 실마리를 찾을 수 있었습니다. 그 덕분에 이 책, Comet과 Reverse Ajax를 통해 Comet을 사용하는 실전 CRUD 애플리케이션을 개발하는 과정을 소개할 수 있게 되었습니다.
우리는 이 책을 쓰는 내내 즐거웠습니다. 아무쪼록 여러분에게 이 책이 알찬 정보는 물론 즐겁고 영감을 주는 책이 되었다면 더 바랄 것이 없겠습니다.
데이브 크레인 , 필 매커시 드림
댓글이 닫혀있습니다.