클래스: 프로그래밍의 기초: API와 웹 서비스

SOAP 개요

RESTful API의 대안 중 하나는 SOAP입니다. SOAP 단순 객체 접근 프로토콜이란 뜻이죠. XML을 사용하는 메시지 프로토콜인데 다른 시스템이나 플랫폼에서 실행 중인 애플리케이션이 통신할 수 있게 하는 것입니다. SOAP는 살짝 무거울 수 있습니다. 추가 보안, 다양한 트랜잭션과 ACID 규정을 허용해서죠. ACID는 원자성, 일관성, 고립성, 지속성을 뜻합니다. 복잡하거나 중요한 작업을 처리할 때 필요한 특성이죠. 예를 들어서, 한 계좌에서 다른 계좌로 돈을 이체하면 원래 계좌에서 돈이 빠져나가고 다른 계좌에 돈이 들어간 걸 확인하고 싶잖아요. 이런 거래 과정, 트랜잭션 중 하나라도 실패하면 두 과정 모두 실패합니다. ACID에 대해 더 알고 싶다면 데이터베이스 작업에 대한 Programming Foundations 강의를 보시길 추천합니다. 또한, SOAP는 메시지 구조화와 보안 규정을 정의합니다. SOAP에서 WSDL 파일은 웹 서비스가 제공할 수 있는 서비스 정보를 클라이언트에게 전달합니다. 아이스크림 가게에 갔다고 상상해 보세요. 여러분은 유리막 뒤로 맛있는 아이스크림을 볼 수 있지만 유리막 뒤로 직접 갈 수는 없죠. 직원이 유리막 뒤로 가서 아이스크림콘을 만든 뒤 여러분에게 건네주면 돈을 내야 하죠. 하지만 이 아이스크림 가게에서는 제대로 주문할 때만 아이스크림을 받을 수 있습니다. 올바른 프로토콜과 메시지 형식은 이렇습니다. 하지만 여러분은 주문을 이런 식으로 했죠. 이러면 여러분의 요청은 수행될 수 없고 결국, 아이스크림도 못 받게 됩니다. 이게 바로 WSDL 문서가 하는 일이죠. WSDL는 웹 서비스, 기술, 언어를 의미합니다. 웹 서비스에서 수행될 수 있는 모든 작업을 클라이언트에게 알려 주는 기능입니다. 아이스크림 주문하는 방법이든지 돌려받고 싶은 정보 같은 거죠. WSDL 문서에는 필요한 모든 정보가 포함돼 있는데 SOAP 메시지에서 사용되는 데이터 유형 및 웹 서비스를 통해 사용 가능한 모든 작업 목록 등이 있습니다. 월드 와이드 웹 컨소시엄인 W3C에서 관리하고 개발하는 공식적인 웹 표준 사양이 바로 SOAP입니다. SOAP 메시지 자체가 여러 부분으로 구성돼 있는데요. 공유 데이터는 엔벌로프라고 불리는 곳에 공유됩니다. Envelope는 사실 특정 부분으로 구성된 평범한 XML 파일인데 특정 구조와 인코딩 규칙을 비롯해 수신 및 응답 규정이 있으며 HTTP를 통해 전송되는 경우가 많습니다. SOAP 메시지에는 네 가지 부분이 있는데요. Envelope는 필수입니다. 메시지를 시작하고 끝내는 태그이니까요. Header는 옵션입니다. 메시지 속성이 포함되는 부분인데 보안 토큰과 같이 추가 정보를 줌으로써 SOAP 메시지를 확장하는 역할이죠. Body도 필수입니다. 서버가 수신자에게 전송하는 실제 XML 데이터를 포함하죠. 마지막으로 Fault는 옵션입니다. Fault는 메시지를 처리하는 동안 나타날 수 있는 모든 오류 정보를 전달합니다. 그래서 메시지는 도구에 따라 다르게 보일 테지만 같은 명령에서는 항상 같은 부분을 전달할 겁니다.

목차