현대 웹 설계사상 중 가장 널리 쓰이는 REST에 대해 이야기 해봅시다.
아키텍처 스타일로서의 REST
REST는 웹의 아키텍처 스타일입니다. 실제 시스템을 짜임새 있게 구현하기 위해서는 일종의 설계 지침, 규정과 같은 법칙을 적용해야 합니다.
아키텍처 스타일이란 아키텍처를 결정할 때 나침반이 되어주는 지침이라 할 수 있습니다.
REST는 수많은 아키텍처 스타일 중 네트워크 시스템을 구축하기 위한 아키텍처 스타일이라 이야기 할 수 있습니다. 네트워크 시스템에서 가장 유명한 아키텍처 스타일로는 클라이언트/서버 구조가 있습니다.
사실 REST는 클라이언트/서버 구조에서 파생된 아키텍처 스타일 중 하나 입니다. 클라이언트/서버 스타일에서 몇가지 제약들을 더해 나가면 REST 아키텍처 스타일을 만들 수 있습니다.
일반적으로 소프트웨어 아키텍처는 여러개의 컴포넌트를 조합하며 구현합니다. 각각의 컴포넌트에 제약을 부과함으로써 각 컴포넌트가 서로 협력하도록 만들고 전체 컴포넌트의 균형을 이루도록 하는 것이 REST가 가지는 의의 중 하나라 볼 수 있을 것입니다.
리소스
REST에 있어 중요한 개념의 하나로 리소스라는 개념이 있습니다.
우선은 웹에서의 리소스 예를 살펴보도록 하겠습니다.
- 먓집 게시판의 신촌 음식점 리뷰
- 본 블로그의 REST 관련 글
- 기상청 사이트의 일기예보
위와 같은 예시는 모두 웹에서 리소스라 불리는 것들 입니다.
한 마디로 웹상에 존재하는 이름을 가진 모든 정보를 의미합니다.
프로그램의 경우엔 동명이인을 구별하지 못하기 때문에 반드시 이름으로 다른 것과 구별될 수 있어야 합니다.
그러므로 리소스는 이름을 가지고 있으며 이 이름은 다른 리소스와는 구별될 수 있어야 합니다.
리소스의 이름: URI
전 세계의 무수한 리소스들은 각각 URI를 가짐으로써 의미있는 이름을 가지게 됐습니다.
URI를 이용하면 프로그램은 리소스가 표현하는 정보에 접근할 수 있게 됩니다.
URI가 가지고 있는 리소스를 간단히 가리킬 수 있는 성질을 Addressability라 부릅니다.
1개의 리소스는 여러개의 URI를 가질 수 있습니다.
리소스는 여러 형식으로 복수 표현이 가능합니다.
또한, 리소스는 상태라는 것이 존재합니다. 시간의 경과에 따라 리소스의 표현이 달라질 수 있습니다.
위와 같은 경우들을 한개의 URI로 표현될 수 있으며, 여러개의 URI로 나누어 관리할 수도 있습니다.
REST 아키텍처 스타일의 구성
앞서 REST 아키텍처는 서버/클라이언트 모델에 제약을 부과하며 파생시킨 아키텍처라는 것을 간단히 언급했었습니다. 클라이언트/서버에서 부터 REST를 구축하는 과정을 서술해보도록 하겠습니다.
클라이언트/서버
작성중입니다.
스테이트리스 서버
작성중입니다.
캐시
작성중입니다.
계층화 시스템
작성중입니다.
코드 온 디맨드
작성중입니다.
RESTful 한 설계
작성중입니다.
댓글남기기