본문 바로가기

Programming/기초지식

REST에 대한 정리

반응형

REST란 무엇인가

REST는 웹 개발 아키텍처 스타일 가이드라고 할 수 있으며, Roy Fielding이 2000년 발표한 논문에 처음 등장했다.

REST 방식의 설계는 아래의 6가지 조건을 만족시켜야 하며, 이를 지킨 웹 서비스 디자인을 'RESTful' 이라는 단어로 표현한다.

REST 설계 조건

1. Client-Server 구조

사용자 인터페이스에 관한 고려사항(concerns)들을 데이터 저장에 대한 고려사항으로부터 분리하여 클라이언트의 이식성(Portability)과 서버의 확장성(Scalability)을 개선한다.

 

상기 설명은 영문 내용을 직역한 것이다. 그래서 말이 어렵다. 조금 더 쉽게 풀어보았다.

 

이 구조는 데이터/서비스를 요청하는 Client와 이를 제공하는 Server의 역할을 분리하는 것이다.

상호 독립적 작업을 통해 정보가 고립되지 않고, 이기종간 자유로운 통합이 가능하다.

 

아래 그림과 같이 다양한 종류의 Client가 네트워크 통신을 통해 Server에 접속하여 해당 서버가 제공하는 데이터 및 서비스를 요청한다. 그러면 Server는 Client의 요청에 대한 권한 검사 및 필요한 작업을 수행하고, 연결된 DB를 통해 원하는 데이터를 Client에게 전달한다.

 

Client-Server 모델 예시 이미지(https://en.wikipedia.org/wiki/Client%E2%80%93server_model)

 

2. Stateless

Client와 Server의 소통은 stateless 상태를 유지해야 한다.(Session, Cookie와 같은 상태정보를 저장하지 않는다.)

Client가 Server에 보내는 각각의 요청에는 요청 내용을 쉽게 파악할 수 있도록 가능한 모든 정보를 전달한다. 

Server는 Client의 요청을 단순히 처리만 하면 된다. Client-Server 사이에 상태정보를 처리할 필요가 없으니 구현이 단순해진다.

3. Cacheable

REST는 HTTP라는 기존 웹 표준을 그대로 사용하기 때문에 웹에서 사용하는 기존 인프라의 활용이 가능하다.

그 중의 하나가 Client의 이전 요청 복사본을 저장하여 재요청 시 그것을 사용하는 캐싱이 있다. 때문에 대량의 반복된 요청 처리 시 많은 이점이 있다.

4. Uniform Interface

일관된 인터페이스를 지향한다.

REST 인터페이스는 특정 하나의 기능을 세부적으로 수행하기 보다는, 다양한 기능과 대량의 데이터의 효율적 수행 및 전송에 초점을 맞추고 있다. 이를 위해 공통된 원칙에 따라 인터페이스를 설계해야 한다.

해당 원칙을 효율적으로 수행하기 위해서 아래 네 가지 원칙을 따라야 한다.

1) identification of resources

2) manipulation of resources through representations

3) self-descriptive messages

4) hypermedia as engine of application state

상기 네 가지 원칙에 대한 세부 서술은 후에 하도록 하고, 일단 관련 링크를 첨부한다.

5. Layered System

Server는 다중 계층으로 유연하게 구성될 수 있다. 순수 비즈니스 로직을 수행하는 API Server와 그 앞단에 사용자 인증, 암호화, 로드밸런싱 등을 수행하는 계층을 추가할 수 있다.

Client는 Server를 호출하면 끝이다. Client는 Server의 세부 구조를 알 필요가 없다.

6. Code-On-Demand(Optional)

Client 요청에 대한 응답을 처리하는 Code를 Server가 제공한다. 이 코드를 Client는 실행 할 수 있다.

Html의 JavaScript를 떠올리면 된다.

해당 조건은 반드시 충족되어야 하는 것은 아니다.

* 이 개념은 좀 더 명확한 이해가 필요하다. 좀 더 공부하여 세부 내용을 덧붙이겠다.


REST에 대한 간단한 소개 및 설계 원칙에 대해 서술했다.

REST의 지향점에 대해 좀 더 명확히 알 수 있었다. 직접 프로젝트에 해당 개념을 도입하여 최대한 지킬 수 있도록 노력하여 지금보다 나은 개발자가 될 수 있도록 노력해야겠다.

 

부족한 점이 많습니다.

잘못된 내용이 있다면 댓글로 의견 공유 부탁드립니다.


참고

https://meetup.toast.com/posts/92

 

REST API 제대로 알고 사용하기 : NHN Cloud Meetup

REST API 제대로 알고 사용하기

meetup.toast.com

https://restfulapi.net/

 

REST API Tutorial

REST is an architecture style for designing networked applications. REST is a lightweight alternative to mechanisms like RPC (Remote Procedure Calls) and Web Services (SOAP) etc.

restfulapi.net

https://ijbgo.tistory.com/20

 

REST API 란 ?

HTTP란 ? - HyperText Transfer Protocol의 준말로 링크 기반으로 데이터를 요청하고 받겠다는 것 - 클라이언트와 서버가 요청을 하고 응답을 하기 위해 따르는 프로토콜 - HTML 문서를 주고 받을 수 있음

ijbgo.tistory.com

반응형