[Protocol] SOAP(1) - SOAP 란?

kukjunLEE·2023년 12월 22일
2

Protocol

목록 보기
1/3
post-thumbnail

본 내용은 Protocol중 하나 인, SOAP에 대한 개념 이해를 돕기 위해 제작되었습니다.




동기


SOAP를 조사하게 된 계기는 회사 업무 중, 의약품 안전나라의 API를 이용해야 할 일이 있었다.


의약품 안전나라에서 제공한 가이드 문서는 다음과 같았고, SOAP를 이용하라는 이야기를 들었다.

식약처 제공 SOAP Flow



...



양파 쿵야

이게 무슨 소리야




의약품 안전나라 측에서는 SOAP 방식을 통해서 API를 사용할 수 있도록 열어두었기 때문에, 나도 SOAP 방식으로 해당하는 결과를 받아올 필요가 있었다.

고로, SOAP에 대해서 공부해야 했고, 그 결과를 여기에 공유하려고 한다.





SOAP 란?


SOAP의 정의

SOAP(Simple Object Acess Protocol)는 웹 서비스 상호작용에서 사용하는 XML 메시지 형식입니다. SOAP 메시지는 일반적으로 HTTP, HTTPS, SMTP 등을 통해 전송되지만 다른 전송 프로토콜을 사용할 수 있습니다.

SOAP는 웹 서비스 상호작용을 위한 프로토콜이고, XML로 작성되는 메시지 형식이라고 한다.


SOAP를 이용한 통신을 그림으로 표현하면 다음과 같다.

SOAP 개요에 대한 그림

지금 처럼 설명한 그림이 인터넷에 많이 돌아다니는데, SOAP 통신 방식을 위해 알아야 할 3가지는 서비스 요청자, 서비스 브로커, 서비스 제공자이다.



서비스 요청자와 서비스 제공자는 우리가 익히 아는 Client, Server로 볼 수 있는데 서비스 브로커는 처음 들어보아서 좀 더 찾아보았다.




서비스 브로커

서비스 브로커는 서비스 제공자와 요청자 사이에 존재하며, 둘 사이를 중개하는 역할을 한다.

  • 서비스 등록, 위치 제공
  • 서비스 매칭
  • 추상화와 중재
  • 안정성과 보안 관리

의 역할을 가진다.

특정 웹 서비스에서 SOAP을 사용하는 것은 WSDL 정의에서 설명된다.




WSDL

WSDL(Web Services Description Language) 는 웹서비스가 기술된 정의 파일의 총칭으로 XML을 사용해 기술된다.
웹서비스의 구체적인 내용이 기술되어있는 문서이고 서비스 제공장소, 서비스 메세지 포맷, 프로토콜들이 기술되어있다.

WSDL Flow

해당 문서를 보고 Client는 서비스 위치, 필요한 파라미터 등의 정보를 알아낼 수 있다.





SOAP Message 구조


SOAP은 메시지를 포함하는 Envelope과 첨부 파일인 Attachment로 구성되며, Envelope은 Header와 Body로 구성 된다.

SOAP Message 구조는 다음과 같다.

SOAP Message 구조

  1. SOAP Envelope
    실제 Message가 들어가는 가장 바깥 부분으로, 필요한 네임스페이스와 인코딩 스타일을 정의합니다. 내부는 SOAP Header, Body로 구성된다.
    a. Header: 선택적 요소로 메시지 처리와 관련된 속성 정보나, 메타데이터를 포함한다.
    b. Body: 필수 요소로 실제 메시지 데이터가 포함된다. 요청이나, 응답이 해당 내용이 된다.
  2. Attachment
    첨부 파임을 의미하고, 메시지에 담을 수 없는 큰 파일들이 해당 위치에 존재한다.



SOAP 메시지 예시는 다음과 같다.


<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
        <!-- 헤더는 선택적으로 사용되며, 보안, 트랜잭션 등의 정보를 포함할 수 있습니다. -->
    </soap:Header>
    <soap:Body>
        <!-- 'GetPrice' 메소드를 호출하고, 'productId' 파라미터를 전달합니다. -->
        <m:GetPrice xmlns:m="http://www.example.org/stock">
            <m:ProductID>12345</m:ProductID>
        </m:GetPrice>
    </soap:Body>
    <!-- 만약 오류가 발생하면, Fault 요소가 여기 포함됩니다. -->
</soap:Envelope>




SOAP 사용 Flow


Client가 Service를 이용하는 Flow는 다음과 같다.

SOAP 사용 Flow

Service Search
먼저 Client가 Service Broker에게 어떤 서비스를 제공할 수 있는지 물어본다.

Service Request
그 이후, 서비스의 특정 요청을 브로커에게 보내면, 브로커가 이를 중개해, Service 제공자에게 요청을 전달하고 응답을 받아온다.

다음 게시글은, 우리가 사용하는 Backend Framework에서 어떻게 SOAP Broker와 통신할 수 있는지, 공유하고자 한다.

profile
Backend Developer

0개의 댓글