소프트웨어 환경의 아주 큰 흐름을 살펴보면 대략 60~70년대 메인프레임(main frame), 80년대 클라이언트/서버 90년대 웹 기반(web based)으로 바뀌어 왔다. 호스트 컴퓨터와 터미널로 구성된 중앙집중식 1-티어 시스템에서 2-티어(클라이언트/서버)로, 그리고 3-티어 이상을 이야기하는 n-티어의 다 계층 시스템으로 발전했다.
80년대 유닉스 워크스테이션이 등장하고, PC가 발전하면서 메인프레임 위주의 중앙집중식 컴퓨팅 환경은 네트워킹을 기반으로 하는 클라이언트/서버 시스템 쪽으로 급속히 옮겨 갔다. 클라이언트/서버 시스템은 서버 측은 데이터베이스와 비즈니스 로직을 서비스하고, 클라이언트는 주로 사용자와 상호작용을 담당하는 모델이다. 클라이언트/서버 환경은 컴퓨팅이 집중되는 것을 막고, 사용자에게 미려하고 빠른 인터페이스를 제공했다.
90년대 중반에 시작된 인터넷 열풍은 소프트웨어 산업을 완전히 개편시켰다. 좀 더 정확하게는 소프트웨어 산업을 ‘뒤집었다’는 표현이 더 어울릴 정도로, 인터넷 네트워킹은 소프트웨어 개발이라는 분야를 모두 웹으로 끌고 갔다. ‘웹 기반(web based)’이란 단어가 붙지 않으면 시장에서 발붙일 수가 없었다. 이전에 클라이언트/서버 환경에도 네트워킹은 있었음에도 불구하고, 소프트웨어 산업 자체가 ‘웹 기반’으로 대대적으로 전환하게 된 것은 어떤 이유였을까.
가장 먼저 꼽을 수 있는 게 바로 ‘배포 문제의 해결’이다. 고전적인 클라이언트/서버 모델의 시스템에서 가장 큰 문제는 바로 클라이언트 애플리케이션을 배포, 설치, 업그레이드하는데 소요되는 비용이었다. ‘웹 기반’의 시스템은 애플리케이션을 배포하고 관리하는 문제를 해결해 주었다. 즉 모든 내용은 접속할 때마다 서버에서 클라이언트로 전달되기 때문에 서버 측에서만 수정해 주면 된다. 이 때문에 사용자들은 자기가 하고자 하는 일에 따라 다른 프로그램을 사용하는 것이 아니라, 웹 브라우저만 가지고 다양한 서비스를 이용할 수 있고 사용자가 다른 기계로 옮겨가도 똑같은 작업을 할 수 있게 된다.
하지만 모든 기술이 그러하듯 ‘웹 기반’ 시스템이 장점만을 가진 것은 아니다. 인터넷을 기반으로 하는 시스템의 구성은 분산 시스템이지만 역설적이게도 매우 중앙 집중화되어 있다. ‘웹 기반’의 시스템에서 클라이언트는 브라우저만으로 구성되는 간단한 구조를 가지지만, 서버 측은 상당히 많은 컴퓨팅이 필요하게 되고 서비스가 다양화될수록 복잡도가 크게 증가한다. 또한, 네트워크 세상에서 볼 때 HTTP는 결코 싼 자원이 아니다. 그럼에도 불구하고 하나의 웹 페이지를 만들기 위해 보통 5~10개 이상의 TCP 연결을 만들고, 파일을 다운로드하게 된다. 사용자 수와 서비스 내용에 따라 다르겠지만 가입자와 서비스가 늘어날수록 고가의 대형 시스템과 높은 대역폭을 가진 회선을 필요로 하게 된다.
다양한 상호작용과 미려한 사용자 인터페이스에 대한 요구가 점점 더 많아졌고, 브라우저가 제공하지 못하는 추가적인 기능을 제공할 필요성이 높아졌다. 현재의 DHTML과 같은 웹 기술은 미려한 사용자 인터페이스를 제공하고 있지만, 여전히 사용자들은 훨씬 다양하고 풍부한 인터페이스를 원하고 있다. HTML은 멀티미디어와 인터페이스의 속도나 구현에 많은 한계를 가지고 있다. 이것은 HTML의 한계라기보다 인터넷의 확대와 대역폭이 커짐에 따라 새로운 요구들이 더 많아지고 다양화되었기 때문이라고 할 수 있다. 웹 시스템의 한계를 보완하고 클라이언트/서버의 장점을 살리고, 다양하고 복잡한 요구 사항들을 수용하기 위해 새로운 모델이 필요하게 된 것이다.
X인터넷이란 무엇인가?
X인터넷(X-Internet)은 웹 이후 다음 세대 인터넷을 설명하기 위해 만들어낸 개념이다(포레스트 리서치 Forrester Research, 2000). X인터넷은 다음과 같이 정의할 수 있다.
◆ eXtended internet(확장된 인터넷)
수행 가능한 인터넷 그리고 확장된 인터넷이 X인터넷이다. ‘수행 가능(eXecutable)’과 ‘확장(eXtended)’에 대해 좀 더 살펴보자. 현재 웹 페이지는 페이지(page)라는 말에서도 알 수 있듯 사용자에게 종이로 된 문서(혹은 책)를 넘겨보는 것과 비슷한 경험을 준다. 수행 가능한 인터넷(executable internet)이란 사용자에게 읽어야 할 ‘페이지’를 전달하는 것이 아니라 ‘상호작용(interactivity)’을 전달하는 것을 말한다. 사용자 중심의 풍부한 기능을 가진 동적이고 ‘지능적’ 서비스를 제공한다.
확장된 인터넷(extended internet)이란 다양한 디바이스에 애플리케이션을 구현할 수 있도록 하는 것을 말한다. 많은 전문가들이 기술 발전으로 대부분의 전자 장치들이 인터넷과 연결될 것으로 예측하고 있다. PC, PDA, 차량 장착 장비 등 다양한 장치에 같은 방법으로 애플리케이션을 구현하게 해준다(즉 유비쿼터스 컴퓨팅도 기반으로 하고 있다).
eXecutable(수행 가능)과 eXtended(확장)가 X인터넷을 정의하는 말이지만, 혹자는 이렇게 덧붙여 설명하기도 한다. 정확하게 예측할 수 없지만 차세대 인터넷 환경을 지칭하기 위해 X를 현재의 인터넷을 넘어선 미지의 ‘그 무엇’ 혹은 X를 eXperiential(경험적인)로 이야기하기도 한다. X인터넷을 한마디로 이야기하면 더 풍부하고(rich), 더 지능적인(intelligent) 클라이언트 기술이라고 이야기할 수 있다.
X인터넷과 클라이언트/서버 시스템, 웹 기반 시스템
X인터넷은 언뜻 보기에 클라이언트/서버 시스템을 웹 페이지에 결합시킨 것 같이 보인다. 하지만 많은 차이가 있다. X인터넷이 클라이언트/서버 시스템의 장점을 포함하고 있기는 하지만 이전의 클라이언트/서버와는 다르다. 클라이언트/서버 시스템에서는 코드가 배포되지 않는다. 즉 프로그램은 변함이 없고 클라이언트와 서버간에 데이터만 주고받을 뿐이다.
X인터넷에서는 실행 가능한 코드가 실시간에 배포된다. 여기서 말하는 코드는 액티브X의 컴파일된 코드나 자바의 바이트코드보다 훨씬 상위 수준의 코드들이다. 상용화된 X인터넷 기술들을 살펴보면 XML 기반의 마크업 언어나 혹은 자체적인 스크립트 언어를 제공한다. 스크립트 혹은 마크업은 기존의 손쉬운 개발과 유지보수를 가능하게 한다.
액티브X 혹은 자바 애플릿은 컴파일된 코드를 배포한다. 그래서 액티브X와 자바 애플릿을 분산 코드(distributed code) 기술이라고도 한다(분산객체 기술과 혼돈하지 말자). 반면 대부분의 X인터넷 구현 기술들은 컴파일된 코드를 사용하기보다 코드를 받아서 인터프리트(interpret)한다. 그리고 UI를 구성하는 XML과 자바스크립트 혹은 자체 지원 스크립트를 실시간에 해석하여 수행한다. 수행되는 코드와 데이터가 다양한 장치에 다운로드되어 사용자와 상호작용을 한다.
매번 다운로드하고 인터프리트하기 때문에 속도 문제가 있을 것 같지만, 실제로 일반적인 웹 기반 애플리케이션들보다 훨씬 빠르다. 앞서 이야기한대로 훨씬 상위 수준의 코드를 사용하기 때문에 실제 한 화면을 구성하는 애플리케이션의 크기가 수십 KB 정도에 불과하다. 또한, 코드들은 이미 클라이언트에 설치된 런타임을 호출하여 사용하기 때문에 매우 빠르게 반응한다. 이러한 특징 때문에 X인터넷 기술들은 대부분 웹 기반 애플리케이션에 비해 네트워크 트래픽을 아주 적게 발생시킨다(대략 1/10 정도 이하를 이야기한다).
그 외에 또 다른 특징으로 들 수 있는 것이 대부분 X인터넷 시스템들이 서버 푸시(PUSH)를 제공한다는 점이다. 예를 들어, 지정된 시간에 혹은 특정 이벤트가 발생했을 때 서버가 클라이언트에 알려주는 것이 가능하다. 일반적으로 X인터넷 기술들은 잘 설계되고 클라이언트에 최적화된 런타임을 가지고 있고, 스크립트 혹은 마크업 언어를 가지고 있는 구성이다. X인터넷 시스템들은 회사마다 많은 차이들이 있지만, 어떻게 보면 작은 규모의 JVM 혹은 닷넷 CLR(Common Language Runtime)과 유사하다.
X인터넷 기술의 특징
현재 개발되어 상용화된 X인터넷 기술들은 많은 공통점이 있다. UI를 손쉽게 만들 수 있다는 점, 개발 방법이 스크립트 언어 수준의 다루기 손쉬운 언어를 쓴다는 점, UI와 비즈니스 로직을 분리한다는 점, UI를 기술하기 위해 XML을 사용한다는 점 등 많은 공통점이 발견된다. X인터넷 기술들이 대부분 어떤 특징들을 가지고 있는지 살펴보자. 여기서 살펴보는 내용은 현재 상용화되어 있는 X인터넷 기술들의 특징을 요약한 것이지, 이 특징들 자체가 X인터넷 기술을 이야기하는 것은 아니라는 점을 기억해 두자.
◆ 전용 스크립트 언어와 UI를 위한 마크업 언어 : 대부분 UI를 XML로 기술하고, 자체 마크업 언어 혹은 스크립트 언어를 제공한다. 예를 들면, 코키네틱의 I3ML과 내장 자바스크립트 엔진, 플래시의 액션스크립트(ActionScript) 같은 기술들이 있다.
◆ 개발 도구 : 비주얼 베이직 환경과 비슷한 형태의 비주얼한 개발 도구를 제공한다. 코드를 작성하고 테스트하는 환경을 제공하며, 주로 화면을 디자인하는 기능을 많이 제공한다.
◆ 다양한 장치 지원 : 윈도우, 리눅스, 유닉스, 무선 기기에서 동일한 인터페이스를 제공한다.
최근 대부분의 X인터넷 기술들은 XML 웹 서비스(SOAP) 등을 지원하고 있다. 이러한 X인터넷 기술을 활용하면서 얻게 되는 가장 큰 장점은 아무래도 풍부한 인터페이스가 된다. 이에 못지않게 높은 개발 생산성을 얻을 수 있다는 장점도 있다.
이전에 클라이언트/서버 시스템의 클라이언트를 개발하는 것이나, 웹 애플리케이션을 유지보수하는 것에 비하면 유지보수가 한결 손쉬워진다. 서버 측에는 UI 관련한 내용이 거의 혹은 전혀 없게 되고, 클라이언트 측에서는 간편하고 편리한 전용 도구와 스크립트로 개발하기 때문에 시스템을 유지보수하기가 훨씬 수월해 진다(개발 생산성을 3배 정도로 보고 있다). HTML 애플리케이션에 비해 폼 생성 등 손쉬우면서도, 일반적으로 HTML로 만들어진 애플리케이션보다 훨씬 빠르게 동작한다.
상용 X인터넷 기술들
매크로미디어, 플래시 MX
상용 X인터넷 기술로 가장 널리 알려지고 사용되고 있는 기술은 역시 매크로미디어의 플래시(flash)이다. 플래시는 자체에 액션스크립트라는 ECMAScript 기반의 스크립트 언어를 가지고 있는데, 편리한 저작 환경과 강력한 벡터 그래픽으로 가장 널리 사용되는 인터넷 리치 클라이언트 기술이 되었다. 플래시는 SWF라는 파일을 만들어 내는 저작 도구이며, SWF는 브라우저에 플러그인으로 장착되는 플래시 플레이어(Flash Player)에 의해 구동된다. 즉 플래시 플레이어가 SWF 파일의 수행 환경을 제공하는 것이다.

플래시 자체만으로도 데스크탑 애플리케이션을 만들 수 있다(실제 실행형 .EXE 파일로 무비를 만들어 내는 것이 가능하다). 플래시 자체가 액티브X/COM 컴포넌트라는 점을 생각해 보면, 플래시를 기반으로 한 데스크탑 애플리케이션 개발도 가능하다. 즉 비주얼 베이직 혹은 C++로도 플래시를 애플리케이션에 포함시켜 플래시 기반의 미려한 인터페이스를 제공할 수 있다(플래시 자체가 카메라와 화상통신을 지원한다. 이런 특징을 이용하여 데스크탑 화상회의 시스템을 만들어 볼 수도 있을 것이다).
플래시가 대표적인 X인터넷 기술이 될 수 있는 또 다른 강점은 바로 임베디드 플래시에 있다. 모바일 장치에 들어가는 SWF 플레이어가 이미 오래 전부터 상용화되었다.
X인터넷을 지향하는 언어, Curl
Curl은 X인터넷을 위해 만들어진 언어이다. 웬만한 웹 페이지를 만들기 위해서는 애니메이션 GIF, DHTML, 자바스크립트, 플래시 등 5~6가지 서로 다른 기술을 사용한다. 그러나 Curl은 이런 다양한 기술들을 따로 따로 사용할 필요 없이 Curl 언어에서 모든 것을 기술(description)할 수 있게 한다. 런타임 환경이 3D 그래픽을 포함하여 다양한 그래픽과 표현 및 상호작용을 가능하게 한다. Curl 언어는 표현 위주의 독특한 구성을 가지고 있다. 코드와 화면 구성을 동시에 표현할 수 있도록 되어 있다.


[화면 3]은 [화면 2]에서 보여지는 3줄짜리 Curl 프로그램을 수행한 것이다. 코드와 컨텐츠를 함께 기술하고 있다. Curl은 애플릿 형태와 패키지 형태로 배포된다. [리스트 1]은 Curl로 작성된 그래픽스 데모이고 [화면 4]가 이 코드의 수행 화면이다.




그 밖에 코키네틱(CoKinetic), 드롭렛(Droplets), 알티오(Altio, AltioLive) 등의 X인터넷 기술들이 있다. 알티오의 알티오라이브 플랫폼은 브라우저 안에서 수행되는 애플릿 개발 프레임워크로 J2ME 장비를 위한 XML 사용자 인터페이스 플랫폼이다. 자바, C++, 닷넷 CLR 등 다양한 플랫폼을 지원한다. [화면 5]는 알티오라이브의 SFA(Sales Force Automation) 데모이다. 브라우저 안에서 여러 개의 작은 창들이 동작한다.
리눅스용 애플리케이션 프레임워크, SashXB
Sash는 HTML, 자바스크립트 그리고 XML만으로 데스크탑 애플리케이션을 제작하도록 하는 프레임워크이다(Sash는 윈도우를 의식해서 ‘창틀’의 의미로 지어진 이름인 듯 하다). Sash에서는 HTML, 자바스크립트, XML로 만들어진 애플리케이션을 웹플리케이션(Webplication)이라고 하는데, 자바스크립트로 런타임을 호출하여 애플리케이션이 수행된다. 현재 리눅스를 지원하는 오픈소스 프로젝트 SashXB가 진행되고 있다. SashXB는 자바스크립트를 이용하고 하부 구조로 GNOME, 모질라, OpenLDAP 등을 사용하고 있다.

마이크로소프트 닷넷, 스마트 클라이언트
닷넷에는 자바 애플릿이나 혹은 액티브X 컨트롤처럼 웹 페이지에서 운용되는 컨트롤 기능이 있는가? 오히려 닷넷은 애플릿이나 액티브X 컨트롤보다 더 많은 기능들을 프레임워크 차원에서 지원한다. 닷넷의 윈폼(WinForms)은 훌륭한 X인터넷 기술 중 하나이다.
또, 차세대 윈도우 롱혼(longhorn)의 UI 부문인 아발론은 XML로 인터랙티브한 애플리케이션을 손쉽게 제작할 수 있는 다양한 기술들이 포함되어 있다. 이런 기능들은 X인터넷의 요건을 충분히 충족할 만하다. 사실상 윈도우가 거의 모든 클라이언트로 사용되고 있는 점을 감안할 때, 확실히 닷넷을 포함한 롱혼은 X인터넷의 주도권을 가져갈 강력한 후보임에 틀림없다.
그 밖에 지난 10년간 써온 HTML 폼을 뛰어넘어 새로운 규격의 W3C의 XForms, XML 기반의 UI를 기술하는 방법을 제공하는 모질라의 XPToolkit 등도 주요한 X인터넷 기술로 주목받고 있다.
P2P 웹 서비스 클라이언트에 대한 예측
X인터넷은 웹 이후를 논한다기보다 발전 흐름을 짚어보고, 향후 인터넷의 기술 환경 변화와 방향을 생각해 보는 키워드로서 받아들이는 게 좋을 듯 싶다. X인터넷 자체가 기술을 이야기하는 게 아니라 현재 인터넷 이후의 인터넷을 이야기하는 개념의 이름이기 때문이다. X인터넷이란 키워드로 명명된 차세대 인터넷 환경은 어디로 갈 것인가? 조심스럽게 ‘P2P 웹 서비스(Web Ser vices) 클라이언트’를 점쳐본다.


전통적으로 군사 분야 기술들이 기업에서 활용되고 그것이 개인에게까지 전달되고 있다(사실 인터넷 자체도 그 중의 하나다). 또한, 3~4년 전까지만 웹 서버를 가지고 사이트를 구축하여 컨텐츠를 생산하는 것은 기업들이나 가능한 일이었다. 그러나 다양한 방법과 기술들이 개발되면서 개인들은 스스로 컨텐츠를 생산하고 유통시키고, 또 그걸 통해 자신을 표현하고 있다. 대부분 전문가들이 이런 개개인의 표현 욕구와 생산 욕구는 결국 서비스까지 개인들이 하게 되는 P2P 대중화로 귀결될 것이라고 보고 있다([화면 7]은 P2P 인트라넷 기술로 대단한 관심을 모았던 그루브(Groove)의 화면이다).
웹 서비스를 이야기할 때 꼭 이야기되는 것이 바로 SOA(Service Oriented Architecture, 서비스 위주의 아키텍처)이다. SOA는 [그림 2]와 같이 세 가지로 구성된다.
SOA가 다른 모델과 크게 다른 특징으로 프로세스(좀 더 정확히는 ‘비즈니스 프로세스’)를 위주로 정보시스템 인프라를 구축한다는 것과 느슨하게 결합된(loosely coupled) 애플리케이션 개발 및 관리 아키텍처라는 점을 들 수 있다. 느슨하게 결합되어 있다는 것은 필요할 때만 연결이 이뤄진다는 이야기이며, 또한 서로 독립적으로 운영되고 있음을 뜻한다. SOA를 구성하는 세 가지 요소는 서로 느슨하게 연결되어 있으며, 서로 완전히 독립적이다.
간단히 말해, P2P란 클라이언트/서버가 정해진 것이 아니라 서로 클라이언트/서버가 되는 모델을 말한다. 개개인들이 직접 서로 서비스를 하는 P2P를 가능하게 하는 중요한 부분이 하나 더 있는데, 바로 원하는 서비스가 어디에 있으며 어떤 모습을 하고 있는지를 찾아주는 중계인(broker)이다. 서비스를 제공하고 받는 관계들이 많아지면, 이런 서비스를 찾아주고 연결해 주는 ‘서비스’가 필요하게 된다(즉 웹 서비스의 UDDI 같은 역할들이 필요하게 된다).
경매 거래의 확실성을 위해 중계 사이트를 이용하는 것처럼 서비스를 찾아주고, 연결해 주고, 다리를 놓아주고, 거래를 성사시키는 중계인이 중요한 허브로 등장하게 될 것이다. 이것이 미래 인터넷 기업의 진짜 모습일지도 모른다. 현재처럼 컨텐츠를 제공하는 것이 아니라 서비스 요청자와 서비스 제공자 사이에서 단지 아주 많은 링크만을 제공하는 형태가 될 것이다.
기술은 기술로만 존재하는 것이 아니라 사회/문화적인 테두리 안에서 커지고 발전한다. 웹 이후에 X인터넷은 웹의 종말을 이야기하는 것이 아니다. 웹은 향후에도 아주 오랜 동안 유지될 것이고, X인터넷과 함께 더 많아질 것이다. @
지금 뜨는 기사
이시각 헤드라인
ZDNet Power Center
