 |
XML on HTTP, Part3: XML 문서의 대용량 처리 기법(2)
|
 |


[오픈 디벨로퍼웍스]는 여러분이 직접 필자로 참가하는 코너입니다. 이번 회에는 유연하고 확장성 있는 XML 응용에 대해 알아봅니다.
일반적으로 은행에서 입출금 업무는 다양한 장치와 경로, 즉 인터넷 뱅킹, ATM, 은행지점 창구직원의 PC, 모바일 뱅킹, 텔레 뱅킹 등을 통해 이뤄진다. 이렇게 다양한 장치로부터 입력된 정보는 은행의 계정계 데이터베이스에 거래원장 정보로 저장된다. 입력된 데이터는 우선 인터넷 뱅킹 애플리케이션에서 사용하는 관계형 데이터베이스로 저장될 것이고, ATM 역시 해당 관계형 데이터베이스에 데이터를 먼저 입력해야 한다. 계정계 시스템과의 데이터 동기화를 위해서는 각각의 애플리케이션마다 거래전문을 생성하고 계정계 시스템은 각각의 시스템으로부터 거래전문을 받아 계정계 데이터베이스에 데이터를 저장해야 한다. 거래전문의 예는 다음과 같다.
|
20080526xxxxxxxxxxxxx011234567890254521421254200000253625
|
위의 거래 전문은 다음과 같은 의미를 지닌다.
- 1~8번째 자리(20080526): 거래일자
- 9~21번째 자리(xxxxxxxxxxxxx): 주민등록번호
- 22~23번째 자리(01): 송금은행 코드
- 24~32번째 자리(123456789): 송금은행 계좌번호
- 33~34번째 자리(02): 수신은행 코드
- 35~45번째 자리(54521421254): 수신은행 계좌번호
- 46~51번째 자리(200000): 이체금액
- 52~57번째 자리(253625): 거래식별번호
현재 대부분의 시스템이 전문 형태 데이터를 사용해 매번 프로그래밍하여 데이터를 통합하는 과정을 거치고 있다. 이런 방법은 다음과 같은 문제점이 있다.
* 거래전문 내용 중 변경사항이 생길 때마다 관련 프로그래밍을 수정해야 한다.
* 모바일 뱅킹 등 입력장치 종류가 늘어날 때마다 프로그램을 새로 작성해야 한다.
* 업무, 시스템마다 전문 형태가 천차만별이므로 은행간 업무 자동화나 신용정보 동기화는 표준화된 전문을 다시 만들어 사용해야 한다.
이외에도 여러 가지 단점이 많을 것이다. 이러한 부분을 해결하기 위해 EAI(Enterprise Application Integration)라는 개념과 솔루션이 나왔지만 역시 아래와 같은 스파게티 다이어그램 문제는 해결되지 않고 있다.
인터넷 뱅킹 애플리케이션에서 일반 사용자가 송금 정보를 입력하고 [저장], 혹은 [송금] 버튼을 클릭하면 해당 인터넷 뱅킹 시스템의 데이터베이스에 거래건이 저장되고 거래전문이 생성된다. 하지만 거래전문 대신 다음과 같은 XML 파일을 생성할 수 있다면 어떤 결과를 가져올까?
<?xml version="1.0" encoding="UTF-8"?>
<!-- File Name: transaction.xml -->
<root>
<date>20080526</date> <!-거래일자->
<customer_jumin_no>xxxxxxxxxxxxx</customer_jumin_no> <!-주민등록번호->
<out_account_code>01</out_account_code> <!-출금은행코드->
<out_account_no>123456789</out_account_no> <!-출금계좌번호->
<in_account_code>02</in_account_code> <!-입금은행코드->
<in_account_no>54521421254</in_account_no> <!-입금계좌번호->
<amount>200000</amount> <!-이체금액->
<transaction_id>253625</ transaction_id > <!-거래식별번호->
</root> |
먼저 이체거래 원장 데이터의 구조는 다음과 같을 것이다.
* 테이블명: 이체거래
* 필드명: 거래일자, 주민등록번호, 출금은행 코드, 출금계좌번호, 입금은행 코드, 입금계좌번호, 이체금액, 거래식별번호
위 테이블에 거래기록이 한 건씩 입력될 것이고 위의 XML 파일이 동시에 생성될 것이다. 위 XML 파일이 거래가 이루어지는 순간에 동시에 생성된다면 각 엘리먼트의 정보를 시스템이 이미 알고 있으므로 데이터 동기화 프로그래밍 과정은 매우 단순하게 진행될 수 있다. 또한 데이터가 추가되거나 자릿수가 바뀌어도 이에 대한 처리가 매우 단순해진다. 예를 들어, 출금은행 코드가 두 자리 수에서 세 자리 수로 늘어날 경우 전문을 다음과 같이 수정해야 한다.
|
20080526xxxxxxxxxxxxx0121234567890254521421254200000253625
|
이렇게 되면 출금은행 코드 이후에 프로그래밍된 코드들은 한 자리씩 증가하므로 이 전문을 참조해 데이터 동기화 프로그래밍을 한 모든 애플리케이션을 수정해야 한다. 물론 외부에서 프로그래머들을 고용하여 진행된 것이라면 해당 프로그래머를 호출하거나 다시 고용해야 하며 그만큼 시간 소모와 비용 지출이 불가피하다. 하지만 XML일 경우에는 어떻게 될까? XML 데이터는 다음과 같이 변경될 것이다.
<?xml version="1.0" encoding="UTF-8"?>
<!-- File Name: transaction.xml -->
<root>
<date>20080526</date> <!-거래일자->
<customer_jumin_no>xxxxxxxxxxxxx</customer_jumin_no> <!-주민등록번호->
<out_account_code>012</out_account_code> <!-출금은행코드->
<out_account_no>123456789</out_account_no> <!-출금계좌번호->
<in_account_code>02</in_account_code> <!-입금은행코드->
<in_account_no>54521421254</in_account_no> <!-입금계좌번호->
<amount>200000</amount> <!-이체금액->
<transaction_id>253625</ transaction_id > <!-거래식별번호->
</root> |
이렇게 되면 해당 출금계좌번호 관련된 부분만 수정하면 되고 XML↔DB 연계 도구가 있을 경우에는 프로그래밍 과정이 전혀 필요 없다. 따라서 비용 및 시간 지출이 줄며 고객과 시장의 요구사항에 신속하게 대처가 가능하다.
또 위의 거래정보를 다른 조직으로 보내야 할 때 XML의 가치가 한층 상승한다. 엘리먼트가 의미하는 바를 표준으로 정해 놓고 이 표준에 맞게 XML로 주고 받을 수 있다면 시스템 환경이나 조직 종류에 관계없이 데이터 동기화를 시스템에서 자동으로 수행할 수 있기 때문이다. 대표적인 것이 전자업계 B2B 거래 표준인 로제타넷(RosettaNet)이다. 전자업계 사이에서 비즈니스 거래를 할 때 주고받는 문서의 종류를 정의하고 각 문서마다 포함되어야 하는 데이터를 엘리먼트로 정의해 XML 문서로 주고 받자는 것이 바로 로제타넷의 의의다.
 | |
로제타넷이란 개방형 전자 상거래 표준 프로세스를 제정, 구현, 보급하기 위해 전세계 전자부품(Electronic Components: EC), 정보기술(Information Technology: IT), 그리고 반도체 제조(Semiconductor Manufacturing: SM) 기업들이 구성한 비영리 컨소시엄에서 정의한 전자 상거래 표준 프로세스다.
이 표준 프로세스에는 특히 상거래 상의 표준 비즈니스 프로세스들이 포함되어 있어 전세계 공통의 전자 상거래 언어를 제공한다. 이 컨소시엄은 1998년에 설립되어 현재는 전세계 유명 기업 540개 이상이 참여하고 있으며 지역별로는 북미, 일본, 유럽, 한국, 대만, 싱가포르, 말레이시아, 중국에 컨소시엄 지부가 결성되어 활동 중이다. 로제타넷은 데이터 사전, 구현 프레임워크, 비즈니스 메시지 관리 체계, 프로세스 정의를 포함하는 개방형 표준을 제공함으로써 완벽한 비즈니스 프로세스 구조를 구축하도록 해 준다.
로제타넷은 이 컨소시엄이 정의하는 전자 상거래 표준 프레임워크를 지칭하는 명칭이기도 하며 최근 로제타넷 협회는 XML 기술을 적용함으로써 새로운 활로를 모색하고 있다.
참고: 로제타넷 코리아(http://www.rosettanet.or.kr/), 로제타넷 협회(http://www.rosettanet.org)
|
|
마찬가지로 단일 은행 내에서도 업무별로 각각의 응용 프로그램이 존재하고 각 응용 프로그램에서 생성되거나 관리되는 데이터를 다른 응용 프로그램에서 필요로 하는 경우가 많다. 하드웨어나 운영체제가 같으면 데이터 동기화가 쉬울 수 있겠으나 불행히 단일 은행 내에서도 수많은 종류의 서버, 각기 다른 운영체제, 응용 프로그램 개발환경이 존재한다. 더구나 자회사, 협력회사, 거래처와 협업은 이제 필수이고 글로벌 기업일 경우에는 빈번한 인수/합병으로 인해 데이터 동기화와 응용 프로그램에 대한 IT 투자의 필요성이 끝없이 생겨나고 있어 대규모의 비용과 시간이 투자되어야 하는 상황이다.
이제는 기존 패러다임인 데이터베이스와 거래전문 등 2차원 정보 저장 및 관리 구조를 가지고는 기하급수적으로 늘어나는 데이터를 효율적으로 관리하기 힘들게 됐다. XML은 n차원의 정보 구조를 다룰 수 있도록 설계됐고 어떤 시스템에서든 이해할 수 있는 메타데이터이며 텍스트 기반 데이터이다(메타데이터란 백과사전 정의를 찾아보면 "데이터에 관한 구조화된 데이터로, 다른 데이터를 설명해 주는 데이터"다). XML을 사용함으로써 얻을 수 있는 장점을 간단히 열거하자면 다음과 같다.
- 확장성이 뛰어난 웹 응용 프로그램 개발
- 분리된 소스로부터 데이터 통합
- 로컬 컴퓨팅과 데이터 처리
- 데이터의 다양한 표현
- 개별적 업데이트(granular updates)
- 뛰어난 검색기능
확장성이 뛰어난 웹 응용 프로그램 개발
일단 데이터가 발견되면 XML은 다른 응용 프로그램, 객체, 중간 계층 서버로 전달되어 또 다른 처리가 가능하거나 데스크톱으로 전달되어 브라우저에서 볼 수도 있다. 디스플레이용 HTML과 함께 XML, 논리 스크립팅, 데이터 및 디스플레이의 상호작용을 위한 공통 객체 모델(common object model) 등은 확장성이 뛰어난 3티어 웹 응용 프로그램 개발에 유용한 기술을 제공한다.
분리된 소스로부터 데이터 통합
지금까지는 다중적인 비호환성 데이터베이스를 검색한다는 것은 사실상 불가능한 일이었다. 그러나 XML이라면 별개의 자료로부터 구조적 데이터를 쉽게 통합할 수 있다. 이 경우, 백엔드 데이터베이스 및 다른 응용 프로그램의 데이터를 중간 계층 서버에서 통합하기 위해 소프트웨어 에이전트를 사용한다. 이 데이터는 나중에 클라이언트에 전달되거나 또 다른 처리 및 분배 작업을 위해 다른 서버에 전달될 수도 있다.
XML의 뛰어난 확장성과 유연성 덕택에 웹 페이지 컬렉션과 기술(describing)에서부터 데이터 기록에 이르기까지 수많은 응용 프로그램에서도 데이터 기술이 가능해졌다. 다시 말해 XML 기반 데이터는 자체적으로 기술(self-describing)되므로 외부 데이터 기술 없이도 변경 및 처리 작업이 가능해진다는 것이다.
로컬 컴퓨팅과 데이터 처리
클라이언트에 전달된 XML 형식 데이터는 구문 분석 및 로컬 편집/처리가 가능하며, 클라이언트 응용 프로그램이 수행하는 연산에도 사용할 수 있다. 또한, 사용자들은 단순한 데이터 표시 그 이상의 다양한 방식으로 데이터를 처리할 수 있다. XML 문서 객체 모델(Document Object Model: DOM) 또한 스크립트나 다른 프로그래밍 언어를 사용하여 데이터를 조작할 수 있으며, 서버로 복귀하지 않고도 데이터 연산 작업이 가능하다. 데이터 자체로부터 사용자 인터페이스가 분리되었기 때문에 단순하고 유연한 개방적 형식을 사용하여 고급 데이터베이스에서만 찾아볼 수 있었던 강력한 웹 응용 프로그램도 개발할 수 있다.
데이터의 다양한 표현
일단 데이터가 데스크톱에 전달되면 데이터는 다양한 방법으로 표현될 수 있다. XML은 단순하고, 개방적이며, 확장 가능한 방식으로 구조적 데이터를 설명한다. 디스플레이에서 분리된 XML 데이터는 다양한 표현 방식으로 지정되어 가장 적절한 상태로 출력된다. 로컬 데이터는 클라이언트 설정, 사용자 선택사항, 그리고 기타 기준에 의해 동적으로 출력이 가능하며, CSS와 XSL은 데이터를 특수하게 출력할 수 있는 선언적 메커니즘을 제공한다.
개별적 업데이트
XML을 사용하면 구조적 데이터 전체를 재전송하지 않고도 변경된 일부분의 데이터를 개별적으로 업데이트할 수 있다. 즉, 변경된 요소만이 서버에서 클라이언트로 전송되고 변경된 데이터는 전체 사용자 인터페이스를 재설정하지 않고서도 디스플레이가 가능하다. 데이터 항목이 변경될 경우, 뷰가 여전히 남아있는 상태일지라도 페이지 전체는 재구축된다. 따라서 서버 확장성에 상당한 제한이 따르게 된다.
뛰어난 검색 기능
XML은 데이터를 고유 태그로 표시할 수 있으므로 고객은 '윈스턴 처칠에 관한 책'이 아닌 바로 '윈스턴 처칠이 지은 책'으로 검색할 수 있다. 기존 방법으로 검색을 실시할 경우, 아마도 두 가지 유형의 책이 서로 섞여 엉뚱한 결과를 초래하게 될 것이다.
XML을 사용하지 않는다면, 데이터베이스 스키마 기술 방법을 이해할 수 있는 검색 응용 프로그램이 필요하다. 그러나 각 데이터베이스가 서로 다르게 데이터를 기술하기 때문에 이는 불가능하다. 이 때 XML을 사용하면 작가, 제목, ISBN, 또는 다른 분류 항목 등에 의한 표준 방식으로 책을 손쉽게 분류할 수 있을 것이다. 결국 사람들은 이렇게 분류된 서점 사이트에서 윈스턴 처칠에 대한 책을 일관된 방식으로 검색할 수 있게 된다.
앞으로의 전망
구조적 데이터 표현의 산업 표준인 XML은 각종 기관, 소프트웨어 개발업체, 웹 사이트, 최종 사용자들에게 많은 장점을 제공한다. 이러한 기회는 고급 데이터베이스 검색, 온라인 뱅킹, 의료, 법률, 전자 상거래 등과 같은 분야의 주요 시장에서 수직적 시장 데이터 포맷이 생성됨에 따라 더욱 늘어날 것이다. 그리고 사이트는 단순히 데이터를 보여주는 것 이상의 값진 결과와 기회를 제공할 것이다.
고객 서비스는 이제 콜 센터나 물리적 장소에서 웹 사이트로 이동하고 있다. 따라서 XML의 견고한 기능성을 이용한다면 많은 이점을 제공할 수 있다. 업무용 응용 프로그램은 대부분 데이터나 구매 주문, 송장, 고객 정보, 계약, 지도 등 데이터베이스 레코드 처리 및 전송 기능을 지원한다. 따라서 XML은 인터넷에서 다양한 업무용 응용 프로그램 구현을 통해 최종 사용자들에게 대변혁을 가져다 줄 것이다. 또한, XML을 이용하면 문서나 데이터베이스로 저장되어 웹 사이트에서 제공되는 정보와 관련하여 인트라넷 지향 사전을 만들 수도 있다. 중소기업의 경우, 이 사전을 이용하여 소비자와 공급자간 정보 교환에 도움을 줄 수 있다.
주목받고 있는 미개척 시장으로 개발 도구 분야를 들 수 있다. 사용자는 이 도구(기존 사용자 인터페이스와 데이터베이스를 XML로 변환하는 도구 포함)를 이용하여 자신만의 공동 웹 사이트를 손쉽게 제작할 수 있다. 게다가 표준 스키마는 레이아웃, 그래프, 그리고 엑셀(Excel)이나 다른 스프레드시트의 기능이 사용 가능한 포트폴리오 또는 기타 데이터 기술용으로 개발될 가능성이 있다. 기존 데이터베이스에서 생성된 XML을 기술하는 데 사용되는 선언 및 비주얼 도구는 엄청난 기회를 제공하며, XML 데이터 보기용 도구는 XSL, RIA, 자바, 자바스크립트, C++ 등으로 제작할 수 있다.
XML의 경우, 한 문서 내에서 대량의 복잡한 XML데이터를 나타낼 수 있는 강력한 새로운 도구를 필요로 하게 될 것이다. 이는 동적 변환이 가능한 복잡한 계층적 데이터 집합 상위에 사용자가 익숙한 디스플레이 레이어를 매핑함으로써 가능한 것이다.
웹 사이트는 주식 시세, 뉴스 기사, 또는 실시간 교통 정보를 제공할 수 있으며, 이러한 정보는 웹 브로드캐스트 필터링 또는 이 사이트들을 모방한 서버 트리의 지능 폴링을 통해 제공이 가능하다. 사용자는 XML 기반 도구를 이용해 이러한 규칙을 만들 수 있으며, 클라이언트 소프트웨어는 이 규칙을 실행할 수 있게 된다.
XML 기술은 커다란 기회를 제공한다고 볼 수 있다. 표준 객체 모델(Standard Object Model)은 전형적으로 스크립트로 작성되고, 수신 메시지 여과, 저장 메시지 검사, 전송 메시지 작성, 데이터베이스 액세스 등의 기능을 수행하며, 이 에이전트는 어디에서든지 자동으로 실행되도록 작성될 수 있다.
이 문서 북마킹 하기

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