본문 바로가기
DEVLOG/개발일기

SOAP vs REST 아키텍처 / 프로세스 / 장단점 비교

2019. 9. 12.
반응형

SOAP(Simple Object Access Protocol)

일반적으로 널리 알려진 HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메세지를 컴퓨터 네트워크 상에서 교환하는 프로토콜입니다.

 

왜 SOAP를 사용하는가?

  • 기존 원격 기술들에 비해서 Proxy방화벽에 구애받지 않고 쉽게 통신 가능
  • 플랫폼과 프로그래밍 언어에 독립적
  • 웹 서비스를 제공하기 위한 표준(WSDL, UDDI, WS-*)이 잘 정립되어 있음
  • 에러 처리에 대한 내용이 기본으로 내장
  • 분산 환경에 적합

왜 SOAP를 사용하지 않는가?

  • 복잡한 구조로 인해 오버헤드가 있으며, 이는 SOAP의 확장을 저해하고 있음
  • REST에 비해 상대적으로 무겁고 속도도 느리다
  • 개발 난이도가 높아 개발 환경의 지원이 필요하다

 

 

 

 

SOAP 아키텍처

UDDI 레지스트리를 통해 웹서비스를 등록(Publish)하고, 탐색(Find)하고, 바인딩(Bind)하여 사용

SOAP의 프로세스

서비스 요청자가 SOAP로 인코딩하여 웹 서비스 요청을 서비스 제공자에게 전달

서비스 제공자는 이를 디코딩하여 적절한 서비스 로직을 수행시켜서 결과를 얻고, 그 결과를 다시 SOAP로 인코딩하여 반환

 

SOAP의 메세지 구조

구현을 위한 라이브러리

C/C++

  • gSOAP : C++로 작성되었으며, SOAP 1.1/1.2 명세를 충실히 따르는 안정적인 라이브러리로 클라이언트와 서버를 모두 지원한다.
  • cSOAP : 순수 C언어로 구현된 라이브러리로 클라이언트와 서버를 모두 지원하며 의존 라이브러리로 libxml, libssl, libpthread가 있음
  • libSOAP : GNOME 환경을 위한 HTTP 클라이언트/서버 라이브러리이며 의존 라이브러리로 libglib, libgnutls, libpthread가 있으며, 비동기뿐만 아니라 동기 API도 가지고 있어 Thread 프로그래밍도 가능

 

REST(REpresentational State Transfer)

HTTP를 통해 세션 트래킹 같은 부가적인 전송 레이어 없이, 전송하기 위한 아주 간단한 인터페이스

HTTP등의 기본 개념에 충실히 따르는 웹 서비스

 

왜 REST를 사용하는가?

  • 플랫폼과 프로그래밍 언어에 독립적(SOAP과 동일)
  • SOAP보다 개발하기 단순하므로 러닝커브가 작고 도구가 거의 필요없음
  • 간결하므로 추가적인 메세징 계층이 없음

왜 REST를 사용하지 않는가?

  • point-to-point 통신 모델을 가정하므로 둘 이상으로 상호작용하는 분산환경에는 유용하지 않다
  • 보안, 정책 등에 대한 표준이 없다
  • HTTP 통신 모델만 지원한다

REST 아키텍처

리소스를 등록하고 저장해두는 중간 매체 없이 리소스 제공자가 직접 리소스 요청자에게 제공

 

 

REST 프로세스

기본 HTTP 프로토콜의 메소드 GET/PUT/POST/DELETE를 이용하여 서비스 제공자에게 서비스를 요청

Method CRUD SQL
POST Create INSERT
GET Read SELECT
PUT Update UPDATE
DELETE Delete DELETE

서비스 제공자는 다양한 형태로 표현된 (JSON, XML, RSS등) 리소스를 반환

 

REST 동작원리

REST API란?

REST 구조 스타일에 적합한 Web API

 

REST API 구현 사례

 

반응형

댓글