오늘날 우리는 REST API와 GraphQL 같은 현대적인 기술을 당연하게 사용하며 데이터를 주고받는다.
하지만 이 모든 기술이 등장하기 전, 웹을 통해 원격에 있는 함수를 호출한다는 혁신적인 아이디어를 처음으로 대중화시킨 기술이 있었다. 바로 XML-RPC이다.
마치 스마트폰 이전에 존재했던 삐삐처럼, 지금은 낯설게 느껴질 수 있지만, 웹 서비스의 역사를 이해하기 위해선 반드시 거쳐가야 할 중요한 관문과도 같은 존재이다. 과연 XML-RPC는 어떤 원리로 작동했으며, 현대 기술에 어떤 영향을 미쳤을까?
XML-RPC는 'XML-Remote Procedure Call'의 약자이다. 이름 그대로 XML을 사용하여 원격에 있는 프로시저(함수 또는 메서드)를 호출하기 위한 프로토콜이다.
1998년에 개발된 이 기술의 핵심 철학은 '단순함'이다. 복잡한 기능보다는 가장 기본적인 원격 호출 기능에 집중하여, HTTP를 전송 프로토콜로, XML을 데이터 인코딩 형식으로 사용한다. 이를 통해 서로 다른 운영체제나 프로그래밍 언어로 만들어진 시스템들이 네트워크를 통해 서로의 기능을 쉽게 호출하고 사용할 수 있는 길을 열었다.
XML-RPC의 동작 원리는 매우 직관적이다. 그 과정을 단계별로 살펴보자.
- 클라이언트의 요청: 클라이언트는 호출하고 싶은 원격 서버의 함수 이름과 그 함수에 전달할 매개변수들을 XML 형식으로 구성한다.
- HTTP POST 전송: 클라이언트는 생성된 XML 데이터를 HTTP POST 요청의 본문(Body)에 담아 서버로 전송한다.
- 서버의 처리: 서버는 HTTP 요청을 받아 XML 데이터를 파싱(해석)한다. 요청된 함수를 찾아 매개변수와 함께 실행한다.
- 서버의 응답: 서버는 함수 실행 결과를 다시 XML 형식으로 구성하여 HTTP 응답 메시지에 담아 클라이언트에게 반환한다. 오류가 발생했다면 오류 정보를 담은 XML을 반환한다.
이처럼 간단한 요청과 응답 구조 덕분에 당시 많은 개발자가 쉽게 이해하고 적용할 수 있었다.
XML-RPC의 단순함은 메시지 구조에서도 명확히 드러난다. 요청과 응답에 사용되는 주요 XML 태그는 무엇일까?
- 요청 (Request) 구조
- <methodCall>: 요청 메시지 전체를 감싸는 최상위 태그이다.
- <methodName>: 호출하고자 하는 함수의 이름을 담는다.
- <params>: 함수에 전달할 모든 매개변수(파라미터)들을 감싸는 컨테이너 태그이다.
- <param>: 개별 매개변수를 감싼다.
- <value>: 매개변수의 실제 값과 데이터 타입을 정의한다.
- <i4>, <string>, <boolean>, <double>, <struct>, <array> 등
- 응답 (Response) 구조
- <methodResponse>: 응답 메시지 전체를 감싸는 최상위 태그이다.
- <params>: 성공적인 응답 결과를 담는 컨테이너 태그이다. (요청과 구조가 유사하다.)
- <fault>: 요청 처리 중 오류가 발생했을 때 사용된다. 오류 코드와 설명 문자열을 담는다.
XML-RPC는 이후 등장하는 SOAP(Simple Object Access Protocol)의 직접적인 전신이다. SOAP는 XML-RPC의 단순한 구조에 엔터프라이즈급 기능(보안, 트랜잭션, 표준화된 명세 등)을 추가하여 확장한 프로토콜이다. 즉, XML-RPC가 '경차'라면 SOAP는 다양한 옵션을 장착한 '대형 세단'에 비유할 수 있다.
반면, REST는 프로토콜이 아닌 아키텍처 스타일로서, 자원(Resource)을 URI로 표현하고 HTTP 메서드(GET, POST, PUT, DELETE)를 통해 해당 자원에 대한 행위를 정의하는 방식으로 접근한다. 이는 함수 호출 중심의 RPC(원격 프로시저 호출) 방식과는 근본적인 철학의 차이를 보인다.
SOAP도 이유가 명확하지 않으면 잘 쓰이지 않는 마당에, 그 전신인 MXL-RPC를 새로운 대규모 프로젝트에서 채택하는 경우는 거의 없다. 하지만 이 기술이 완전히 사라진 것은 아니다. 가장 대표적인 예가 바로 워드프레스(WordPress)이다.
워드프레스는 원격 포스팅, 댓글 관리 등을 위해 XML-RPC API를 오랫동안 지원해 왔다.
이 때문에 여전히 많은 플러그인과 외부 도구들이 이 방식을 사용하고 있다. 또한, 일부 레거시 시스템이나 특정 목적의 간단한 내부 API에서 여전히 그 흔적을 찾아볼 수 있다.
결론적으로 XML-RPC는 웹 서비스의 역사를 연 중요한 기술이다. 비록 지금은 더 새롭고 강력한 기술들에게 주류의 자리를 내주었지만, 그 단순하고 명확한 철학은 이후 기술 발전에 큰 영감을 주었다. 개발자로서 XML-RPC의 기본 원리를 이해하는 것은 우리가 당연하게 사용하는 현대 API 기술의 뿌리를 이해하고, 기술의 발전 계보를 꿰뚫어 보는 혜안을 갖게 해 줄 것이다.
#XMLRPC #RPC #웹서비스 #API #프로토콜 #XML #원격프로시저호출 #워드프레스 #SOAP #REST #개발자
'IT 정보 > 용어' 카테고리의 다른 글
CDR(Common Data Representation)이란? CORBA의 심장이었던 데이터 표준 (1) | 2025.08.27 |
---|---|
빅 엔디안 vs 리틀 엔디안, 컴퓨터는 숫자를 어떻게 저장할까? (1) | 2025.08.26 |
아직도 SOAP를 알아야 할까? 웹 서비스의 근본 SOAP의 모든 것 (0) | 2025.08.24 |
CORBA의 국제 공용어, IIOP 프로토콜의 모든 것 (0) | 2025.08.23 |
객체 요청 브로커(ORB), CORBA의 심장 ORB의 모든 것을 파헤치다 (0) | 2025.08.22 |