상세 컨텐츠

본문 제목

REST(Representational State Transfer)에 대해서

Ruby on Rails

by 사람사는 세상 만들기 2007. 2. 13. 18:16

본문

반응형
세미나에서 들은 REST라는 단어가 루비온레일즈 관련 사이트에 보이길래 링크를 따라와 봤다. 아마존의 서비스 70%가 REST라고 웹2.0세미나에서 들었는데, REST라는 서비스의 구체적인 내용을 몰라서 또 따라쟁이를 하다가.... ^^

김중훈님의 블러그를 인용했습니다.


Representational State Transfer(REST)


REST란 대규모 네트워크 시스템을 위한 아키텍처로 2000년 Roy Fielding의 박사 학위 논문에서 처음 제안되었다. REST는 원래 웹과 같은 대규모 네트워크 시스템을 위한 원칙들의 모음을 말하는 것이지만, 요즘에는 XML과 HTTP를 사용하는 단순한 웹 기반 인터페이스(즉, REST의 원칙을 따르는 Web Services)를 지칭하기도 한다.>


REST는 웹이 지금과 같이 전세계적인 규모의 성공을 이룰 수 있었던 것은 웹이 다음과 같은 특징을 가졌기 때문이라고 주장한다.

  - 상태를 유지하지 않는 클라이언트/서버 구조를 가진다.

  - 작고 어디에서나 적용되는 인터페이스를 가진다. (e.g., GET, POST, PUT, DELETE)

  - 모든 자원은 URI를 이용하여 유일하게 지칭될 수 있다.

  - 자원들의 표현(Representation)들이 URI을 통해 서로 연결되어 있다.

이와 같은 특징으로 인해 웹 서버와 웹 클라이언트의 종류에 상관없이 URI만 알면 HTTP GET과 같은 인터페이스를 이용하여 간단히 해당 자원에 접근할 수 있다.


Representational State Transfer은 잘 디자인된 웹 어플리케이션이 어떻게 동작하는 지에 대한 이미지를 떠올리게 하가 위한 용어이다. 웹 페이지들의 네트워크가 있고 사용자가 링크를 선택하면 다음 페이지가 보여진다. 즉 웹을 Virtual State Machine이라고 생각하면 링크를 선택함으로써 State가 변하고 Next State Representation(다음 페이지)가 보여지게 된다.


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


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


REST
의 현황


웹은 수많은 행위자들이 상호작용하는 시스템 중 가장 성공한 예이다. 그러므로 유사한 시스템에서 REST모델은 가치 있는 프레임워크를 제공해 줄 수 있다.REST와 가장 비교되는 모델은 Remote Procedure Call(RPC)모델 이다. RPC모델은 로컬 프로그래밍 모델의 함수 호출 형식을 네트워크 시스템에 적용시킨 것이다. REST의 성공과 DCOM, CORBA, RMI와 같은 기존 RPC모델의 실패는 REST가 큰 스케일의 네트워크 시스템에 적합하다는 것을 의미한다.

그러나 모든 웹 application들이 Stateless 와 Uniform Interface 라는 특성을 충분히 따르기에는 현실적인 어려움이 많으므로 당분간은 순수한 REST가 일반적인 웹 개발의 패러다임으로 자리잡지는 못할 것으로 보인다.


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


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

반응형

관련글 더보기