Search Results for 'XML'

2 POSTS

  1. 2007.02.24 REST vs SOAP 3
  2. 2006.12.25 21세기 소프트웨어의 경향: 플랫폼화, 플러그인, 애드온 2

REST vs SOAP

Posted 2007. 2. 24. 15:54
최근에 웹 서비스 쪽 개념들을 조금 살펴보고 있는데 새로운 약자들에 익숙해 지려니 시간이 좀 걸리네요. 특히 WSDL, SOAP 등 복잡한 XML 기반의 명세서들을 보고 있노라면 명세서만 보다가 세월 다 갈지도 모른다는 불안감이 엄습해 옵니다.

이미 2003년도의 글이지만, Tim O'Reilly의 글을 보면 아마존에서의 SOAP과 REST 사례를 들고 있습니다. 아마존이 두 가지 인터페이스를 다 제공했는데 결과적으로 간단한 REST (XML over HTTP)가 85%의 점유율을 보였다는 거죠. (지금 상황은 어떤지 확인은 안 해봤습니다.)[1]

예전에는 우수한 기술이 성공한다는 생각이 강했는데, 요즘은 진입 장벽이 낮고 많은 개발자들이 쉽게 이해해서 전파할 수 있는 기술이 가장 우수한 기술이라는 생각이 드네요. 많은 사람들이 참여할 수 있어야 그만큼 발전의 속도도 빠르고 결국은 복잡한 기술을 앞지르게 되는 것 같습니다. 동적인 언어도 그렇고, Rails 같은 웹프레임워크도 그런 사례이죠. 반대로 분산 시스템의 핵심적인 표준이었지만 너무 어려워서 아무도 제대로 못 쓰던 CORBA도 있습니다.

[1] SOAP, WS-* 등의 기술과 HTTP+POX (Plain Old XML) 대결 구도네요. 복잡한 EJB에 대항해서 POJO가 나온 것과 비슷한 대결 구도입니다. 어떤 기술이 너무 복잡해 지면 PO(Plain Old)라는 대항마가 나타나는 게 아닐까 싶습니다.

[reshout님을 비롯하여 플러그인 모델(Plug-in Model)에 대한 글을 읽다가 생각을 정리해봅니다.]

파이어폭스(Firefox), 야후 위젯(Yahoo Widget!), 이클립스(Eclipse), 구글데스크톱(Google Desktop) 등의 공통점은 무엇일까요? 각자 성격과 규모가 다른 소프트웨어 프로젝트이지만 한 가지 공통점을 가지고 있습니다. 그것은 바로 애드온 아키텍처(Add-on Architecture), 플러그인(Plug-in Architecture) 등으로 불리는 확장 지향의 소프트웨어 아키텍처에 있습니다!

흔히 인터넷 익스플로러와 비견되는 웹브라우저로만 알고 있는 파이어폭스의 가장 큰 경쟁력은 애드온(Add-ons) 기능입니다. 애드온을 이용하면 파이어폭스 사용자가 손쉽게 브라우저의 기능을 확장할 수 있습니다. 예를 들어 파이어폭스 기본 배포 버전은 마우스를 이용한 웹페이지 네비게이션을 지원하지 않고 있죠. 하지만 All-in-One Gestures라는 애드온을 설치하면 간단한 마우스조작 만으로 현재 북마크에 추가하거나, 새로운 탭을 열고, 웹 페이지를 앞 뒤로 옮겨갈 수 있는 기능을 얻게 됩니다.

KLDP 코드 페스트 행사에서 만나뵌 CN님 말씀에 따르면, 파이어폭스가 궁극적으로 원하는 방향 중에 하나는 파이어폭스의 렌더링 엔진인 게코(Gecko) 엔진과 XML을 이용해 사용자 인터페이스를 만드는 기술인 XUL 등을 브라우저에서 분리시켜 플랫폼화하는 것이라고 합니다. 이렇게 되면 파이어폭스나 썬더번드 등은 게코와 XUL을 이용한 하나의 어플리케이션이 된고, 분리된 게코 플랫폼(Gecko Platform)을 이용하면 파이어폭스 수준의 다른 어플리케이션도 손쉽게 제작할 수 있게 됩니다.

야후 위젯이 추구하는 방향도 비슷합니다. 야후 위젯은 간단하면서 유려한 데스크탑용 어플리케이션을 작성하는데 있어서 최적의 플랫폼이 되기를 희망하고 있습니다. 야후 위젯은 기존의 자바나 .NET 플랫폼과 달리 XML을 이용해 UI를 기술하고 프로그래밍 합니다. 즉 기존 플랫폼의 API를 한 단계 위의 끌어올려 간단한 데스크탑 용 어플리케이션의 경우 기존 플랫폼에 비해 훨씬 손쉽게 만들 수 있게 만든 것입니다.

재미있는 것은 확장성 높은 IDE 도구를 목표로 출발한 이클립스 역시 기존의 자바 플랫폼으로 해내기 힘든 리치 어플리케이션 플랫폼으로 진일보하였다는 점입니다. 자바 플랫폼의 부족한 UI 지원을 SWT로 메우고, 순수 자바로는 쉽게 만들 수 없는 데스크탑 용 어플리케이션을 쉽게 만들 수 있는 밑바탕을 제공하고 있습니다. 실제로 IDE와는 관련 없는 바이오클립스(Bioclipse), 이클립스트레이더(EclipseTrader) 프로젝트 등 이클립스를 플랫폼으로 삼은 여러 리치 클라이언트 어플리케이션(Rich Client Application)이 인기를 얻고 있습니다.

종합하면 현재 일부 어플리케이션은 고수준의 API를 제공하는 플랫폼 소프트웨어의 성격을 강하게 보이고 있고, 또 플랫폼화하기 위해 많을 애를 쓰고 있다는 점입니다. 이런 신생 플랫폼 간의 경쟁도 흥미롭고 자바와 닷넷(.NET)이 만들어온 플랫폼이 이런 도전에 어떤 식으로 응전할지도 기대가 됩니다.