Freigeben über


클라이언트 아키텍쳐의 선택 방법과 UX/RIA 도입 가이드

김영욱 iwinkey@hotmail.com: 국내 유수의 대기업 프로젝트에 참여했던 풍부한 경험과 마이크로소프트 MVP로서 다양한 활동을 바탕으로 WPF 및 Silverlight와 같은 UX 기술에 전념하고 있다. 현재 한국 마이크로소프트에서 개발 전도사로 활발히 활동하고 있다.

라디오가 제일 처음 출현했을 때 세상은 깜짝 놀라면서 세상이 라디오를 통해서 바뀔 것이라고 생각했다. 그리고 TV가 나왔을 때 세상은 TV로 인해서 크게 바뀔 것이라고 주장하기 시작했고 이런 현상은 컴퓨터의 등장과 인터넷의 등장에도 불구하고 계속해서 사람들은 그것들이 세상을 바꿀 것이라고 주장했지만 지금 우리 주위를 돌아보면 라디오, TV, 컴퓨터, 그리고 인터넷까지 어느것 하나 사라지거나 하지 않고 각각 다 자기 영역을 지켜면서 잘 살아있는 것을 볼 수 있다.

진화와 공존을 거듭하는 클라이언트 기술

옛날 ‘별이 빛나는 밤에’와 같은 한 밤중의 음악 프로그램에 청취자가 참여하기 위한 유일한 방법은 우편엽서를 최대한 예쁘게 꾸며서 보내는 방법이었다. 하지만 요즈음은 인터넷 게시판과 핸드폰의 문자 메시지를 통해서 참여할 수 있고 더 나아가서 인터넷과 연계해서 보이는 라디오까지 출현하고 있는 것을 보면 이전의 라디오와는 많이 다르다는 생각을 누구나 할 수 있게 된다.

소프트웨어도 이전의 환경과 더불어 많은 변화가 있었지만 이전의 기술들과 현재의 기술이 공존하고 있고 공존하기만 하는 것이 아니라 서로 서로 영향을 끼치면서 단단하거나 느슨한 기술의 고리를 가지고 연결되어 있다. 이전의 환경은 단순히 비지니스 모델을 파일 시스템으로 표현했다. 이 시기에는 파일 시스템이 곧 비지니스 모델의 추상화 였다. 물론 이 시기의 비지니스 모델은 단순하기도 했지만 사람들은 IT를 적극적인 비지니스의 도구로 생각하지는 못했고 단순히 자료의 축척이라는 개념에서 크게 벗어나지 못하고 있었기 때문에 이런 모델이 잘 소화해 낼 수 있었다. 하지만 비지니스 모델은 정적인 모델에서 가변적이고 변화의 시기가 짧은 모델로 변화하고 있었고 이 때문에 정적인 데이터 구조를 벗어나지 못하고 있는 파일 시스템의 모델로는 금방 한계에 다다를 수 밖에 없었다.

이때 문제의 해결책은 비지니스 모델과 데이터의 분리였고 이와 더불어 데이터베이스가 출현했다. 좀더 개념이 발전하면서 비지니스 모델을 잘 표현하기 위해서 N-Tier와 같은 아키텍쳐가 잘 자리잡기 시작했고 위치의 제약을 벗어나기 위해서 웹이 도입되기 시작했다. 크게 생각해보면 데이터베이스와 N-Tier 구조가 정의되어 있는(혹은 유사한 형태의) 구조를 서비스라고 정의하고 이 서비스를 웹으로 노출 시키기 위해서 웹 서버와 파이프 라인으로 연결한 구조가 현재 가장 전형적인 아키텍쳐 구조라고 이야기 할 수 있다. 물론 그렇지 않는 단순한 서비스도 다수 존재하겠지만 여기서는 일반적인 엔터프라이즈 환경을 기준으로 생각해 볼 때 그렇게 정의할 수 있겠다.

서비스가 웹이든 혹은 로컬 네트워을 통하든 어떠한 방법으로 노출이 될 때 이 서버스를 사용자들이 이용할 수 있게 주는 것이 바로 클라이언트이다. 클라이언트를 설명하기 위해서 서비스 구조를 먼저 설명한 것도 서비스에 따라서 클라이언트가 달라지기 때문이다.

clip_image002

<그림1> 현재 아키텍쳐의 전형

클라이언트 역시 터미 터미널의 문자 위주의 클라이언트 환경에서 부터 DOS기반을 거쳐서 매킨토시나 원도우즈 환경으로 넘어오면서 GUI로 넘어오게 되었다. GUI 환경에서는 주로 델파이, 파워빌더, 비주얼 베이직과 같은 걸출한 개발툴 들이 태동하던 시기였다. 사실 필자도 이 시기에 IT에 입문해서 비주얼 베이직 3.0 혹은 터보C이런 언어로 컴퓨터의 기초를 배웠다. 그리고 얼마 지나지 않아서 웹이라는 거센 물결이 흘러왔고 웹이 모든 클라이언트의 표준이 되었다. 모든 것이 웹 브라우저를 통해서 다 해결될 것만 같았고 모든 시스템을 웹 브라우저 기반으로 마이그레이션 하지 않으면 안될 것 같은 생각들을 했다.

하지만 웹 브라우저를 이용해서 접근할 수 있는 서비스나 시스템이 폭팔적으로 늘어나기는 했지만 이는 시장의 팽창을 불러왔을 뿐 기존의 클라이언트 기술의 종말을 의미한 것은 아니다. 오히려 기존의 클라이언트는 웹 프로토콜인 HTTP를 사용해서 네트웍을 할 수 있도록 발전했을 뿐 아니라 웹 환경 보다 더 나은 인터페이스를 제공하기 시작했다. 웹 브라우저 기반의 서비스는 접근성 면에서는 향상되었지만 기본적으로 보안 및 대량의 데이터를 다루는 클라이언트로는 기본적으로 적합하지 않았으며 또 인터페이스만 하더라도 기존의 클라이언트 기술에 비해서 많이 불편한 것도 분명한 사실이었다.

웹 브라우저의 접근성과 더불어 응용프로그램으로 구성된 기존의 클라이언트 기술의 편리함을 동시에 제공하려고 했던 시도가 바로 ActiveX 기술이다. ActiveX기술은 웹 브라우저를 통해서 다운로드 받아서 웹 브라우저 안에서 실행되는 구조로 보이지만 사실은 웹 브라우저와는 별도로 클라이언트에서 실행되는 하나의 응용프로그램과 같은 형태로 실행되기 때문에 인터페이스 및 대용량의 데이터 그리고 복잡한 알고리즘의 구현등에 있어서 꼭 필요한 기술이 되었다.

한 동안 많이 나왔던 솔류션이 바로 X internet 솔류션이다. 기존의 표준적인 웹의 단점을 해결하기 위해서 주로 나온 솔류션들이 바로 X internet 솔류션인데 대부분의 경우 그 속을 열어보면 ActiveX로 구성된 클라이언트를 제공하고 서버쪽에 미들웨어를 구성한 경우가 대부분 이었다.

RIA기술의 출현

웹 브라우저와 클라이언트 응용 프로그램으로 양분된 시장의 틈세에 웹에서 실행되는 별도의 플랫폼 기술이 나타나게 되었데 이 기술을 RIA라고 부르는 것이 일반화 되었다. RIA는 Rich Internet Application혹은 Rich Interactive Application의 약자로 부르는데 둘 다 Rich라는 단어가 중요하다. Rich의 의미는 기존에 HTML기반의 표준적인 웹에 비해서는 풍부하고 멋진 인터페이스를 제공한다는 의미에서 사용하고 있는 단어이다.

RIA와 관련해서 시장에 많은 영향을 끼친 것은 Macromedia사의 Flash기반의 기술이었다. Flash는 지금도 많은 부분에서 사용되고 있으며 Flash와 Flex, 그리고 Air 기술로 계속해서 수평적으로 확장하고 있다. 최근에는 이 분야에 MS에서도 실버라이트라는 RIA기술을 제공하고 있으며 실버라이트 2가 정식으로 런칭하면서 국내 대기업들과 언론사 그리고 포탈에서 채용되는등 가속도가 붙고 있다.

clip_image004

<그림2> 클라이언트 아키텍쳐

어찌되었던 현재는 <그림2>에서 보는 바와 같이 클라이언트 아키텍쳐를 3개층으로 나누어서 분류하게 되었다. 일반적인 웹 인터페이스와 RIA 그리고 클라이언트 응용 프로그램이 바로 그것이다. 이전에는 기술이 사용자들을 시장에서 리드해 나갔지만 요즘은 확연히 사용자들이 기술을 리드해 나가는 시장으로 바뀌었다. 클라이언트 아키텍쳐의 모양이 3개층으로 분류되어 있기는 하지만 이는 분류를 위한 구분일 뿐 사용자들은 각 층을 넘나드는 요구사항을 내놓는게 일반화 되었다. 따라서 이를 수용하기 위한 기술적인 유연함이 필요하다.

요구사항에 맞는 클라이언트 기술의 선택이 관건

국내에서 다수의 프로젝트를 수행하다 보면 잘못된 분석에 의해서 모든 요구사항을 웹 브라우저 기반의 클라이언트 기술로 해결하려는 경우를 다수 보게 되는데 이것은 상당히 위험한 생각이다. 최근에는 Flash기반이나 실버라이트 기반의 RIA기술로 우선 선택하려는 경우도 종종 있는데 이 역시 위험한 발상이라고 볼 수 있다. 그 이유는 웹이라는 환경은 기본적으로 텍스트 기반의 전송을 통해서 상호 운영성을 극대화하는데 그 목적이 있는 것이지 모든 요구사항을 고려해서 나온 아키텍처가 아니기 때문이다. 또 RIA기술의 경우 웹 브라우저 안에서 메모리를 할당 받고 프로세스를 할당 받기 때문에 일반적인 클라이언트 응용 프로그램에 비해서는 성능 및 사용할 수 있는 데이터 양에 있어서 다수의 제약이 뒤따를 수 밖에 없다. 또한 사용자들의 증가하는 요구사항을 수용하기 위해서 클라이언트의 자원에 접근에도 한계가 있다는 점은 상당히 치명적인 부분이다. 국내 모 대기업에서 내부 시스템을 Flex기반으로 구축했다가 최근에 닷넷 기반의 클라이언트 응용 프로그램으로 되돌리는 사례가 있었는데 이 경우도 역시 성능 및 기존에 개발해 두었던 소프트웨어와의 호환성 문제 및 오피스 파일과의 연계와 같은 요구사항들이 새롭게 발생했기 때문이다.

따라서 시작은 RIA기술로 했지만 언제 웹 브라우저로 혹은 클라이언트 응용 프로그램으로 확장해야 할찌 모르는 점을 항상 염두해 두고 선택해야 한다. 아주 엉뚱하게 모바일 플랫폼으로 확장해야 하는 경우가 발생할 지도 모른다면 어떻게 할 것인가 하는 고민도 하게 될 것이다. 이런 경우 어떻게 해야 할까?

클라이언트를 다른 계층의 클라이언트 기술로 이동 하더라도 최소한의 노력과 비용으로 확장이 가능한 아키텍쳐와 기술을 가져가는 것이 주요 포인트가 된다.

clip_image006

<그림3> MS의 클라이언트 기술

MS의 경우 RIA기술인 실버라이트 그리고 클라이언트 응용 프로그램 기술인 WPF. 그리고 곧 출시될 실버라이트 모바일이 같은 기반의 기술로 구성되어 있다. 따라서 필요에 따라 다른 계층의 클라이언트로 전이하는데 있어서 최소한의 노력으로 구현이 가능하며 모든 기술인 닷넷 기반의 아키텍쳐로 통합하는게 가능하다.

클라이언트 기술은 앞으로도 계속 발전하고 더 세밀하고 치밀하게 분류되고 발전한 것이다. 아이폰만 보더라도 하드웨어 기술보다는 인터페이스를 담당하고 있는 소프트웨어로 성공하고 있으며 이는 자동차나 다른 산업 전반에도 쉽게 발견할 수 있는 사례가 될 것이다.

클라이언트 기술을 잘 선택하고 사용자에게 어필할 수 있는 적합한 인터페이스는 앞으로 점점더 많은 고민과 해결책이 제시될 것이다. ---(*)---

Comments

  • Anonymous
    November 22, 2008
    각각 다 자기 영역을 지켜면서 잘 살아있는 것을 볼 수 있다. => 각각 다 자기 영역을 지키면서 잘 살아있는 것을 볼 수 있다. (지켜면서 => 지키면서)

  • Anonymous
    November 22, 2008
    서비스가 웹이든 혹은 로컬 네트워을 통하든 어떠한 방법으로 노출이 될 때 이 서버스를 사용자들이 이용할 수 있게 주는 것이 바로 클라이언트이다. => 서비스가 웹이든 혹은 로컬 네트웍을 통하든 어떠한 방법으로 노출이 될 때 이 서비스를 사용자들이 이용할 수 있게 주는 것이 바로 클라이언트이다. (네트워을 => 네트웍을, 서버스를 => 서비스를)

  • Anonymous
    November 22, 2008
    클라이언트 역시 터미 터미널의 문자 위주의 클라이언트 환경에서 부터 DOS기반을 거쳐서 매킨토시나 원도우즈 환경으로 넘어오면서 GUI로 넘어오게 되었다. => 클라이언트 역시 더미 터미널의 문자 위주의 클라이언트 환경에서 부터 DOS기반을 거쳐서 매킨토시나 원도우즈 환경으로 넘어오면서 GUI로 넘어오게 되었다. (터미 => 더미)

  • Anonymous
    November 22, 2008
    서비스나 시스템이 폭팔적으로 늘어나기는 했지만 => 서비스나 시스템이 폭발적으로 늘어나기는 했지만 (폭팔적으로 => 폭발적으로)

  • Anonymous
    November 22, 2008
    웹 브라우저와 클라이언트 응용 프로그램으로 양분된 시장의 틈세에 웹에서 실행되는 별도의 플랫폼 기술이 나타나게 되었데 이 기술을 RIA라고 부르는 것이 일반화 되었다. => 웹 브라우저와 클라이언트 응용 프로그램으로 양분된 시장의 틈새에 웹에서 실행되는 별도의 플랫폼 기술이 나타나게 되었는데 이 기술을 RIA라고 부르는 것이 일반화 되었다. (틈세에 => 틈새에, 되었데 => 되었는데)

  • Anonymous
    November 22, 2008
    따라서 시작은 RIA기술로 했지만 언제 웹 브라우저로 혹은 클라이언트 응용 프로그램으로 확장해야 할찌 모르는 점을 항상 염두해 두고 선택해야 한다. => 따라서 시작은 RIA기술로 했지만 언제 웹 브라우저로 혹은 클라이언트 응용 프로그램으로 확장해야 할지 모르는 점을 항상 염두에 두고 선택해야 한다. (할찌 => 할지, 염두해 => 염두에)

  • Anonymous
    November 22, 2008
    확실한 문법 오류만 알려드린 겁니다. 수정하시고 나면 제 글은 지우세요... 도움이 될까 해서 적은 글입니다. 개발자이자 출판 편집인인 저의 직업의식의 발로라 생각해주세요^^

  • Anonymous
    November 22, 2008
    단순히 자료의 축척이라는 개념에서 크게 벗어나지 못하고 있었기 때문에 => 단순히 자료의 축적이라는 개념에서 크게 벗어나지 못하고 있었기 때문에 (축척 => 축적)

  • Anonymous
    November 22, 2008
    이 서버스를 사용자들이 이용할 수 있게 주는 것이 바로 클라이언트이다. => 이 서버스를 사용자들이 이용할 수 있게 해주는 것이 바로 클라이언트이다. (주는 => 해주는)