4,547,767 th visitor since 2017.2.1 ( Today : 4159 )
Computer ???
No. 308
Name. swindler
Subject. REST (REpresentational State Transfer)
Main Cate. Internet일반
Sub Cate.
Date. 2008-10-08 09:58
Hit. 4777 (210.182.190.136)
File.
Representational State Transfer(REST)

REST는 Rob Fielding이 2000년 발표한 웹 시스템 구조(분산된 하이퍼미디어 시스템을 위한 아키텍쳐 스타일)를 말한다.
Rob Fielding은 HTTP 스펙을 만든 사람 중 한 명으로 그 명성에 걸맞게 REST 는 매우 체계적으로 잘 정리된 구조이다.

REST 구조는 웹 본연의 특성과 장점을 최대화 하기 위해서 브라우저와 웹서버, 웹 어플리케이션, 캐쉬등이 어떻게 구성되고 동작해야 하는 지를 기술하고 있다.

Resource 와 Resource identifier 용어 설명

resource 는 웹이 제공하는 모든 정보/데이터를 의미한다.
예: 파일, 이미지, ‘나의 구매 책 리스트’
또 모든 resource 에 대해서는 그에 대한 링크인 resource identifier가 있다.
예: URI, URL

“REST” 의 의미

Representational State Transfer

브라우저와 같은 웹 클라이언트는 URL link 와 같은 resource identifer를 통해 resource 에 대해 어떤 요청을 하고 그 결과를 받게 된다. 이러한 요청 결과는 브라우저 화면에 새로운 내용이 디스플레이 되는 등의 방식으로 표현된다. 즉, 이 과정을 통해서 브라우저 표현 상태(Representational State)의 변경(Transfer)을 유발하게된다. REST는 이러한 특성을 표현한 용어이다.

REST 구조의 특징

Rob Fielding은 REST 구조를 요약해서 Uniform-Layerd-Client-Cache-Stateless-Server 라고 표현하였다. 여기에 표현된 내용들을 하나씩 살펴보면 다음과 같다.

resource 에 대한 요청하고 제공하기 위한 구조는 기본적으로 Client, Server 구조를 따른다.

1.resource에 대한 interaction 은 stateless 해야 한다.
브라우저나, 서버가 세션 상태등을 저장하고 있어서는 안되며, 필요하다면 이러한 상태 역시 resource로 표현되고 접근 가능해야 한다.

2.resource 에 대한 요청 결과는 cache 할 수 있다.
client 는 cacheable 이라고 표시된 요청 결과들을 나중을 위해 저장해 둘 수 있다.

3.client 는 서버에 resource를 요청하기 위해서 uniform interface 를 사용한다.
각 application 마다 어떤 동작(action)을 위해 별도로 정의한 operation을 사용하지 않는다”는 정도로 이해할 수 있다. 예를 들어 SOAP 방식에서는 각 applicatin서 정의한 XML 스키마 속에 데이터와 opertion 을 함께 지정하는 것이 일반적인데 이 것은 RESTful 하지 않다고 볼 수 있다.

4.Rails 1.2 에서 도입된 ActiveResource 의 경우 get, post, put, delete 와 같은 웹 표준 opertion만을 이용하는데 이것이 RESTful 에 더 적합한 방식이다.
Client Server 구조는 여러 단계의 Layered 형태로 구성될 수 있다.

5.client 가 server에 직접 연결되지 않고 중간에 하나 이상의 노드가 존재한다. 이들 중간 노드는 client와 server의 역할을 동시에 수행한다.

위에 설명한 특징들 중에서 1, 3, 5번의 경우에는 기존의 웹에서 이미 적용되고 있거나 혹은 적용에 있어 별 이슈가 없는 내용들이다. 그런데 2, 4번의 경우에는 얘기가 좀 달라진다.

오늘날 대부분의 웹 어플리케이션들은 사용자 인증 또는 상태 정보를 유지하기 위해 쿠키 또는 HttpSession 등을 사용하고 있는데 이것은 REST의 원칙에 명백히 위배되는 방식이다. 또, 웹 서버상의 데이터를 조회하는 것은 물론이고 변경이나 삭제 심지어는 생성을 위해서도 GET method를 사용하는 경우도 매우 많은 것이 사실이다. (서버 사이드의 변경을 유발하는 요청에 대해서는 POST를 사용하는 것이 바람직하며, ActiveResource 에서는 생성을 위해서는 PUT, 삭제를 위해서는 DELETE를 사용한다.)

하지만 현실적으로 여러 사용자에 대한 동적인 정보를 다루는 웹사이트를 쿠키나 세션없이 개발하는 것은 쉬운 일이 아니다. 또 PUT과 DELETE 같은 method는 HTTP 스펙에는 존재하지만 실제 이를 지원하는 브라우저는 많지 않다. (참고로 XMLHttpRequest 에서는 PUT과 DELETE를 지원한다. – Using REST with Ajax )

REST 의 현황

REST의 개념은 이 후 RESTful ,RESTafarian 과 같은 용어를 만들어 낼 정도로 많은 이의 지지를 받았고 아주 빠른 속도는 아니지만 갈 수록 그 열기가 더해 가고 있다.

RESTful 이란 REST 의 개념에 충실하게 구현된 웹 application과 구조를 말하며, RESTafarian 이란 REST 신봉자를 일컫는 말이다. ( REST 토론 그룹 )
그 러나 모든 웹 application들이 Stateless 와 Uniform Interface 라는 특성을 충분히 따르기에는 현실적인 어려움이 많으므로 당분간은 순수한 REST가 일반적인 웹 개발의 패러다임으로 자리잡지는 못할 것으로 보인다.

그런데 최근 관심이 높아지고 있는 분야들인 Open API, Ajax, Rails 와 같은 곳에서 REST라는 용어를 자주 접하게 되는 것은 반가운 현상이다.

앞에서도 언급했지만, DHH는 RESTful 한 ActiveResource 를 통해 새로운 가능성을 제시하고 있다. 또 Amazone, eBay, Yahoo 와 같은 주요 웹 업체들은 대부분 REST 방식의 OPEN API를 제공하고 있으며 ( Amazone 이 제공하는 SOAP, REST 두 가지 방식의 API 중에서 REST API 의 사용율이 85%라는 정보도 소개 된 바 있다) 최근에 Google 이 기존의 SOAP 방식 API의 지원을 중단 하면서 Ajax를 이용한 API를 새로 제공하기 시작한 것도 눈여겨 볼만한 대목이다.

==============================================================

한마디로 웹2.0의 서비스 프로토콜이라고 보시면 될 것 같습니다.

협의의 의미로는 프로토콜로 http만 사용하고 post/get 요구에 대해 xml 형식으로

실행결과를 되돌리는 형태이기 때문에 웹서비스 제공/이용에 있어 쉽게 사용할 수 있는

구조입니다.

자세한 내용은 전자정보센터에서 제공하는 웹2.0 Web서비스 프로토콜 REST의 특징과 활용 현황을 참고하세요!!



[바로가기 링크] : http://coolx.net/cboard/computer/308



Name
Password
Comment
Copyright © 1999-2017, swindler. All rights reserved. 367,611 visitor ( 1999.1.8-2004.5.26 ), 2,405,771 ( -2017.01.31)

  2HLAB   2HLAB_Blog   RedToolBox   Omil   Omil_Blog