REST란 무엇인가?
REST는 Representational State Transfer의 약자이다. - 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든것들을 의미한다. URI를 통해 자원(Resouce)을 명시하고 HTTP Method(GET, POST, PUT, PATCH, DELETE 등)를 통해 해당 자원에 대한 CRUD를 적용하는 것을 의미한다. |
REST 아키텍처에 적용되는 6가지 제한조건
클라이언트/서버 구조 : 일관적인 인터페이스로 분리되어야 한다. 무상태(stateless) : 각 요청 간 클라이언트의 콘텍스트가 서버에 저장되어서는 안된다. 캐시 처리 기능(Cacheable) : WWW에서와 같이 클라이언트는 응답을 캐싱할 수 있어야 한다. 계층화(Layered System) : 클라이언트는 보통 대상 서버에 직접 연결되었는지, 중간 서버를 통해 연결되었는지 알 수 없다. 중간서버는 로드밸런싱 기능이나 공유캐시 기능을 제공함으로서 시스템 규모 확장성을 향상시키는데 유용하다. Code on Demand(optional) : 자바 애플릿이나 자바사크립트의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송하여 기능을 확장시킬 수 있다. 인터페이스 일관성 : 아키텍처를 단순화시키고 작은 단위로 분리함으로써 클라이언트-서버의 각 파트가 독립적으로 개선될 수 있도록 해준다. |
REST 구성
자원(Resource) - URI 행위(Verb) - HTTP Method 표현(Representations) |
REST API란
REST API는 REST 아키텍처 스타일을 따라서 만든 API이다. 그렇지만 REST API의 정확한 표준이 존재하지 않기때문에 일괄적이지가 않으며, 사용할 수 있는 메소드가 제한적이라는 단점이 있다. |
REST가 나온 이유
REST는 Representational State Transfer라는 용어의 약자로서 2000년도에 로이 필딩 (Roy Fielding)의 박사학위 논문에서 최초로 소개되었다. 로이 필딩은 HTTP의 주요 저자 중 한 사람으로 그 당시 웹(HTTP) 설계의 우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워하며 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표했다. |
REST가 나온이유는 확장성과, 분산시스템, 데이터 소모량감소이다. 초기에는 웹 브라우저에서 SPA에서 AJAX가 아닌 HTML을 전달하는 과정이 계속되었다. 브라우저만 있었으니 크게 상관은 없었을 것이라고 생각한다. 그렇지만 문제는 웹 브라우저 외의 클라이언트 들이다. 예를 들어 모바일 애플리케이션의 경우 작은 변화에도 html을 계속 받으려니 데이터낭비가 심했다. 그래서 바뀌는 부분만을 적용하기 위해 필요한 데이터만 주고받으려고 rest api가 나오게 되었다. (그로인해 데이터 소모량이 줄어들었다.) 또한 하나의 restapi서버를 만듬으로 인하여 웹브라우저만이 아니라 모바일 애플리케이션까지 담당할 수 있게 되었다. (필요한 데이터만 보내면 되니까) 또한 서버도 요청한 데이터만을 보내주면 되기때문에 가벼워지고 유지보수성이 좋아졌다. |
SOAP란?
SOAP(Simple Object access Protocol)는 XML기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜이다. 보안이나 메시지 전송 등에 있어서 REST보다 더 많은 표준들 정해져 있기때문에 좀더 복잡하다. 이러한 표준들로 인한 오버헤드가 많지만 보안, 트랜잭션 ACID(원자성, 일관성, 고립성, 지속성)을 준수해야 하는 보다 종합적인 기능이 필요한 조직에게는 적합한 방식이 될 수 있다. SOAP는 보안수준이 엄격하다. SOAP는 SSL과 WS-Security라는 자체 표준의 보안 기능도 가지고 있다. 따라서 은행처럼 보안수준이 높아야 하거나 신뢰할 수 있는 메시지앱, ACID를 준수해야 한다면 SOAP방식이 선호된다. SOAP 표준에는 성공/반복 실행 로직이 규정되어 있기때문에 SOAP API를 통해 통신을 할 때 처음부터 끝까지 신뢰성을 제공한다. ACID를 준수하기 때문에 데이터의 변형을 줄여주고 데이터베이스와의 상호작용에 대해서 사전에 정확하게 정하기 때문에 데이터의 무결성을 지켜준다. |
SOAP VS REST의 핵심적인 차이들
출처 : https://ko.wikipedia.org/wiki/REST
https://slides.com/eungjun/rest#/
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
https://meetup.toast.com/posts/92
https://meetup.toast.com/posts/92
'기타' 카테고리의 다른 글
AWS EC2(ubuntu) Nginx Django와 연결하기 (0) | 2020.08.24 |
---|---|
LoadFactor란 무엇인가? (0) | 2020.08.21 |
ubuntu(AWS EC2)에서 원하는 Python버전 다운받기 (0) | 2020.08.01 |
뷰인터 사용후기(AI 면접) (0) | 2020.07.02 |
마크다운 명령어, 정리 (0) | 2020.04.22 |
댓글