REST: Representational State Transfer
ABSTRACT OF THE DISSERTATION
- 월드 와이드 웹은 큰 성공을 이뤘고, 이젠 모던 웹 아키텍처를 가이드하기 위한 모델이 필요하다.
- 이 연구는 네트워크 기반 어플리케이션의 설계를 이해하고 평가함으로써 아키텍처의 기능적, 성능적, 사회적 요구를 분석하기 위해 시작됐다.
- 이 논문에서는 Representational State Transfer (REST) 아키텍처 스타일을 소개하며, REST가 모던 웹 아키텍처의 개발과 설계를 어떻게 가이드할 수 있는지 설명할 것이다.
- REST는 컴포넌트 상호작용의 확장성, 인터페이스의 범용성, 컴포넌트의 독립된 배포, 상호작용 레이턴시를 줄이는 중계 컴포넌트, 보안, 레거시 시스템 캡슐화를 강조한다.
- 마지막으로 Hypertext Transfer Protocol(HTTP)과 Uniform Resource Identifier(URI)에 REST를 적용하며 배운 교훈에 대해 설명하겠다.
INTRODUCTION
- 아키텍처는 90년대 소프트웨어 공학 연구의 중심이 되었다. 좋은 아키텍처는 진공 상태에서 만들어지지 않는다. 아키텍처 레벨의 모든 설계는 기능적, 사회적 요구 맥락에 맞춰 결정되어야 한다.
- 지난 수백년간의 프로젝트 실패 경험으로부터 "형태는 기능을 따른다"라는 원칙이 만들어졌지만, 소프트웨어 실무자들은 종종 이 원칙을 무시한다.
- 처음 세 챕터에서는 이키텍처를 이해하기 위한 프레임워크를 정의하고, 챕터 4에서는 웹 설계의 요구사항에 대해 논의한다. 챕터 5에서는 하이퍼 미디어 시스템을 위한 REST 아키텍처 스타일에 대해 자세히 소개할 것이다.
CHAPTER 1. Software Architecture
- 연구 분야로서의 소프트웨어 아키텍처에 대한 관심에도 불구하고, 연구자들 사이에는 아키텍처 정의에 어떤 것을 포함해야 하는지에 대한 의견 일치가 거의 없다.
- 이 챕터에서는 소프트웨어 아키텍처에 대한 일관된 용어를 정의한다.
1.1. Run-time Abstraction
- 소프트웨어 아키텍처는 시스템이 운영되는 일부 단계의 런타임 요소들을 추상화한 것이다. 시스템은 각각의 아키텍처에 따라 여러 부분에서 여러 계층으로 추상화될 수 있다.
- 소프트웨어 아키텍처의 심장은 추상화 원칙이다. 복잡한 시스템은 더 많은 계층으로 추상화될 것이다.
- 시스템은 구동, 초기화, 처리, 재초기화, 정지와 같은 여러 운영 단계를 거치며, 각 운영 단계는 자신의 아키텍처를 가진다.
1.2. Elements
- 소프트웨어 아키텍처는 아키텍처 요소(컴포넌트, 커넥터, 데이터)의 구성과 관계의 제약으로 정의된다.
- 컴포넌트(Component): 명령과 인터페이스를 통한 데이터 변환을 제공하는 내부 상태의 추상 단위.
- 커넥터(Connector): 컴포넌트 간의 통신, 조정 또는 협력을 매개하는 추상 매커니즘.
- 데이터(Datum): 컴포넌트가 커넥터를 통해 수신하는 정보.
1.3. Configurations
- 구성은 시스템 런타임 동안 이뤄지는 아키텍처 요소 사이의 관계 구조다.
1.4. Properties
- 소프트웨어 아키텍처의 속성 집합은 컴포넌트, 커넥터, 데이터에서 파생되는 모든 특성을 포함한다.
- 속성은 아키텍처의 제약 집합에 의해 유도된다.
1.5. Styles
- 아키텍처 스타일은 요소들의 역할과 기능을 제한하는 제약 집합으로 이뤄진다.
- 서로 다른 시스템의 아키텍처를 직접 비교하는 것은 어려운 일인데, 스타일은 아키텍처의 일반적인 성격을 정의하고 분류하는 매커니즘이다.
참고자료
- 김동범, “REST API 제대로 알고 사용하기”, TOAST Meetup, 2016.
- 이응준, “그런 REST API로 괜찮은가,” in 10th DEVIEW, Nov. 2017.
- R. T. Fielding, “Architectural Styles and the Design of Network-based Software Architectures”, Ph.D. dissertation, Dept. Inf. and Comput. Sci., Univ. California, Irvine, USA, 2000.
이 문서를 인용한 문서
- 주제문서
- 『Hypermedia Systems』
-
이제 Roy Fielding의 REST 이야기를 해보자:
-