Tech

RESTful 이란?

source : google image

Resource = URL

REST, RESTful이란 개념을 한마디로 정의한다면 위와 같이 정의할 수 있을 것 같습니다. 리소스의 구조자체가 URL이다. 즉, 웹서비스에 있는 리소스의 구조적 상태(자원의 구분과 수행하려는 동작 등)를 URL에서 인지할 수 있는 것입니다. 여성들을 대상으로 기술적인 개념을 좀더 쉽게 전달하고자 하는 Skillcrush에서는 REST라는 개념을 아래와 같이 정의하고 있습니다.

REST is a set of simple rules for how to organise and transmit information on the internet

REST란 인터넷의 정보를 조직하고 전송하는 간단한 규칙의 조합, 좀 설명이 어려운가요?^^

사실 REST의 실제 의미는 Representational State Transfer의 줄임말로써 표현 가능한 상태 전송이란 뜻을 가지고 있습니다. 앞서 말씀드린 것과 같이 데이터베이스에서 정보를 가지고 오고 이를 다시 구조화거나 처리하여 사람들에게 서비스로 제공할텐데 이러한 구조가 서비스 제공자들마다 다른 구조를 가지고 있고 유지보수가 용이하지 않기때문에 좀더 보편적이고도 URL을 보고도 쉽게 어떤 것을 의도하려 하는가 알 수 있는 구조가 필요했던 것 같습니다. 이러한 관점에서  REST는 직관적이고도 보편적으로 적용가능한 어떠한 액션을 수행하려고 하고 무슨 개체에 대한 작업을 하려고 하는지 쉽게 이해할 수 있죠.

좀더 깊게 들어가보면 REST가 주창하는 개념은 컴퓨터 세상에서 모든 것이 리소스가 될수 있다는 것입니다. 사람들이 찍은 사진, 비디오, 혹은 여러 문서들이 모두 인터넷에서 유통될 수 있고 가공될 수 있는 것이죠. 이렇게 볼때 웹이라는 것은 리소스들을 표시하는 전체 모음이 될수 있습니다. 그런데 다시 생각해보면 이러한 정보를 제공하는 주체는 우리가 흔히 알고 있는 ‘웹사이트’가 아닌가 하고 생각할 수 있습니다. 맞습니다. 우리는 매일 네이버, 다음과 같은 웹사이트를 접근하고 이들이 주는 여러 링크들을 클릭하고 들어가서 사진을 보고 기사를 읽으며 다시 댓글, 추천 등의 액션을 취하게 되죠. 이러한 표시들은 크게 두가지 포맷으로 나뉘어 집니다. 사람들이 볼 수 있는 1) 웹페이지(흔히 HTML이라는 합니다.)와 기계들이 이해할 수 있는 2) 데이터 파일(XML이라고 부르죠). 모든 웹페이지의 자원들은 이 둘을 아우르며 우리가 항상 접근하고 찾을 수 있는 ‘URL’이란 것을 가지고 있습니다. 즉, 존재하는 정보(HTML, XML)에 위치정보가 있는 URL 이란 것을 통해 사람과 기계는 정보를 접근하고 가공할 수 있는데 정보를 가공한다는 것은 읽고, 쓰고, 수정하고 삭제하는(CRUD: Create, Read, Update, and Delete) 4가지 행위를 수행하게 됩니다. 그래서 이러한 4가지 리소스 가공행위와 리소스의 위치를 나타내는 URL을 합치면 우리는 어떠한 리소스에 어떠한 액션을 취하려 하는가 눈에 들어날 수 있다는 것이죠. 엔지니어들로 하여금 직접적으로 데이터베이스에 접근하지 않으면서도 현제 수행하려고 하는 대상과 동작에 대해서 가시적으로 이해할 수 있다는 것입니다.

가령 A라는 모델의 100번째 데이터를 수정한다고 한다면 기존의 웹서비스에서는 웹사이트마다 다를 수는 있겠지만 아래와 같은 모습일수 있지 않을까 생각됩니다.

http://hostname/service/update.jsp?model=A&id=100

물론 변수가 아닌 다르게 처리할수도 있겠지만 좀 복잡해보일 수 있는 것이 사실이죠. REST개념을 적용한다면 아래와 같이 표혀할 수 있습니다. 복잡해지더라도 이해하기에는 쉬운것이 사실입니다. 물론 그것을 구조화해서 내부적으로 돌아가게끔 설계한다는 것이 어려울수는 있지만요.^^

http://hostname/service/A/100/edit ( updated 2014/06/09, edit은 URI로는 적절치않다고 하여 아래와 같이 변경)

http://hostname/service/A/100

사실 REST라는 것은 Roy Fielding이란 박사의 2000년 논문에 인용된 것으로써 상당히 심플하고 인터넷의 리소스를 표준가능하게 핸들링할 수 있는 방법이었지만 기술적으로는 혼돈 스러웠다고 합니다. 그러나 최근에 운좋게도 많은 서비스들이 쉽고 협업가능하게 만들어가려는 움직임에 REST가 좋은 대안이 된것 같습니다. 그리고 트위터, 그루폰 등이 이러한 REST구조를 서비스 설계시에 적용했고 앱, 웹 등의 여러 기기와의 서비스 연동을 위해 설계구조로 많이 활용되고 있습니다. 국내같은 경우는 미투데이, 카카오톡도 Ruby on Rails를 통해 이러한 REST구조를 적용하고 있구요. 오늘은 간단하지만 조금은 설명하기 쉽지 않았던 REST에 대해 정리해보았습니다. 궁금하신 분들은 언제든지 댓글이나 트위터, 이메일로 말씀해주세요.

Posted by JW

5 thoughts on “RESTful 이란?

댓글 남기기