본문 바로가기
Develop/Spring

[Open API] SOAP 란?

by 코딩의성지 2019. 9. 25.

저번 글에 Open API 가 무엇인지 대략적으로 무엇인지 썼었다.

(지난 글 - http://devkingdom.tistory.com/11)

 

요즘에 Open API를 기업에서 제공할 때, SSL과 서명기능을 첨부한 RESTFul 방식으로 API를 제공한다.

오늘 공부해볼 SOAP라는 놈은 예전에 정말 많이 쓰던 방식이다.

 

그럼 RESTFul 서비스만 알면되지 왜 SOAP 라는 서비스를 알아야하느냐고 반문하실 수도 있다. 나도 사실 그렇게 생각하면서 개발을 해왔다.

 

그런데 오늘.... 해외의 한 기업에 API를 제공하려고하는데, 여기 회사에서는 SOAP 방식으로만 서비스를 개발한다고 한다. 잘 안쓴다고 해서 모르면 안된다는 걸 오늘 깨달았다.

 

자, 아무튼 SOAP에 대해 좀 알아보자. SOAP나 REST나 둘다 보통 웹 서비스라고 부른다. 이러한 서비스는 기존의 서로 다른 컴퓨터에서 네트워크를 통해 데이터를 주고 받는 통신이라고 생각하면된다.

 

이러한 웹서비스는 플랫폼에 독립적이며, 연결을 유지하지 않는 특징이 있다.

 

오늘 제대로 알아볼 내용은 SOAP 인데, Simple Object Access Protocol 의 줄임말이다. 

 

우리가 흔히 하는 HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜이다.

 

SOAP 의 장점은 다음과 같다.

-기존의 원격 기술 대비 프록시방화벽에 구애 받지 않음

-플랫폼이나 프로그래밍 언어에 독립적

-에러 처리가 기본적으로 내장

-분산환경에서 사용하기 적합함

-웹 서비스 표준(XSDL, UDDI, WS-*)이 잘 정립되어있음

 

하지만 SOAP 의 단점이 더 눈에 들어오는 녀석이다.

- 복잡한 구조기 때문에 어려움

-  REST에 비해 상대적으로 무거우며 속도도 느림

 

개발자에게 어렵고, 무겁고, 느린건 최악이라고 생각한다. 그래도 개발자로 일을 하다보면 나처럼 이런 상황을 맞이할수 있기 때문에 공부해놓는 걸 추천한다.

 

<SOAP 아키텍처>

 

위의 그림은 SOAP 의 아키텍처이다. 

 

SOAP는 UDDI 레지스트리라는 걸 통해서 웹서비스를 등록하고, 탐색하고, 바인딩 해서 사용한다.

 

WSDL 이나 UDDI 라는 생전 처음들어 볼 법한 놈들이 있긴 한데.... 쉽게 쉽게 생각하자.

 

WSDL은 XML, UDDI는 검색엔진 이라고 생각하면 굉장히 마음이 편해진다.

 

조금 더 프로세스를 자세하게 설명해 보자면,

 

1. Service requestor가 SOAP로 인코딩하여 웹 서비스를 Service provider 에게 요청하면,

2. Service provider는 이걸 디코딩해서 요청한 거에 맞는 비지니스 로직을 수행하고, 그결과를 다시 SOAP로 인코딩해서 리턴 한다.

 

다음 그림은 SOAP의 메시지 구조이다.

 

<SOAP 메시지 구조>

이렇게 생겼다.

 

복잡해보이지만 이것도 쉽게 생각하자.

 

 

우편배달부 (HTTP) 가 봉투 안에 담긴 ( SOAP Envelope) 편지 (SOAP Header, SOAP Body) 를 배달 하는 거라고 생각하면 쉽다.

 

보통 SOAP를 소개하는 문서나 책을 보면 개발 난이도가 높다고 하는데, 위의 메시지 구조가 HTTP 상에서 전달될 때, 메시지 인코딩이나 디코딩 하는 과정 같은게 꽤 난이도가 있어서이다.

 

아무튼 이정도면 SOAP 가 무엇인지 정도는 알 수 있을 거라고 생각한다. 오늘도 즐겁게 코딩하자~~~

 

반응형

댓글