본문 바로가기

이생각 저생각

[dw Review] REST 서비스

12월16일 목요일에 IBM에서 주최하는 세미나(2011 IT테크놀로지의 재발견)의 발표 주제 중 하나는 REST이다. 사실 REST의 이야기 나온건 꽤 되었는데 한 동안 그냥 그대로 묻혀 있었기 때문에 그닥 범용화 되진 않나보다 라고 생각하고 있다. 플리커라던가 digg정도에서 사용하고 있는데, 그렇다고 해서 뭔가 특별히 우월하다는 느낌을 주는 기술은 아니다. 현재까지는 말이다.

어쨌든 그런 상황에서 세미나의 발표 주제중 하나가 REST라니 급 흥미가 생겼다. 참석전에 (그리고 핑계김에) 선행 학습하는 차원에서 몇가지 사항을 미리 봐두면 좋을 것 같다.

미리 봐두기 #1
한글 위키에 따르면 REST의 정의는 이렇다.

REST (Representational State Transfer)는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다. 이 용어는 로이 필딩(Roy Fielding)의 2000년 박사학위 논문에서 소개되었다. 그는 하이퍼텍스트 전송 프로토콜 (HTTP)의 주요 저자들 가운데 한 사람이다. 그 뒤로 이 개념은 네트워킹 문화에 널리 퍼졌다. 엄격한 의미로 REST는 네트워크 아키텍처 원리의 모음이다. 여기서 네트워크 아키텍처 원리란 리소스를 정의하고 리소스에 대한 주소를 지정하는 방법에 대한 개괄을 말한다.

미리 봐두기 #2

REST의 정의와 구현체 서버/클라이언트인 Apache Wink에 대한 기사들이다. REST를 독립적으로 구현할 때 유용한 이야기들이 나온다. 특히 Apache Wink Part 2에서는 Spring 프레임워크와 함께 사용하는 방법에 대한 내용도 나온다.


미리 봐두기 #3
리팩토링 HTML의 저자 Elliotte Rusty Harold가 쓴 글
Why REST Failed

그리고 그의 인터뷰 내용
Why PUT and DELETE?

4개의 문법 요약
GET은 안전한 기능을 수행하기 위해 사용한다.
POST는 가장 강력한 기능이지만 불안전하게 동작한다.
PUT는 특정 URL에 자원을 생성하거나 업데이트 하는데에 사용된다. PUT 은 안전하진 않지만 대신 멱등성 (idempotence)을 갖는다.
DELETE는 특정 URL의 자원을 제거한다.

REST 발전의 한계
HTML의 FORM 메소드로 PUT, DELETE를 지원하지 않는다.
현재 웹브라우저에서 REST호출을 위해선 XMLHttpRequest (ajax)를 사용 수 밖에 없다.


기타참고.
멱등성(idempotence)은 수학이나 전산학에서 연산의 한 성질을 나타내는 것으로써, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다. 멱등법칙의 개념은 추상대수학(특히, 투영 이론·닫힘 연산·함수형 프로그래밍의 참조 투명성과 연관된 성질에서)의 여러 부분에서 사용하고 있다.

아직까지는 URI를 이용한 리소스 표시를 제외하고는 특별히 REST에서 이야기 하는 내용의 장점은 잘 모르겠다. 그래서 세미나 발표에서 어떤 이야기가 나올지 기대된다. :)