XML의 허와 실


개방형 포맷을 위한 대안과 옳바른 활용

XML(eXtensible Markup Language)이 세상에 소개된 지도 어느덧 십여 년에 가까운 세월이 흘렀다. 개발자들에게 XML은 이제 HTML 만큼이나 익숙한 용어지만, 여전히 XML이 실제로 어느 분야에 유용한 기술인지를 정확히 이해하는 사람은 그리 많지 않은 것 같다. 여기서는 XML이 정말 유용하게 쓰이는 곳과 그 효용이 과장된 부분들을 하나씩 되짚어 보도록 한다.

XML이 한창 개발되고 있었던 1996~1998년은 웹의 초창기로, 이 때만해도 대부분의 사람들은 컴퓨터를 주로 데스크탑 애플리케이션을 실행시키는 용도로만 사용했다. 당시의 데스크탑 애플리케이션은 대부분 바이너리 파일 포맷을 사용했는데, 이 때문에 특정 애플리케이션으로 작성된 파일을 다른 애플리케이션에서 사용한다는 것은 거의 대부분 불가능했다. 따라서 사용자가 종전에 사용하던 애플리케이션을 유사 기능을 지원하는 다른 애플리케이션으로 대체하는 것은 무척 불편한 일이었고, 이런 사용자 락인(User Lock-In) 정책은 오히려 소프트웨어 회사들의 중요한 비즈니스 전략의 하나로 활용되곤 했다. 실제로 소프트웨어 업계에서는 타 회사의 애플리케이션 파일 포맷을 리버스 엔지니어링(Reverse Engineering)을 통해 풀어내고, 해당 회사는 파일 포맷을 또 다시 변경하여 호환성을 방해하는 형태의 다툼이 심심치 않게 이어지곤 했다.

결국 골탕을 먹는 것은 사용자였다. 때문에 XML은 공개된 파일 표준을 정의하는 표준적인 방법을 제시함으로써 이러한 문제를 근본적으로 해결하려는 시도였다고 할 수 있다. 그러나 기존 소프트웨어 업체의 입장에서 보면 XML 도입에 따른 인센티브가 거의 없었다는 점이 문제였다. 이 때문에 지금도 주요 데스크탑 애플리케이션 가운데 XML을 기본 파일 포맷으로 사용하는 경우는 그다지 많지 않다.

이처럼 데스크탑 애플리케이션에서는 XML이 그 쓰임새를 크게 넓히지 못했지만, 웹의 부상과 함께 XML은 상당한 스포트라이트를 받았다. XML을 둘러싼 이러한 관심 때문이었는지, 여기저기서 XML을 도입하는 것이 트렌드로 자리 잡았다. 기존의 RPC(Remote Procedure Call) 기술에 XML을 접목한 SOAP(Simple Object Access Protocol) 프로토콜이나 프로젝트 빌드 툴에 XML을 접목해 만들어진 자바의 Ant와 같은 툴들이 등장했고, 각종 애플리케이션 설정 파일에도 XML 포맷을 사용하는 것이 유행이 되었다. Ajax 역시 초기에는 XML을 데이터 전송 포맷으로 사용했다. 그러나 최근 들어 XML을 둘러싼 시끌벅적함이 다소 가라앉은 탓일까? 비로소 개발자들이 이러한 XML의 사용이 과연 적절한 것인지를 되묻기 시작했다. 그 결과로, 복잡한 SOAP를 대신해 기본적인 HTTP 프로토콜을 기반으로 한 REST(Representational State Transfer)가 더 보편적으로 쓰이기 시작했고, XML이 아니라 루비 언어를 기본 신택스로 사용하는 빌드 툴인 Rake가 소개되기도 했다. 애플리케이션의 설정 파일에도 점차 YAML(YAML Ain’t Markup Language) 포맷의 활용이 증가하고 있다. 또한 Ajax의 데이터 전송 포맷으로 종전의 XML보다 JSON(JavaScript Object Notation)이 더 많이 쓰이는 추세다.

물론 그렇다고 해서 XML이 이제 어디에도 쓸모없다는 말은 아니다. XML은 HTML을 대체하는 표준인 XHTML에 이용되고 있고, 점차 그 중요성이 커지는 RSS(Really Simple Syndication) 포맷 역시 XML에 기반하고 있다. 여기에 수학 공식의 표기를 위한 MathML, 2차원 벡터 그래픽을 텍스트로 기술하기 위한 SVG(Scalable Vector Graphics), 악보를 텍스트로 기록하기 위한 MusicXML, 문서를 마크업 언어로 기술하기 위한 DocBook 등의 포맷은 모두 XML을 써서 정의된 표준 포맷들이다.

XML의 효용성이 지나치게 과장됨으로써, XML이 최선의 선택이 아닌 곳에 XML이 도입된 사례가 적지 않은 것은 사실이다. XML이 처음의 설계 목적에서 벗어나 이미 수작업으로 편집하기에는 너무나 복잡한 표준이 되어버렸고, 호환성이 우수하다는 본래의 장점에도 불구하고 데이터 처리 속도가 느리고 용량을 비교적 많이 차지한다는 단점을 지녔음에도 그 무분별한 사용은 계속되어 왔다. 따라서 개발자들은 텍스트 기반의 개방형 포맷에는 XML 외에도 여러 다양한 대안들이 존재한다는 점을 늘 염두에 둬야 한다. 용도에 따라서는 이들 포맷이 XML보다 더 편리할 수 있고, 가독성 역시 XML보다 우수할 수 있다. 물론 XML의 사용이 적합한 경우에는 당연히 XML을 써야겠지만, 그렇지 않을 경우에는 다른 텍스트 포맷을 도입하는 것을 망설이지 말아야 할 것이다.

노트: 이 글은 마이크로 소프트웨어 2006년 12월호에 "마소플러스: XML의 허와 실"이라는 제목으로 실렸습니다.