SOAP는 XML 형식의 고도로 표준화된 웹 통신 프로토콜이다. XML-RPC 출시 1년 후에 SOAP가 출시되었기 때문에 SOAP는 XML-RPC로부터 상당 부분을 물려받았다. 이후 REST가 출시되었을 때, SOAP와 REST는 같이 사용되었지만, 곧 REST만 사용하는 추세가 시작되었다.
SOAP 메시지는 다음과 같이 구성된다.
- 메시지의 시작과 끝을 표시하는 envelop tag
- 요청 또는 응답 body
- 메시지가 특정 사항이나 추가 요구 사항을 결정해야되는지에 대한 정보를 나타내는 헤더
- 요청을 처리하는 도중 발생할 수 있는 오류에 대한 안내
SOAP API 로직은 웹 서비스 기술 언어(WSDL)로 작성된다. 이 API 기술 언어는 endpoint를 정의하고 실행 가능한 모든 프로세스를 설명한다. 이를 통해 다양한 프로그래밍 언어와 IDE에서 통신 방법을 빠르게 설정할 수 있다.
SOAP는 stateful, stateless 메시지 모두 지원한다. Stateful 메시지를 사용하는 경우, 매우 과중할 수 있는 응답 정보를 서버에서 저장하게 된다. 그러나 이는 다양하고 복잡한 트랜잭션을 처리하기에 적합하다.
- SOAP는 웹 기반 서비스를 생성하는 내장 기능을 통해 통신을 처리하기 때문에 응답 언어 및 플랫폼으로부터 자유롭다.
- SOAP는 전통신 프로토콜 측면에서 다양한 시나리오에 사용될 수 있도록 설계되어있다.
- SOAP API 사양은 에러 코드와 설명을 담은 XML 재시도 메시지를 반환하도록 명시한다.
- WS-Security 프로토콜과 통합된 SOAP는 엔터프라이즈급 트랜잭션 품질을 충족한다. SOAP는 메시지 수준에서 암호화를 허용하면서 트랜잭션 내부의 개인 정보 보호 및 무결성을 제공한다.
-
XML만 사용한다.
- SOAP 메시지에는 많은 메타 데이터가 포함되며 요청 및 응답을 위해 장황한 XML의 특화 구조가 필요하다.
-
전송 용량이 무겁다.
- 큰 XML 파일 사이즈로 인해, SOAP 서비스는 큰 대역폭을 요구한다.
-
SOAP는 협소하게 전문화된 지식을 사용한다.
- SOAP API 서버 설계는 모든 프로토콜과 매우 제한적인 규칙에 대한 깊은 이해도를 요구한다.
-
SOAP 사용 예시
- SOAP 아키텍처는 일반적으로 기업 내 또는 믿을 수 있는 협력사와 내부 통합이 필요한 경우 사용된다.
SOAP는 주로 고수준의 보안 데이터 전송에 사용된다. SOAP의 엄격한 구조, 보안 및 권한 부여 기능은 API 공급자와 API 소비자 간의 법적 계약을 준수하면서 API와 클라이언트 간의 공식 소프트웨어 계약을 시행하는 데 가장 적합한 옵션이다. 이것이 금융 기관 및 기타 기업 고객이 SOAP를 사용하는 이유이다.