SOAP(Simple Object Access Protocol) 란?
SOAP는 HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환화는 프로토콜이다
- 즉, 서로 다른 service들간의 연동을 목적으로 상호 이해 가능한 포맷의 메세지를 송수신함으로써 원격지에 있는 서비스객체나 API를 자유롭게 사용하고자 하는 기업의 요구에서부터 탄생한 프로토콜이다.
SOAP 특징
- 웹 서비스에서 기본적인 메시지를 전달하는 기반이 된다.
- 원격 프로시져 호출(Remote Procedure Call)패턴으로, 네트워크 노드(클라이언트)에서 다른 쪽 노드(서버)쪽으로 메시지를 요청 하고, 서버는 메시지를 즉시 응답하게 된다.
SOAP 장점
- 기존 원격 기술들에 비해서 프록시와 방어벽에 구애 받지 않고 통신이 가능하다.
- 플랫폼과 프로그래밍 언어에 독립적이다.
- 웹 서비스를 제공하기 위한 표준(WSDL, UDDI 등)이 잘 정립되어 있다.
- 에러 처리에 대한 내용이 기본적으로 내장 되어 있다.
- 분산 환경에 적합하다.
SOAP 단점
- 복잡한 구조로 인해 오버헤드가 있기 때문에 SOAP의 확장을 저해한다.
- REST에 비해 상대적으로 무겁고 속도가 느리다.
- 개발 난이도가 높아 개발 환경의 지원이 필요하다.
WSDL 란?
- 웹 서비스를 설명하기 위한 XML 표기법으로서 웹 서비스 요청 작성 방법을 클라이언트에 알려주며 웹 서비스 제공자가 제공하는 인터페이스를 설명한다.
- WSDL 정의는 논리 인터페이스와 웹 서비스의 물리적 세부사항을 지정하는 개별 섹션으로 구분된다.
- 세부사항에는 HTTP 포트 번호와 같은 엔드 포인트 정보와 SOAP 페이로드 표시 방법과 사용되는 전송을 지정하는 바인딩 정보가 포함된다.
UDDI 란?
- WSDL의 등록, 탐색, 바인딩을 위한 레지스트리 서비스이다.
- 웹 서비스를 등록하고 검색하기 위한 저장소로서 웹서비스를 등록하고 검색할 수 있는 일종이 웹 서비스 전용 검색엔진이라고 할 수 있다.

SOAP의 동작 원리
- 서비스 요청자가 SOAP로 인코딩하여 웹 서비스 요청을 서비스 제공자에게 전달한다.
- 서비스 제공자는 이를 디코딩하여 적절한 서비스 로직을 수행시켜서 결과를 얻는다.
- 얻은 결과를 다시 SOAP로 인코딩하여 반환한다.
SOAP와 REST의 차이점
- SOAP는 프로토콜이고 REST는 API 설계 스타일이이다.
- SOAP는 기능 중심적인 구조지만 REST는 데이터 중심적이다.
- SOAP는 XML만 사용하지만 REST는 HTMl, XML, JSON을 포함한 다양한 데이터 형식을 허용한다.
- SOAP 호출은 캐시가 안되지만 REST 호출은 캐시 할 수 있다.
- SOAP는 XML에 의존하기 때문에 페이로드가 무거워 HTML, XML, JSON을 허용하는 REST에 비해 리소스가 더 필요하다.
※ 페이로드는 인터넷을 통해 전송 되는 데이터를 말한다.
참고자료
https://www.ibm.com/docs/ko/integration-bus/10.0?topic=services-what-is-wsdl
https://gruuuuu.github.io/programming/soap/
SOAP란 무엇일까