RESTful 한 통신 방법에 대하여 깊은 관심이 사실상 없었지만은....
요즘 한창 개발하고 있는 프로젝트에서 아주 중요한 이슈가 생겨버렸다.
화면에서 고객과의 인터렉션이 엄청나게 발생하게 되는것이다.
고객의 마우스 클릭, 드레그 등의 이벤트에 따라 화면이 재구성되어야 하고, 화면의 모든정보들이 실시간으로 반영되어야 하는탓에 3가지 방법으로 풀어보려고 한다.
1. BackBone.js 프론트앤트 프레임워크 도입
2. Spring RESTful 통신
3. memcached 원격 캐슁서버 구축
그중에서 2번째인 RESTful 통신을 구현하기 위해서 구글링으로 찾아본 내용들 정리해 본다.
1. REST?
REpresentational State Transfer
http 통신 프로토콜의 상태를 기반으로 모든 요청을 일종의 자원으로 인식한다. URI
한마디로 REST를 정리하면 HTTP URI + HTTP Method 이다.
URI로 대상 자원을 명시하고 Method로 해당 자원에 대한 행위를 정의한다.
REST의 가장 큰 특징중의 하나가 모든 자원을 Resource 즉 자원으로 표현한다는 것이다.
Resource는 HTTP URL에 의해서 표현된다.
네이버 카페의 junes81 아이디는 http://cafe.naver.com/junes81 라는 일종의 리소스로 표현되는 것이다.
O www.overstock.com/home+and+garden
X www.overstock.com/home+garden.html
X www.overstock.com/products/id=123
O www.overstock.com/products/123
2. REST 행위
! GET – retrieve a resource, 자원조회
! PUT – create a resource, 자원수정
! POST – update (create if necessary) a resource, 자원저장
! DELETE – delete a resource, 자원삭제
! HEAD – 자원메타정보조회
! OPTIONS - 사용가능한 요청 방식조회
! TRACE - 테스트 목적의 데이터 조회
! CONNECT - 연경 요청
3. REST 에서 사용하는 표준
! URI – how resources are named and referenced
! Methods – how resources are manipulated
! HTML, XML, GIF, etc – how resources are represented
! Media types (text/plain, etc) – metadata for representations
4. REST의 장점
기존의 웹 인프라를 그대로 이용할 수 있다.
가장 큰 장점중의 하나일거다. 기존 HTTP를 그대로 사용하기 때문에, Remote Call을 할때도 방화벽을 새로 뚫어야 하느니등의 요건이 없고, L4등의 로드 밸런서 장비들도 그대로 사용이 가능하다.
웹캐쉬 서버를 그대로 사용할 수 있다. 모든 Resource가 URI로 Unique하게 표현되기 때문에, 웹 캐쉬상에 보관될 수 있고,
특히나 SELECT성의 Operation은 이 캐쉬에 의해서 실제 Biz Transaction을 타지 않고 바로 리턴될 수 있기 때문에, 성능과 리소스 활용 측면에서 어마어마한 장점을 가지고 있다.
사실 이부분이 REST 방식을 사용하는 가장 매력적인 부분이라고 생각한다.
5. 참고자료
www.restlet.org
www.xfront.com
www.prescod.net/rest
www.w3.org/DesignIssues/Axioms.html
www.xml.com/pub/a/2004/08/11/rest.html
실제 Backbone.js 와의 연동처리와 Spring 에서 REST 방식을 구현한 부분은 개발 완료 되는데로
스프링3.0 카테고리 게시판에 게시하겠다.