✅ SOAP (Simple Object Access Protocol)
🔷 1. 개념
**SOAP(Simple Object Access Protocol)**는
**분산 환경(distributed environment)**에서 이기종 시스템 간에 구조화된 메시지를 교환하기 위해 설계된 XML 기반의 메시징 프로토콜입니다.
- 웹 서비스(Web Service)의 핵심 프로토콜
- 네트워크를 통해 **프로그램 간 원격 호출(Remote Procedure Call, RPC)**이 가능하도록 함
- W3C(World Wide Web Consortium)에서 표준화
🔷 2. 목적 및 역할
| 항목 | 설명 |
|---|
| 시스템 간 통신 | 운영체제(OS)나 언어에 관계없이 통신 가능 |
| 메시지 포맷 표준화 | XML 기반의 표준 메시지 구조 사용 |
| 보안 및 확장성 | WS-* 확장을 통해 보안, 트랜잭션 등 지원 |
| 웹 서비스 연동 | WSDL, UDDI와 함께 서비스 디스커버리 및 호출 |
🔷 3. 구조
SOAP 메시지는 기본적으로 다음과 같은 구조를 갖습니다:
<SOAP-Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-Header>
</SOAP-Header>
<SOAP-Body>
</SOAP-Body>
</SOAP-Envelope>
🔷 4. 구성 요소
| 구성요소 | 설명 |
|---|
| Envelope | SOAP 메시지의 최상위 컨테이너 |
| Header | 선택 항목. 인증, 암호화, 트랜잭션 정보 포함 가능 |
| Body | 실제 데이터 교환 내용 (메소드 호출, 응답 등) |
| Fault | 오류 메시지를 포함할 수 있는 구조 |
🔷 5. 동작 원리 (원리 및 흐름)
- 클라이언트가 서버에 XML 형태로 SOAP 메시지를 요청 전송
- 서버는 SOAP 메시지를 해석하여 지정된 로직 수행
- 수행 결과를 SOAP 응답 메시지(XML)로 생성
- 응답 메시지를 클라이언트에 전송
➡️ 주로 HTTP POST 방식 사용, SMTP, FTP도 가능
🔷 6. 핵심 관련 용어 정리
| 용어 | 설명 |
|---|
| WSDL (Web Services Description Language) | SOAP 서비스의 인터페이스 정의 (입력, 출력, 프로토콜 등) |
| UDDI (Universal Description, Discovery, and Integration) | SOAP 서비스를 찾기 위한 디렉토리(레지스트리) |
| WS-Security | SOAP 메시지의 보안성(인증, 무결성, 암호화) 보장 |
| XML | 데이터 표현 및 교환을 위한 마크업 언어 |
🔷 7. 특징
| 구분 | 설명 |
|---|
| 표준화 | W3C 표준, 다양한 산업에서 사용 |
| 언어/플랫폼 독립 | Java, .NET, Python 등 모든 환경에서 사용 가능 |
| 보안성 | WS-Security로 암호화 및 서명 처리 가능 |
| 느림 | XML 사용으로 인해 데이터가 무겁고 전송량 큼 |
| 복잡성 | REST에 비해 구조와 설정이 복잡 |
🔷 8. REST와 비교
| 항목 | SOAP | REST |
|---|
| 형식 | XML 기반 고정 포맷 | JSON, XML 등 다양한 포맷 |
| 호출 방식 | 주로 POST | GET, POST, PUT, DELETE 등 |
| 메시지 무게 | 무겁다 (XML, 헤더 등 포함) | 가볍다 (간단한 HTTP 메시지) |
| 표준 지원 | 보안, 트랜잭션 등 지원 | 상대적으로 부족 |
| 유연성 | 낮음 | 높음 |
| 개발 난이도 | 높음 | 낮음 |
🔷 9. 장단점
| 구분 | 장점 | 단점 |
|---|
| 기술적 | 표준화, 신뢰성, 보안성 | 복잡한 구조, 느린 성능 |
| 운영적 | 다양한 기업 시스템에서 사용 가능 | 개발 및 유지관리 어려움 |
| 통신적 | 방화벽 우회 쉬움 (HTTP 사용) | 대용량 데이터 처리 시 비효율적 |
👦 어린이 버전 요약
SOAP는 컴퓨터끼리 편지를 주고받는 규칙이에요.
마치 “누구한테, 무슨 일을 해달라고, 결과를 어떻게 받아와야 해”라고 **정해진 양식(XML)**으로 보내는 거예요.
약속한 형식이 있어서 어떤 컴퓨터든 이해할 수 있어요!
✅ 결론
SOAP는 XML 기반의 표준화된 메시지 프로토콜로, 이기종 시스템 간 데이터 교환, 프로세스 호출, 보안성 있는 통신을 지원하며, 기업 시스템 간 연계, 전자정부, 금융 등 신뢰성과 보안이 중요한 분야에서 여전히 사용되고 있습니다.
REST가 대중화되었지만, SOAP는 여전히 보안, 트랜잭션, 메시지 신뢰성이 요구되는 환경에서 강력한 대안이 됩니다.