관리 메뉴

피터의 개발이야기

SOAP과 REST 비교 본문

개발이야기

SOAP과 REST 비교

기록하는 백앤드개발자 2020. 12. 10. 09:00
반응형

https://19yw4b240vb03ws8qm25h366-wpengine.netdna-ssl.com/wp-content/uploads/soap_vs_rest.png

 

REST와 SOAP는 각기 다른 두 가지의 온라인 데이터 전송 방식입니다. 둘 다 웹 애플리케이션 간 데이터 통신을 허용하는 애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API)를 구축하는 방법을 정의합니다.

REST(Representational State Transfer)는 아키텍처 원칙 세트이고, SOAP(Simple Object Access Protocol)는 World Wide Web Consortium(W3C)에서 유지관리하는 공식 프로토콜입니다. 즉, SOAP는 프로토콜이지만, REST는 프로토콜이 아니라는 점이 주요 차이점입니다. 일반적으로 API는 활용 사례와 개발자의 선호에 따라 REST 또는 SOAP 중 하나를 준수합니다. 

REST(Representational State Transfer)

REST는 웹 서비스 모바일 애플리케이션 경량화의 필요에 맞춘 아키텍처 원칙 세트입니다. 가이드라인이기 때문에 이러한 권장 사항의 구현 여부는 개발자에게 달려 있습니다.

데이터 요청이 REST API로 전송될 때는 일반적으로 하이퍼텍스트 전송 프로토콜(HTTP)을 통해 이루어집니다. 이러한 요청을 수신하면 REST용으로 설계된 API(RESTful API 또는 RESTful 웹 서비스)가 HTML, XML, 일반 텍스트, JSON과 같은 다양한 형식으로 메시지를 반환할 수 있습니다. JSON(JavaScript Object Notation)은 이름과는 달리 어떠한 프로그래밍 언어로든 읽을 수 있고, 인간과 기계가 모두 읽을 수 있으며, 경량화되어 있기 때문에 선호되는 메시지 형식입니다. 이러한 이유로 RESTful API는 보다 유연하고 설정하기도 쉽습니다.

SOAP(Simple Object Access Protocol)

SOAP는 다른 언어로 다른 플랫폼에서 빌드된 애플리케이션이 통신할 수 있도록 설계된 최초의 표준 프로토콜입니다. 프로토콜이기 때문에 복잡성과 오버헤드를 증가시키는 빌트인 룰을 적용하므로, 페이지 로드 시간이 길어질 수 있습니다. 그러나 이러한 표준은 빌트인 컴플라이언스를 제공한다는 의미이므로, 기업에서 선호하는 방식이기도 합니다. 빌트인 컴플라이언스 표준에는 보안과 안정적인 데이터베이스 트랜잭션의 기본 속성인 원자성, 일관성, 격리성, 내구성(Atomicity, Consistency, Isolation and Durability, ACID)이 포함됩니다.

 

 

SOAP과 REST 비교

대부분의 레거시 시스템에서 SOAP를 준수하며, REST는 그보다 뒤에 고려하거나 웹 기반 시나리오에서의 더 빠른 대안으로 여기는 경우가 많습니다. REST는 유연한 구현을 제공하는 가이드라인 세트고, SOAP는 XML 메시징과 같은 특정 요건이 있는 프로토콜입니다.

REST API는 경량화되어 있기 때문에 사물 인터넷(IoT), 모바일 애플리케이션 개발, 서버리스(servreless) 컴퓨팅과 같이 보다 새로운 컨텍스트에 이상적입니다. SOAP 웹 서비스는 많은 기업에서 필요로 하는 기본 보안과 트랜잭션 컴플라이언스를 제공하지만, 이로 인해 좀 더 무거운 경향이 있습니다. 또한 Google Maps API와 같은 대부분의 퍼블릭 API는 REST 가이드라인을 따릅니다.

 

SOAP HTTP응용 프로토콜로서 SOAP 헤더와 바디로 구성되어 있고, 메시지 송수신 시 헤더와 바디의 인코딩/디코딩 과정이 필수입니다. 따라서 기본 HTTP로 메시지를 전달하던 인터넷 서비스 분야에서는 원하는 기능에 비해 SOAP 프로토콜 처리의 오버헤드가 발생하는 문제가 있습니다.

 

(여기서 오버헤드란, 시스템에서 목적으로 하는 효과를 얻기 위해 본질적인 것은 아니지만 요구되는 작동, 또는 그 때문에 필요한 자원을 말합니다.) 

 

이런 SOAP의 단점을 보완하고자 등장한 구현 기술이 바로 RESTful 웹서비스입니다. RESTful 웹서비스는 REST 기반의 웹서비스를 의미하고, HTTP의 기본 기능만으로 원격 정보에 접근하는 웹 응용 기술입니다. 

 

RESTsms 웹의 창시자 중 한 사람인 Roy Fielding이 그의 박사 학위 논문에서, 현재의 웹 아키텍처가 웹의 본래 설계의 우수성을 활용하지 못하므로 웹의 장점을 최대한 활용할 수 있는 네트워크 기반의 아키텍처를 제안했는데 이것이 REST입니다.

 

REST REpresentational State Transfer의 약어로서 부수적인 레이어나 세션 관리를 추가하지 않고도 HTTP프로토콜로 데이터를 전달하는 프레임워크입니다. 또한 클라이언트/서버 간의 구성요소를 엄격히 분리하여 구현은 단순화시키고 확장성과 성능은 높일 수 있는 아키텍처입니다.

 

초기 WEB서비스는 기업을 중심으로 발전을 하였고, 보안에 강점을 두었습니다. 초기 네트워크 보안은 현대의 보안과 많은 차이가 있었고, 보안을 위해 SOAP이 발달되었고, 이러한 배경에서 HTTP의 장점을 살리고자 REST가 탄생한 것입니다. 사물과 사람, 정보의 신속한 전달이 보다 빠른 정보화 사회의 요구에 맞추어 발전을 할 수 있었습니다.

 

빠르고 간결하게 발전한 REST는

1. 웹의 모든 리소스를 URI로 표현,

2. 이를 구조적이고 유기적으로 연결하고

3. 비 상태 지향적인 방법으로

4. 일관된 method를 이용하여 리소스를 반환하는 아키텍쳐

가 되었습니다.

 

다음에는 간결한 REST의 방식에 대해서 알아보겠습니다. 

 

참조
 -  REST와 SOAP 비교
 -  [Web Service] RESTful하다는것, 편하다는것
반응형
Comments