IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
한국 developerWorks   >   Open developerWorks  > developerworks

XML on HTTP, Part 1: SaaS(Software as a Service)와 XML



김성래김성래 Jason.kim@3ksoftware.com

3Ksoft XML 관련 미들웨어 컨설턴트로 일하고 있으며 XML IDC(http://ucc.xmlidc.com/)라는 블로그를 운영 중이다.


난이도 : 초급
2008년 4월 15일


[오픈 디벨로퍼웍스]는 여러분이 직접 필자로 참가하는 코너입니다. 이번 연재에서는 SaaS에서 XML이 어떤 위치를 차지하는지, SaaS를 위해 XML을 응용할 때 해결해야 할 문제가 무엇인지 살펴보겠습니다.

구글은 웹 오피스 서비스(http://documents.google.com/)를 시작하면서 웹 환경을 플랫폼으로서의 역할로 규정하여 모든 서비스를 웹에서 구현하여 서비스하는 데 그 초점을 맞추고 있다. 넓은 의미에서 구글이 지향하는 비즈니스 형태가 SaaS(Software as a Service) 개념의 비즈니스라고 생각할 수 있다. SaaS는 이전의 ASP(Application Service Provider) 서비스와 다음 세 가지 측면에서 구별된다.

  • 다수 사용자 기반 아키텍처 : 제공되는 서비스가 한 회사에 종속적인 서비스로 제공되지 않고, 여러 회사의 상황에 맞게 쉽게 적용해 쓸 수 있어야 한다.
  • 메타데이터 기반 아키텍처 : SaaS는 기존 애플리케이션과 달리 다양한 인스턴스를 쉽게 제공하기 위해 설정에 따라 쉽게 변할 수 있는 구조여야 한다. 이는 설계 시 잠재적인 고객이 사용할 수 있게 적당한 크기로 선정(fine grained)되어 있을 뿐만 아니라 다양한 인스턴스(다수 사용자 기반 아키텍처)를 지원하기 위해 설정을 통해 쉽게 확장할 수 있는 구조여야 함을 의미한다. 즉 메타데이터 기반의 아키텍처여야 한다는 의미다. 메타데이터 기반 아키텍처란 XML을 의미한다고 생각할 수 있다.
  • 확장성 : 또 하나 고려해야 할 부분은 바로 확장성이다. 즉 고객이 확 늘어날 경우를 대비해 확장 가능한 구조여야 한다는 것이다. 구글의 GFS처럼 그냥 쉽게 꼽아 쓸 수 있는 그러한 아키텍처가 필요하다는 이야기다. 당연히 위와 같은 상황들을 고려해야 하다 보니 SaaS 애플리케이션을 만들 때는 일반적인 ASP 서비스를 만들 때보다 비용이 더 많이 들 것이다. 따라서 모든 애플리케이션을 SaaS 형태로 만들 수 없고 적절한 임계점을 찾는 것이 매우 중요하다. 결국 다수의 잠재 사용자들에게 서비스 기반 소프트웨어를 제공하려면 소프트웨어 개발 시 다양한 플랫폼에서 해석이 가능한 메타데이터 기반의 확장성 있는 솔루션을 제공해야 한다는 것이다.

XML은 구조적 메타데이터이며 웹에서 구동되는 언어다. XML의 기술적 개념을 이해한다면 SaaS가 추구하는 서비스의 개념을 이해할 수 있으리라 생각한다.

W3C는 1998년 XML을 인터넷 표준으로 제정하며 다음과 같은 개발 목표를 제시했다(출처: W3C’s XML Origin and Goals).

  1. XML은 인터넷에서 곧바로 사용할 수 있어야 한다.
  2. XML은 폭넓은 애플리케이션을 지원해야 한다.
  3. XML은 SGML과 호환성이 있어야 한다.
  4. XML 문서들을 처리하는 프로그램을 쉽게 사용할 수 있어야 한다.
  5. XML의 선택적 기능(feature)들은 최소화하거나 가능하면 없어야 한다.
  6. XML 문서들은 사람이 이해하기 쉬워야 한다.
  7. XML 디자인을 빨리 할 수 있어야 한다.
  8. XML 디자인은 특정 양식에 따르고 함축적이야 한다.
  9. XML 문서들은 생성하기 쉬워야 한다.
  10. XML 작성(markup)에서의 간결성(terseness)은 중요하지 않다.

SaaS 애플리케이션을 개발할 때 위의 XML 개발 목표 열 가지를 준수하여 개발한다면 XML이란 언어의 원래 특성인 확장성, 유연성, 상호운영성, 이식성 등의 장점을 그대로 활용할 수 있으므로 SaaS의 기술적 기반을 이해할 때 XML에 대한 이해가 반드시 필요하다. 그럼 실제 비즈니스 사례를 통해 SaaS 서비스와 XML의 관계를 알아보자.

SaaS 형태로 의료정보 서비스를 이용하는 병원이 있다고 가정해 보자. 의료정보 서비스에 가입한 병원은 환자들의 병력사항이나 진료기록을 SaaS 솔루션에 입력하고 관리한다. 환자가 다른 병원을 이용할 때 해당 병원에서 환자 정보를 활용해야 할 필요가 있다. 하지만 정보는 폐쇄적인 데이터베이스에 존재하기 때문에 각기 다른 시스템을 활용하는 병원마다 데이터를 주려면 메타데이터(XML) 형태로 주고 받아야 한다.

메타데이터(XML)로 데이터를 전달하면 시스템과 응용 프로그램의 제한 없이 자유롭게 데이터를 통합할 수 있기 때문에 SaaS 서비스를 제공하는 업체는 정보의 확장성과 상호운영성을 위해 메타데이터 기반 솔루션 아키텍처를 구현해야 한다.

이러한 문제를 해결하려면 XML 데이터가 사용자의 데이터 입력 시점에 생성되어야 할 필요가 있다. 데이터가 폐쇄적인 데이터베이스에 먼저 축적되면 반드시 통합과 협업을 위해 메타데이터로 추출하는 작업이 추가로 필요하기 때문이다. 따라서 SaaS 응용 프로그램을 효율적으로 설계, 구축하려면 사용자 인터페이스인 웹 화면에서 XML을 생성해야 하는 과제가 먼저 해결되어야 한다.



위로



웹 응용 프로그램에서 사용자 정의 구조의 XML을 생성하려면 DOM(Document Object Model) 프로그래밍 방법과 XML 생성 엔진을 사용하는 방법으로 구분할 수 있다.

일반적으로 XML 저작도구를 사용하거나 수동으로 직접 프로그래밍하여 구현하면 XML 문서 한두 개는 만들 수 있다. 그러나 다수의 XML 문서를 다수 사용자의 데이터 입력 시점에서 생성하려면 다른 원리가 필요하다. XML 문서는 데이터와 뷰를 분리할 수 있고 이러한 데이터 부분을 구조화할 수 있기 때문에 대량으로 XML 문서를 생성할 수 있다.

일단 웹 애플리케이션 화면에서 사용자가 환자의 정보를 입력하는 경우를 살펴 보자. 이를 위해 가장 많이 사용하는 방법이 웹 폼에서 XML 문서를 생성하는 것이다. 이것을 구현하려면 보통 DOM(Document Object Model) 기술을 사용한다. 그런데 XML 문서를 생성하는 데 DOM 기술은 몇 가지 문제점이 있다.

  • XML 문서를 생성하는 데 DOM 기술을 사용할 경우에는 전문가가 필요하고 개발 공수와 시간, 비용이 매우 많이 든다.
  • DOM 기술을 사용할 경우 메모리 리소스가 많이 든다. XML 태그 수가 증가하면 메모리 사용량이 기하 급수적으로 늘어난다. 결국 클라이언트 PC가 동작하지 않는 경우가 많다.
  • 다른 기술(보안, 시맨틱 웹 검색)을 적용하는 데 한계가 있다.
  • XML 문서 내의 반복 데이터 구조를 처리하는 데 비효율적이다.
  • 문서 수정 기능을 개발하는 데 공수가 많이 든다.

DOM 프로그래밍을 하지 않고 XML을 생성할 수는 없을까? 있다. 바로 XML 생성 엔진을 사용하는 것이다. 사용자가 어떠한 구조의 XML을 한번만 만들어 놓으면 해당 구조의 태그 안에 데이터만을 치환하여 인스턴스 XML 파일을 무한대로 생성할 수 있다.


위의 그림과 같은 절차에 의해 HTTP 상에서 사용자의 손에 의해 XML 파일을 대량생산하게 된다. 그렇게 되면 XML이 HTTP 상에서 생성되므로 타깃 서버가 원격에 위치해 있어도 전달이 가능하게 된다. 즉 구조화된 XML 데이터가 HTTP 프로토콜을 통해 전달된다는 것이다. XML 데이터를 받은 쪽에서는 이미 XML 데이터 자체가, 태그(꼬리표)를 가지고 있는, 시스템이 식별 가능한 메타데이터이므로 인간의 개입 없이 시스템 자동화가 가능하게 된다.



위로



또한 DOM 프로그래밍은 XML 문서 전체 구조에 따라 달라지기 때문에 XML 문서 구조가 바뀌면 DOM 프로그래밍도 수정해야 한다. 다음과 같은 XML 문서가 있다고 하자.


<?xml version="1.0"   encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="treatment.xsl"?>
<root>
      <name>홍길동</name>    			// 이름
      <contact>010-1234-5678</contact>		// 연락처
      <date>2008-03-13</date>			// 진료일자
      <medical_treatment>감기</medical_treatment>	// 진료내용
 </root>

DOM으로 프로그래밍을 했다면 <root> 태그 아래 첫 번째 자식 태그에 “홍길동”이라는 데이터를 넣으라고 프로그래밍을 했을 것이다. 그리고 <root> 태그 아래 두 번째 자식 태그에 “010-1234-5678”을 넣으라고 했을 것이다. 그런데 다음과 같이 XML 구조가 변경되었다고 하자.


<?xml version="1.0"   encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="treatment.xsl"?>
<root>
      <address>서울시</address>			// 주소
      <name>홍길동</name>    				// 이름
      <contact>010-1234-5678</contact>		// 연락처
      <date>2008-03-13</date>			// 진료일자
      <medical_treatment>감기</medical_treatment>	// 진료내용
 </root>

그러면 DOM 프로그래밍은 <root> 태그 아래 첫 번째 자식 태그는 <address>가 되므로 기존에 프로그래밍했던 소스를 전부 수정해야 할 것이다.

XML 구조가 위 예제처럼 간단하지 않고 매우 복잡하다면 DOM 프로그래밍 하나 만들기도 어려울 뿐만 아니라 XML 구조가 바뀔 때마다 DOM 프로그래밍을 수정한다는 것은 거의 불가능할 것이다. 그렇기 때문에 개발이 어렵고, 비용 및 개발 공수가 늘어나는 것이다. 또한 DOM 모델은 XML 문서 내의 태그에 접근하기 위해 컴퓨터의 메모리를 한꺼번에 점유하는 방식이기 때문에 XML 태그 구조가 복잡하고 그 요소(element)의 수가 많을수록 성능이 떨어진다는 것이 태생적 한계다. 위의 XML 문서를 일반 웹 브라우저에서 XSL을 통해 보면 다음과 같다.


XML을 웹 브라우저에서 추가 장치의 도움 없이 디스플레이할 수 있는데 그것이 바로 .xsl 파일이다. XML 파일 내에 뷰를 담당하는 .xsl 파일을 정의해 놓으면 XML 파일 내의 데이터를 사람이 인식할 수 있는 문서 형태로 웹 브라우저에서 디스플레이할 수 있다.

XML을 데이터로서만 사용하는 것이 아니라 사람이 인식하는 문서 형태로 사용할 수 있다. DOM으로 프로그래밍한다면 XML 문서의 종류마다 xsl 파일 또한 프로그래밍을 해야 한다. 물론 XSL 프로그래밍은 전문가들도 배우기 어려운 부분이다. 역시 비용이 많이 든다는 것이다.

XML이라는 메타데이터를 사용하는 것은 좋지만 이렇게 비용이 많이 들고 개발 기간이 오래 걸리며 향후 유지보수에 막대한 비용이 발생하는 방법으로 SaaS 애플리케이션을 구현할 수는 없다. 그렇기 때문에 XML 생성 엔진에 의한 XML 자동 생성 및 .xsl 파일 자동 생성 및 데이터 매핑 등의 기능을 제공하는 방법이 필요하다.

메타데이터인 XML을 생성하고 유통하고 XML을 사용해 데이터를 통합할 수 있다면 SaaS 애플리케이션이 장점으로 내세우는 확장성, 유연성, 상호운영성을 확보할 수 있으며 다양한 사용자의 요구에 손쉽게 대응할 수 있는 SOA(Service Oriented Architecture) 기반 SaaS 애플리케이션을 구축할 수 있고, 실시간으로 데이터를 통합할 수 있는 RTE(Real Time Enterprise) 기반 SaaS 애플리케이션을 구축할 수 있다. 결국 XML을 얼마나 싸고 빠르게 생성하고 이를 유통하고 데이터를 통합할 수 있느냐가 SaaS 서비스를 구현하는 데 가장 핵심이 된다.

다음 회에는 이처럼 대량 생산된 XML를 문서의 대용량 처리 기법에 대해 살펴보겠다.



위로



이 문서 북마킹 하기

mar.gar.in mar.gar.in naver naver eolin eolin del.icio.us del.icio.us
이제 전문가의 글을 단순히 ‘보는 것’에서, 직접 여러분이 developerWorks의 필자가 될 수 있습니다. IBM developerWorks를 통해 공유하고 싶은 지식이 있으신 분들은 원고 기획안을 접수해주세요. 채택되신 분께는 소정의 원고료를 드립니다.



[지난 Open dW 보기]

사이트 여행

dW 커뮤니티
포럼 | 블로그 | Spaces
dW Student Community

로컬 컨텐츠

행사 및 세미나

기획 기사

개발자 입문

튜토리얼 및 교육

TOP 10 인기자료

SW 다운로드

RSS 피드

뉴스레터
  
자바스크립트가 작동이 중지되었습니다. 이 기능을 수행하시려면 브라우저에서 자바스크립스트를 작동시켜 주시거나 이곳을 클릭해주세요.
Special offers
IBM SOA Sandbox 시험판
dW Student Community
로보코드
코드 트레이닝


    IBM 소개 개인정보 보호정책 문의