SOAP과 REST는 다양한 기술로 개발된 어플리케이션 간의 인터넷 데이터 교환 방식이다.
먼저 차이점을 알아보기 전에 SOAP을 알아보자.
SOAP이란
SOAP은 애플리케이션 간에 통신할 수 있는 프로토콜이다. 프로토콜이기 때문에 복잡성과 오버헤드를 증가시키는 빌트인 룰을 적용하는데 이로 인해 페이지 로드 시간이 길어질 수 있다는 단점이 있다. 하지만 이러한 빌트인 룰은 빌트인 컴플라이언스를 제공하는데 컴플라이언스 표준에는 보안과 안정적인 데이터베이스 트랜잭션의 기본 속성인 원자성, 일관성, 격리성, 내구성(Atomicity, Consistency, Isolation and Durability, ACID)이 포함되어 기업에서 선호될 수 있다는 장점이 있다.
또한 SOAP은 엄격한 통신 규칙이 있어 아래와 같은 표준이 있다.
- 웹 서비스 보안(WS-security): 토큰이라고 불리는 고유 식별자를 통해 메시지를 보호하고 전송하는 방식을 표준화한다.
- WS-ReliableMessaging: 불안정한 IT 인프라로 전송되는 메시지 간 오류 처리를 표준화한다.
- 웹 서비스 주소지정(WS-addressing): 심층 네트워크에 라우팅 정보를 유지관리하는 대신, SOAP 헤더 내에 메타데이터로 해당 정보를 패키징한다.
- 웹 서비스 기술 언어(WSDL): 웹 서비스가 무엇을 하는지, 해당 서비스의 시작과 종료 위치를 기술한다.
SOAP API로 전송되는 경우에는 HTTP(웹 브라우저), SMTP(이메일), TCP 등의 다양한 애플리케이션 레이어 프로토콜을 통해 처리될 수 있고 인간과 기계가 모두 읽을 수 있는 XML 데이터 형식으로 메세지를 주고 받는다. 또한 SOAP은 REST와
다르게 브라우저에서 캐시할 수 없으므로 API를 재전송 하지 않은 한 이후에 접근할 수 없다.
REST API란
REST API는 작동 방식에 6가지 원칙을 가지고 있는 아키텍처 스타일로 아래와 같은 원칙을 가지고 있다.
- 클라이언트-서버 간에 서로 기술, 플랫폼, 언어 등이 독립적이다.
- 서버에 클라이언트 요청을 완료하기 위해 함께 동작하는 여러 중개자가 있을 순 있지만 클라이언트에게 보이지 않는 계층화의 특성을 가지고 있다.
- API는 전체적으로 완전히 사용할 수 있는 표준 형식으로 데이터를 반환하는 균일한 인터페이스
- API는 이전 요청과 독립적인 STATELESS
- 모든 API 응답은 캐싱 가능
- 필요한 경우 API 응답에 코드 스니펫 포함 가능(온디멘드 코드)
SOAP과 REST의 유사점
- 애플리케이션이 다른 애플리케이션의 데이터 요청을 작성, 처리 및 응답하는 방식에 대해 규칙과 표준을 설명
- 표준화된 인터넷 프로토콜인 HTTP를 사용하여 정보를 교환
- 안전하고 암호화된 SSL/TLS를 지원함
SOAP과 REST의 차이점
SOAP는 프로토콜이고 REST는 아키텍처 스타일로 SOAP API와 REST API의 동작 방식이 크게 달라진다.
- 설계
SOAP API는 함수 또는 작업을 노출하는 반면 REST API는 데이터 기반. SOAP의 경우에는 수행할 함수를 SOAP 메세지에 포함해야 하지만 REST는 URL로 구분 - 유연성
SOAP 은 애플리케이션간 XML 메세징만 허용하지만 REST의 경우 STATELESS하여 모든 요청을 이전 요청과 독립적으로 다양한(일반 텍스트, HTML, XML 및 JSON ) 데이터로 전송 가능 - 성능
SOAP 은 메시지는 더 크고 복잡하기 때문에 전송 및 처리 속도가 느려지고 이로 인해 페이지 로드 시간이 늘어날 수 있는 반면 REST는 메시지 크기가 작거 캐싱이 가능하여 SOAP보다 빠르고 효율적이다. - 확장성
SOAP 프로토콜을 사용하려면 애플리케이션이 요청 간에 상태를 저장해야 하므로 대역폭과 메모리 요구 사항이 증가해서 애플리케이션 비용이 많이 들고 확장하기가 어려워지고 REST의 경우 무상태 및 계층화된 아키텍처를 허용하므로 확장성이 뛰어난다. - 보안
SOAP를 HTTPS와 함께 사용하려면 추가 WS-Security 계층이 필요합니다. WS-Security는 추가 헤더 콘텐츠를 사용하여 지정된 서버의 지정된 프로세스만 SOAP 메시지 콘텐츠를 읽도록 합니다. 이로 인해 통신 오버헤드가 추가되고 성능에 부정적인 영향을 미치는 반면 REST는 추가 오버헤드 없이 HTTPS를 지원 - 신뢰성
SOAP에는 오류 처리 로직이 내장되어 있으며 더 높은 신뢰성을 제공하는 반면 REST는 통신 장애 발생 시 다시 시도해야 하며 안정성이 떨어진다.
차이점 요약
SOAP | REST | |
의미 | Simple Object Access Protocol | Representational State Transfer |
무엇인가 | 애플리케이션 간 통신을 위한 프로토콜 | 통신 인터페이스를 설계하기 위한 아키텍처 스타일 |
설계 | 작업을 노출 | 데이터를 노출 |
전송 프로토콜 | 독립적이며 모든 전송 프로토콜과 함께 작동할 수 있다. | HTTPS에서만 작동 |
데이터 형식 | XML 데이터 교환만 지원 | XML, JSON, 일반 텍스트, HTML을 지원 |
성능 | 메시지가 커서 통신 속도가 느림 | 작은 메시지와 캐싱 지원으로 더 빠름 |
확장성 | 어려움 서버는 클라이언트와 교환한 이전 메세지를 모두 저장하여 상태 유지 |
쉬움 STATELESS하여 모든 메세지가 이전 메세지와 독립적 |
보안 | 추가 오버헤드가 있는 암호화를 지원 | 성능에 영향을 주지 않고 암호화를 지원 |
사용 사례 | 레거시 애플리케이션 및 프라이빗 API에서 유용 | 최신 애플리케이션 및 공개 API에서 유용 |
출처SOAP와 REST 비교 - API 기술 간의 차이점 - AWS (amazon.com)
SOAP와 REST 비교 - API 기술 간의 차이점 - AWS
Amazon Web Services(AWS)는 API 요구 사항을 지원하는 Amazon API Gateway를 제공합니다. API Gateway는 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안 유지할 수 있도록 하는
aws.amazon.com
REST vs SOAP: REST와 SOAP 개념, 특징, 차이점, 장단점 비교 (redhat.com)
REST vs SOAP: REST와 SOAP 개념, 특징, 차이점, 장단점 비교
REST와 SOAP가 사용 사례와 요구사항을 충족시키는 방식을 상세히 비교하여, 기술 전문가들이 어떤 상황에서 어떤 프로토콜을 선택하는 것이 적합한지 제시합니다.
www.redhat.com
'개발상식' 카테고리의 다른 글
RESTful API란 (0) | 2024.01.24 |
---|---|
Web Storage - Local Storage, Session Storage (0) | 2021.05.10 |
대칭키와 비대칭키(공개키) (0) | 2021.05.06 |
보일러플레이트(boilerplate)란 (0) | 2021.01.28 |
Hash란 (0) | 2020.12.21 |