'Computer/웹관련'에 해당되는 글 26건

  1. 2008.10.05 RESTful Web Service 개요 #1
반응형
1. Web 과 REST(Representational State Transfer)
 웹은 단순하고 쉽게 이용이 가능하기 때문에 분산 프로그래밍 환경에 적합하다. 기본적인 웹 기술들은 HTTP Protocol과 URI Naming standard 및 XML Markup language로 구성되며 웹은 단순하며 모든 곳에 적용이 되도록 디자인 되어 있다. 초기에 웹은 Addressability와 Statelessness의 특성을 가지고 있었으며 이후 URI 이름 규칙과 XML의 변형인 HTML이 추가되었다.
 현재 가장 많이 사용되고 있는 웹 서비스는 SOAP과 같은 HTTP를 이용한 RPC(Remote Procedure Call)이 주를 이루고 있으며 실제로 이들 웹 서비스들은 웹의 특성들(즉 웹이 성공한 원인)과는 관련이 없는게 현실이다. 즉 RPC over HTTP 인 형태로 웹 서비르가 제공 되고 있는 것이다.
 Representational State Transfer는 웹의 원리로써 Object-Oriented Programming과 같이 특정 Architecture가 아니며 Architecture를 판단하는 방법이다. OOP언어를 가지고 OO 형태로만 사용되지 않듯이 REST의 특성을 지닌 HTTP를 사용한다고 하여 RESTful한 웹 서비스라고 할수 없다.

2. ROA(Resource Oriented Architecture) and REST
 ROA는 내부의 데이터를 Document processing interface로 노출하는 아키텍춰이다. 이에 비해 RPC의 경우 내부 알고리즘을 Program언어의 형태인 API로 노출하는 아케텍춰이다. RPC가 호출하고자 하는 함수 즉 알고리즘에 대한 API Spec로 정의 되는 반면에 ROA는 처리하고자 하는 데이터에 대한 위치와 처리 메소드로 정의가 되는 것이다.
 웹 서비스 디자인에 있어서 ROA는 RESTful한 Architecture라고 볼수 있다. 물론 ROA가 유일한 RESTful한 Architecture라고 이야기 할수는 없다.

3. Programmable Web의 기초인 HTTP
 Programmable web은 HTTP와 XML에 기초하지만 기본적으로 Web은 HTTP에 기초한다. 즉 HTTP가 가장 중요하다는 의미. HTTP는 document-based 프로토콜로 클라이언트는 봉투에 문서를 넣고 서버에 보내며 서버에서는 역시 봉투에 문서를 넣고 클라이언트에게 응답을 한다. HTTP는 HTTP Request와 HTTP Response로 구별된다.
3.1 HTTP Request
 HTTP Request는 다음으로 구성된다.
 - The HTTP Method
 - The path
 - The request headers
 - The entitiy-body (document, representation)
3.2 HTTP Response
 HTTP Response는 다음으로 구성된다.
 - The HTTP response code
 - The response headers
 - The entityr-body (document, representation)

4. 웹서비스의 디자인 이슈
4.1 Method information
 이는 어떻게 클라이언트가 자신의 의도를 서버로 전달하는가에 대한 이슈이다. RESTful한 웹 서비스는 HTTP Method를 이용하여 표준화된 방법으로 의도를 전달한다. 즉 GET의 경우 조회, PUT은 변경, POST는 Create, DELETE는 삭제등이다.
 이에 비해 SOAP의 경우 의도는 SOAP 메시지 안에 구현되어 있으며 이는 HTTP POST 방식에 의해서 전달된다.
4.2 Scoping information
 Scoping은 4.1의 의도에 대한 대상이라고 이야기 할수 있다. 웹 브라우저는 의도에 대한 대상의 표현으로 URI를 사용하며 이는 REST에서도 마찮가지이다. 이에 비하여 SOAP의 경우는 HTTP entity-body에 scoping 정보를 넣게 된다.

5. Architecture 비교
5.1 RESTful, Resource-Oriented Architectures
 HTTP method를 Method information으로 URI를 Scoping information으로 사용한다.
5.2 RPC-Style Architectures
 Method/Scoping Information이 HTTP entity-body내에 삽입되며 HTTP는 단순히 전달 프로토콜로만 사용된다. HTTP Method는 무의미해짐
5.3 REST-RPC hybrid architectures
 Read-Only 웹서비스의 경우는 RESTful하고 Resource oriented 하나, 변경/생성/삭제의 경우 HTTP method와 일치하지 않는 경우로 대표적으로 flicker의 API를 들수 있다. 즉 GET을 이용한 method=flicker.phtos.search 의 경우 RESTful하지만 또한 GET을 이용한 method=flicker.photo.delete의 경우에는 RPC Style이 되는 것이다.

[이 포스트의 내용은 Restful web service의 책의 내용을 요약/재구성한 것임]
반응형
Posted by alias
,