SOAP(Simple Object Access Protocol)은 웹 서비스 간에 구조화된 정보를 교환하기 위해 설계된, XML 기반의 메세징 프로토콜이다. 주로 HTTP / HTTPS를 전송 매체로 사용하지만, SMTP, JMS 등 다른 전송 프로토콜 위에서도 운용될 수 있다. SOAP은 플랫폼·언어에 독립적인 통신을 가능하게 하여, 이기종 시스템 간의 연동을 표준화한다.
1. 개요
- 정식 명칭: Simple Object Access Protocol
- 표준화 기관: W3C (World Wide Web Consortium)
- 최초 제정: 2000년 — W3C Recommendation으로 채택
- 주요 특징
- XML 기반: 요청·응답 메세지는
<Envelope>요소 안에<Header>(선택)와<Body>(핵심 데이터)로 구성된다. - 확장성: 헤더에 보안(WS‑Security), 트랜잭션(WS‑AtomicTransaction) 등 다양한 기능을 플러그인식으로 추가할 수 있다.
- 전송 독립성: SOAP Envelope는 어떤 전송 프로토콜 위에서도 전송 가능하며, HTTP / HTTPS가 가장 흔히 사용된다.
- XML 기반: 요청·응답 메세지는
2. 구조
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<!-- 옵션: 인증, 라우팅, 트랜잭션 등 -->
</soap:Header>
<soap:Body>
<!-- 비즈니스 로직 호출 및 응답 데이터 -->
</soap:Body>
</soap:Envelope>
- Envelope: 메세지 전체를 감싸는 최상위 요소. 네임스페이스 선언이 필수.
- Header: 선택적 요소. 보안 토큰, 라우팅 정보, 트랜잭션 컨텍스트 등을 삽입한다.
- Body: 실제 호출하고자 하는 서비스 메서드와 매개변수, 그리고 응답 데이터를 포함한다.
3. 주요 표준 및 연관 기술
| 표준 | 설명 |
|---|---|
| WS‑Security | SOAP 메세지에 디지털 서명·암호화를 적용해 메시지 수준 보안을 제공 |
| WS‑Addressing | 메시지 라우팅 정보를 헤더에 포함, 엔드포인트 주소와 액션을 명시 |
| WS‑ReliableMessaging | 전송 손실·중복을 방지하고 신뢰성 있는 메시지 전송 보장 |
| WS‑Policy | 서비스가 제공·요구하는 정책(보안, 트랜잭션 등)을 기술 |
| WSDL (Web Services Description Language) | SOAP 기반 서비스 인터페이스와 바인딩을 정의하는 XML 스키마 |
4. 활용 사례
- 기업 내부 시스템 연동: ERP·CRM·SCM 등 이기종 시스템 간 실시간 데이터 교환
- B2B 전자 거래: 전자청구서, 주문 처리 등 표준화된 비즈니스 프로세스 구현
- 클라우드 API: 일부 레거시 클라우드 서비스가 SOAP / WSDL 기반 API 제공 (예: AWS Simple Queue Service의 구버전)
5. 장점과 한계
장점
- 플랫폼·언어 독립성: XML만 지원하면 어디서든 호출 가능
- 표준화된 확장 메커니즘: 보안·신뢰성·트랜잭션 등 추가 기능을 체계적으로 적용 가능
- 엄격한 스키마 검증: XSD를 통한 강력한 데이터 검증
한계
- 무게감: XML 파싱·생성 비용이 높아 성능에 부담 (특히 모바일·IoT 환경)
- 복잡성: WS‑* 표준들을 모두 이해·구현하기 어려워 초기 진입 장벽이 높다
- 대체 기술 등장: 경량화된 REST / JSON 기반 API가 범용화되면서 신규 프로젝트에서 SOAP 사용 비중 감소
6. SOAP와 다른 웹 서비스 기술 비교
| 구분 | SOAP | REST (Representational State Transfer) |
|---|---|---|
| 전송 형식 | XML (Envelope) | 주로 JSON 또는 XML, HTTP 메서드 활용 |
| 표준화 수준 | W3C 표준 + 다수의 WS‑* 확장 | RFC 7230‑7235 등 HTTP 표준에 의존 |
| 보안 | WS‑Security 등 별도 표준 | HTTPS/TLS 기반 전송 보안, OAuth 등 |
| 상태 관리 | 상태 유지가 가능 (WS‑ReliableMessaging 등) | 무상태가 기본 원칙 |
| 학습 난이도 | 고 | 중~고 |
| 주요 사용처 | 엔터프라이즈 연동, 레거시 시스템 | 모바일·웹·마이크로서비스 등 경량 API |
7. 주요 구현체·툴
- Apache CXF, Axis2 (Java)
- Microsoft WCF (Windows Communication Foundation) (C#)
- gSOAP (C/C++)
- SoapUI – SOAP 서비스 테스트 및 모의(Mock) 서버 제공
8. 역사적 흐름
- 1999년 – 최초 개념 발표, SOAP 1.0 (Draft)
- 2000년 – SOAP 1.1이 W3C Recommendation 초안을 통해 표준화 시작
- 2003년 – SOAP 1.2 정식 표준 채택 (W3C Recommendation) – 네임스페이스 및 오류 처리 방식 개선
- 2000~2010년 – WS‑* 표준이 연속 발표되며 SOAP 기반 웹 서비스의 기능이 급격히 확장
- 2010년대 이후 – RESTful API와 JSON의 부상으로 신규 프로젝트에서 SOAP 사용이 감소, 그러나 금융·보험·공공 분야 등 보안·거래 신뢰성이 필수인 영역에서는 여전히 핵심 기술로 자리 잡음
9. 참고 문헌·링크
- W3C SOAP 1.2 Recommendation: https://www.w3.org/TR/soap12/
- WS‑Security Overview: https://www.oasis-open.org/standards#wssv10
- "Web Services Architecture" – Thomas E. Gould, 2002 (교과서)
- "Understanding SOAP" – Microsoft Docs, 2023 (온라인 가이드)
본 항목은 SOAP( Simple Object Access Protocol )에 대한 백과사전 수준의 정보를 제공한다.