SOAP 웹 서비스의 계약 기반 메시지 통합 방식

SOAP의 XML 메시지 구조, WSDL 계약, WS-Security 확장과 REST 대비 운영 특성을 정리한다.

2026-08-14 · 최초 발행 2025-10-14

계약과 메시지 경계가 필요한 통합 방식

SOAP(Simple Object Access Protocol)은 웹 기반 시스템이 메시지를 주고받기 위한 XML 기반 프로토콜이다. HTTP/HTTPS뿐 아니라 SMTP, JMS 등 여러 전송 방식 위에서 동작할 수 있으며, 언어와 플랫폼에 묶이지 않는 통신 모델을 제공한다.

서비스 계약은 주로 WSDL(Web Services Description Language)로 기술한다. 메시지 형식은 문서-리터럴(document/literal) 스타일을 사용하며, 오류는 SOAP Fault라는 정해진 구조로 전달한다. 프락시와 방화벽이 놓인 엔터프라이즈 네트워크에서도 HTTP 기반으로 운용할 수 있다는 점이 통합 환경에서의 장점이다.

SOAP 메시지는 최상위 Envelope 아래에 HeaderBody를 둔다. Header에는 메타데이터와 제어 정보를, Body에는 업무 페이로드를 담는다. 중간 노드(intermediary)와 헤더 체인을 활용하면 로깅, 라우팅, 정책 같은 처리를 애플리케이션 본문과 분리해 확장할 수 있다.

요청부터 Fault 반환까지의 흐름

클라이언트는 WSDL을 기준으로 Envelope, Header, Body를 조합하고 인증·트랜잭션·주소 지정 정보를 헤더에 넣는다. 요청은 일반적으로 HTTP POST와 Content-Type: application/soap+xml을 사용해 전송된다.

서버는 프락시나 게이트웨이를 거친 메시지의 헤더 정책을 검증한 뒤 애플리케이션 로직을 수행한다. 성공하면 응답 Body를 반환하고, 실패하면 Fault를 돌려준다. 재시도, 아이들포텐시, 트랜잭션 롤백은 헤더 정책과 서버 구현에 따라 달라진다.

Attachment Store (MTOM)SOAP ServiceProxy/FirewallClientAttachment Store (MTOM)SOAP ServiceProxy/FirewallClientalt[Attachment (MTOM)]alt[Success][Fault]Build SOAP EnvelopeHeader(Security, Tx, Addressing)Body(Payload)1HTTP POST /serviceContent-Type: application/soap+xml2Forward request3Validate Header (WS-Security, WS-Addressing)Begin Tx (optional)4Store/Retrieve binary via MTOM/XOP5Invoke business logicCommit/Rollback Tx6SOAP 200 OK + Body(Response)7Relay response8SOAP Fault (4xx/5xx)9Relay fault10

Envelope 안에 담기는 요청과 오류

다음은 SOAP 1.2 문서-리터럴 요청에 WS-Security와 Addressing 헤더를 포함한 요약 예시다.

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
              xmlns:wsa="http://www.w3.org/2005/08/addressing"
              xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
              xmlns:m="http://example.com/math">
  <env:Header>
    <wsa:Action>http://example.com/math/Add</wsa:Action>
    <wsa:To>https://api.example.com/MathService</wsa:To>
    <wsse:Security>
      <wsse:UsernameToken>
        <wsse:Username>api-user</wsse:Username>
        <wsse:Password Type="...#PasswordDigest">...</wsse:Password>
      </wsse:UsernameToken>
    </wsse:Security>
  </env:Header>
  <env:Body>
    <m:AddRequest>
      <m:a>2</m:a>
      <m:b>3</m:b>
    </m:AddRequest>
  </env:Body>
</env:Envelope>

유효하지 않은 자격 증명처럼 요청을 처리할 수 없는 상황은 Fault 구조로 표현한다.

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
  <env:Body>
    <env:Fault>
      <env:Code><env:Value>env:Sender</env:Value></env:Code>
      <env:Reason><env:Text xml:lang="ko">유효하지 않은 자격 증명</env:Text></env:Reason>
      <env:Detail><errorCode>AUTH-001</errorCode></env:Detail>
    </env:Fault>
  </env:Body>
</env:Envelope>

헤더 확장으로 보안과 정책을 분리한다

W3C 표준 메시지 포맷과 처리 모델은 SOAP의 상호운용성 기반이다. WS-I Basic Profile은 구현 간 호환성을 위한 가이드라인을 제공한다.

Header 체인과 중간 노드 개념은 로깅, 라우팅, 정책 적용을 비침투적으로 붙일 수 있게 한다. HTTP를 이용하므로 프락시와 방화벽 환경을 통과하는 데도 적합하다.

WS-Security는 메시지 수준의 서명·암호화·토큰 기반 인증을 지원한다. WS-ReliableMessaging, 트랜잭션과 결합하면 보안과 신뢰성을 함께 요구하는 통합 업무에 맞출 수 있다. WSDL 계약을 바탕으로 개발하면 팀과 벤더 사이의 결합도도 낮출 수 있다.

Envelope는 SOAP 메시지임을 선언하는 최상위 요소이며 네임스페이스로 버전과 확장 요소를 식별한다. Header에는 인증, 트랜잭션, 주소 지정 정보가 들어가고 mustUnderstand 속성으로 필수 처리 여부를 지정한다. Body에는 비즈니스 요청과 응답 페이로드를 담으며, 문서-리터럴 스타일에서는 스키마 기반 유효성 검증이 쉽다.

SOAP Encoding은 데이터 직렬화 규칙을 정의한다. 현재는 문서-리터럴 방식이 권장되고, RPC/encoded 스타일은 상호운용성 제한 때문에 지양한다. 대용량 바이너리에는 SOAP Attachment를 사용할 수 있으며 MTOM/XOP로 바이너리를 분리하고 스트리밍 처리한다.

금융·공공과 레거시 통합에서의 선택

결제·정산, 전자문서 교환, 전자세금계산서처럼 규격화된 메시지와 보안 요구가 함께 있는 금융·공공 B2B 연계에 SOAP을 적용할 수 있다.

메인프레임, ESB, 패키지 SW 같은 레거시 시스템과 연동할 때도 계약 기반 통신은 변경 영향을 줄이는 데 쓰인다. 주문·청구·재고 동기화처럼 멱등성과 트랜잭션 일관성이 중요한 업무, Java/.NET/Legacy가 섞인 환경의 상호운용에도 적합하다.

통합 설계·테스트 반복은 실무 경험 기준 20~40% 절감 가능하다. 메시지 수준 암호화와 서명은 데이터 보호를 강화하고 감사추적·무결성 같은 규제 준수 요구사항을 뒷받침한다. WS-RM과 분산 트랜잭션 연계를 포함한 트랜잭션 처리로 메시지 손실과 중복을 최소화하며, 장애 시에는 Fault 기반 진단과 복구가 가능하다.

REST와 비교할 때 남는 운영 조건

지표 SOAP REST
성능 XML 직렬화/헤더 오버헤드로 상대적으로 무거움 경량 JSON/무상태로 일반적으로 우수
확장성 헤더 체인·중간 노드로 정책 확장 용이 단순, 마이크로서비스에 적합한 수평 확장 용이
일관성 스키마·WSDL 기반 강한 계약 일관성 유연성 높으나 계약 강제력은 약함
안정성 WS-*로 보안·신뢰성·트랜잭션 강화 전송·보안은 인프라/프레임워크 선택에 의존
운영 편의 툴링 풍부하나 설정 복잡도 존재 설정 단순, 디버깅·모니터링 용이

SOAP은 표준화된 XML 메시지와 확장 가능한 헤더를 바탕으로 계약 중심 통합을 구성한다. 보안, 신뢰성, 일관성이 우선인 엔터프라이즈·B2B 환경에는 적합하지만, 경량 API와 프론트엔드 연계에서는 성능과 복잡도를 고려해 REST/gRPC를 선택할 수 있다.

SOAP웹 서비스WSDLWS-Security시스템 통합