Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

REST를 여러분의 앱 안에서 사용하기 위해 필요한 모든 것


Recommended Posts

Victory Fernandes"Everything You Need To Use REST In Your Apps Now" 을 번역했습니다. (원문 작성: 2022년 1월, 최종 번역: 2024년 1월)

목차


REST는 무엇이며, 왜 알아야 하는가?

REST는 소프트웨어 아키텍처의 한 유형이다. 이것은 인터넷에 있는 서로 다른 컴퓨터 시스템 사이의 상호 운용성을 보장하기 위해 설계되었다. 그 기본 개념은, REST 아키텍처를 준수하는 서비스들끼리 서로 더 쉽게 통신할 수 있도록 하겠다는 것이다. 우리가 설계하는 앱이 무엇이든 관계없이, 즉 모바일 앱, 리눅스, 맥OS, 순수 네이티브 윈도우 개발 등등 그 어떤 것이든 REST를 적용할 수 있다.

REST는 Representational State Transfer(상태를 그대로 표현하여 전송하기)의 약어다. 컴퓨터 과학자인 Roy Fielding는 2000년 그의 박사 학위 논문인 '아키텍처 스타일과 네트워크 기반 소프트웨어 아키텍처 설계(Architectural Styles and the Design of Network-based Software Architectures)' 에서 REST를 정의하고 설명했다.

REST의 목표는 성능, 확장성, 간결성, 변경가능성, 가시성, 이식성, 신뢰성을 향상시키는 것이다. 이 목표를 달성하려면 REST 원칙들을 준수하면 된다. REST 원칙에는 클라이언트-서버 아키텍처, 상태 없음(statelessness), 캐시 가능성(cacheability), 계층화 된 시스템 사용, 주문형 코드(code on demand) 지원, 일원화된 인터페이스 사용 등이 있다. 

Roy Fielding의 REST에 관한 박사학위 논문 원본은 어디에서 다운로드할 수 있나?

여기에서 Roy Fielding의 2000년 박사 학위 논문 원본의 전체를 볼 수 있다!

오래전부터 Fielding는 웹의 초기 개발과 표준화에 깊이 관여해 왔다. 그가 월드 와이드 웹 컨소시엄(World Wide Web Consortium)을 위해 그곳에서 일하기 시작한 것은 1994년이다. 또한 그는 HTTP 1.0 스펙의 공동 작성자이기도 하다. 이후 HTTP 1.1과 URI 스펙에도 주요 작성자로 참여했다. 또한 아파치(Apache) 웹 서버 프로젝트의 공동 설립자이기도 하다.

'REST(Representational State Transfer)'라고 이름을 지은 이유는, 잘 설계된 웹 애플리케이션이 어떻게 동작해야 하는지 그 이미지를 깨달을 수 있도록 하기 위해서이다: 즉, 웹 페이지들이 연결된 하나의 네트워크 (즉 하나의 가상 상태-장비, virtual state-machine) 안에서는, 사용자가 진행을 하는 방식이 다음과 같다. 사용자는 링크들을 선택함으로써 신청을 한다(state transitions, 상태 전이). 그러면 그 결과로 그 다음 페이지(그 신청의 다음 상태)가 전송된다. 그리고 렌더링되어 그 사용자가 사용할 수 있게 된다. 

Fielding 박사의 접근 방식은, REST 아키텍처 스타일이 다음 사항을 강조한다는 점을 분명히 하기 위한 것이었다: 컴포넌트 간 상호 작용의 확장성, 인터페이스들을 일원화, 컴포넌트들을 독립적으로 배포, 계층화된 아키텍처 만들기 등을 통해 컴포넌트들의 캐싱을 용이하게 하고, 이를 통해 사용자가 감지하는 대기시간을 줄이고, 보안을 강화하며, 레거시 시스템을 캡슐화하는 것을 말한다.

서로 다른 이 REST 용어들의 각 의미는?

하위 수준에서 어떻게 구현해야 하는지에 대해서는 REST가 어떠한 규칙도 강제하지 않는다. 단지 상위 수준의 설계 지침을 제시할 뿐이며, 구현은 사용자가 스스로 생각할 수 있도록 내버려 둔다. 이제 살펴볼 것은 6 가지 아키텍처 제약 조건들에 대한 정의이다. 웹 서비스가 진정한 RESTful API가 되려면 이 조건들을 지키면 된다.

  • 클라이언트-서버: UI 문제와 데이터 저장 문제를 분리함으로써, UI의 이식성을 여러 플랫폼에서 향상시킨다. 그리고 서버 컴포넌트들을 단순화함으로써 확장성을 향상시킨다.
  • 상태 없음(statelessness): 클라이언트에서 서버로 가는 각 요청은 반드시 해당 요청을 이해하는 데 필요한 모든 정보를 담고 있어야 한다. 또한 서버에 저장된 어떤 컨텍스트도 활용해서는 안된다. 그 결과, 세션 상태는 완전히 클라이언트 안에서만 유지한다.
  • 캐시 가능(Cacheable): 캐시 제약 조건은 다음과 같다 - 요청에 대한 응답 안의 데이터에는 그것이 캐시 가능(cacheable) 또는 캐시 불가(non-cacheable)인지를 지정하는 표식이 암묵적 또는 명시적으로 붙어 있어야 한다. 만약 캐시 가능한 응답이라면, 클라이언트 캐시에 권한이 부여되어 해당 응답 데이터를 이후의 동일한 요청에 다시 사용할 수 있다.
  • 일원화된 인터페이스: 소프트웨어 엔지니어링의 원칙인 '일반성(generality)'을 컴포넌트 인터페이스에 적용함으로써, 시스템 아키텍처 전반을 단순화한다. 그리고 상호 작용의 가시성을 향상한다. 일원화 된 인터페이스를 실현하려면, 아키텍처 제약 조건 여러 가지를 제시해야 한다. 그것들은 컴포넌트의 동작에 대한 지침이 된다. REST에 정의된 인터페이스 제약 조건은 네 가지이다; 즉, 리소스 식별(identification), 표현(representation)을 통한 리소스 조작, 자기-설명적(self-descriptive)적 메시지, 신청 상태의 엔진 역할을 하는 하이퍼미디어이다.
  • 계층화 된 시스템: 계층화 된 시스템 스타일을 사용하면, 각 컴포넌트는 자신이 상호 작용하는 인접 계층 바깥에 있는 것을 '볼 수' 없도록 컴포넌트 동작을 제한한다. 그 결과, 각 층(layer)들로 구성된 계층형 아키텍처를 가지게 된다.
  • 주문형 코드(code on demand,선택 사항): REST는 클라이언트 기능이 확장될 수 있도록 허용한다. 애플릿(applet)이나 스크립트(script) 형식 안에 들어 있는 코드를 다운로드하고 실행할 수 있도록 하기 때문이다. 이렇게 하면 클라이언트가 단순해진다. 클라이언트에서 미리 구현해야 하는 기능의 수가 줄어들기 때문이다. 

REST를 사용할 때 정말로 코드를 전혀 쓰지 않고도 가능한가?

REST 디버거는 엠바카데로(Embarcadero)의 무료 솔루션이다. RESTful 웹 서비스를 탐색하고, 이해하고, 델파이 및 C++ 빌더 앱과 통합할 때 이것을 사용할 수 있다. 이 링크에서 다운로드 할 수 있다.

spacer.png

엠바카데로 REST 디버거는 개발자를 도와서 RESTful 웹 서비스를 탐색하고, 테스트하여 그 결과적으로 어떻게 동작하는지를 이해할 수 있도록 한다. JSON Blob 필터링, 잘 다듬어진 OAuth 1.0/2.0 인증, 요청/리소스 파라미터들을 통한 설정을 통해 REST 데이터를 다뤄보자.

REST 디버거 도구를 사용하여 유효성 검사 테스트를 수행한다. 테스트를 마치면 그 REST 디버거에서 사용된 REST 컴포넌트들을 그 자리에서 바로 복사하여 RAD 스튜디오, 델파이 또는 C++ 빌더 IDE에 붙여넣을 수 있다. 이 방식을 사용하면, 그 REST 서비스를 델파이 또는 C++ 빌더 앱 안에서 구성하고 사용하도록 구현하는 작업을 클릭 몇 번으로 할 수 있다.

REST를 나의 델파이 프로그램 안에서 사용하는 방법에 대해 더 배우려면?

이 블로그와 관련된 글들을 보려면, 이 검색 링크를 클릭해보자. https://blogs.embarcadero.com/?s=rest 

아래의 동영상은 아주 훌륭하다. 유튜브의 엠바카데로(Embarcadero) 채널에 있는 동영상인데 REST 및 REST 디버거에 대한 자세한 정보를 보여준다. 또한 디자인 타임 및 런타임에 데이터 셋을 쉽게 로드하고 조작하는 방법도 보여준다. 그 내용은 상당히 놀랍다. 그리고 다른 어느 시스템도 이처럼 사용하기 쉬우면서도 강력한 기능에는 전혀 미치지 못한다.

 

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.