대량의 자원들이 인터넷으로 올라가면서 자원 식별해서 만들기, 삭제, 변경, 가져오기와 같은 작업을 효과적으로 수행하게 할지가 중요한 이슈가 됐다. 이 작업은 단순히 효율적이어야 할 뿐만 아니라 높은 상호운용성도 제공을 해야 했다. 서비스와 서비스가 서로 엮이면서, 다른 서비스의 자원도 가져다가 사용해야 하는 경우가 자주 발생하는데 각 서비스마다 서로 다른 형태의 작업식별및 작업명령 체계를 가직 있다면 웹 애플리케이션의 개발이 힘들어질 것이기 때문이다.
이렇게 인터넷에서의 자원에 대한 접근과 작업을 효과적으로 수행하기 위해서 나온 툴이 SOAP(Simple Object Access Protocol)과 REST이다. 정확히 말하자면 SOAP는 프로토콜이고 REST는 아키텍처모델이다. REST 아키텍처 모델을 따르는 웹 서비스를 우리는 RESTful 웹 서비스라고 부른다.
SOAP는 공식(표준)프로토콜로 엄격한 규칙과 ACID 준수, 권한부여와 같은 다양한 기능을 제공한다. 복잡한 내용을 전달하기 위해서 XML을 사용하고 있다. 복잡성이 커지면서 더 많은 대역폭과 더 많은 컴퓨팅자원이 필요해지게 되면서 지금은 (더 유연한)REST 방식을 많이 사용하고 있다.
REST는 HTTP 프로토콜로 작업을 요청하는 아키텍처 모델이다. REST는 URI 메서드를 이용해서 작업의 내용을, URI PATH로 작업할 자원을 명시한다.
파일을 업로드/다운로드 할 수 있는 클라우드 스토리지 서비스가 있다고 가정해보자. 이 웹서비스는 https://api.example.com/file/item3와 같은 API를 제공 할 수 있을테고, 메서드에 따라서 작업이 결정된다.
GET https://api.example.com/file/item3 : item3 파일을 다운로드 한다.
POST https://api.example.com/file/item3 : item3 파일을 업로드 한다.
PUT https://api.example.com/file/item3 : item3 파일을 업데이트 한다.
DELETE https://api.example.com/file/item3 : item3 파일을 삭제한다.
GraphQL
SOAP, REST
참고
SOAP / RESTful 기반 웹서비스 비교
Recent Posts
Archive Posts
Tags