본문 바로가기
Java/ETC

[Open API] SOAP 란?

by 놀러와요 2023. 4. 26.
반응형

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 상에서 전달될 때, 메시지 인코딩이나 디코딩 하는 과정 같은게 꽤 난이도가 있어서이다.

 

출처 : https://devkingdom.tistory.com/12

반응형

'Java > ETC' 카테고리의 다른 글

Jackson ObjectMapper 정리  (0) 2023.09.21
JVM 아키텍쳐  (0) 2021.01.04
RabbitMQ  (0) 2019.09.20
메시지 큐(Message Queue) 개념과 원리  (0) 2019.09.20
JVM이란?  (0) 2019.09.19