REST의 제약 조건
1. Client-Server - 클라이언트 / 서버 구조
- Client: 자원을 요청하는 곳
- Server: 자원을 제공하는 곳
- REST Server: API를 제공하고 비즈니스 로직 처리 및 저장을 책임진다.
- Client는 사용자 인증이나 context(세션, 로그인 정보) 등을 직접 관리하고 책임진다.
- 역할을 확실히 구분함으로써 서로 간 의존성을 줄인다.
2. Uniform Interface - 균일한 인터페이스
- URI로 지정한 Resource에 대한 조작을 가능하게 하는 아키텍쳐 스타일을 의미한다.
- HTTP 표준 Protocol을 따르는 모든 플랫폼에서 사용이 가능하다.
- 특정 언어나 기술에 종속되지 않는다.
3. Stateless - 무상태성
- Stateless: 서버가 이전의 모든 요청과 독립적으로 모든 클라이언트 요청을 완료하는 통신 방법
- HTTP Protocol은 Stateless Protocol이고 REST는 HTTP의 특성을 이용하기 때문에 무상태성을 갖는다.
- Server는 Client의 요청을 완전히 별개의 것으로 인식하고 처리한다.
- 따라서, Client에서 Server로의 각 요청에는 그 요청을 이해하는데 필요한 모든 정보가 포함되어야 한다.
4. Layered System - 계층화 시스템
- 각 구성들 간의 계층을 마음대로 상호작용할 수 없도록 제한한다.
- Client는 REST API Server만 호출한다.
- REST Server는 다중 계층으로 구성될 수 있다.
- Proxy, Gateway와 같은 네트워크 기반의 중간매체를 사용할 수 있어 자유도가 높다.
- 이러한 계층은 Client에게 보이지 않는 상태로 유지된다.
5. Cacheable - 캐시 가능성
- 웹 표준 HTTP Protocol을 사용하는 REST 특징으로 인해 웹에서 사용하는 인프라를 그대로 사용 가능하다.
- 요청에 대한 응답 내의 데이터에 해당 요청은 캐시가 가능한지 불가능한지 명시해야 한다.
- 대량의 요청을 효율적으로 처리하기 위해 캐시를 사용한다.
- 캐시 사용을 통해 응답시간이 빨라지고, REST Server 트랜잭션이 발생하지 않아 전체 응답시간, 성능, 서버의 자원 이용률을 향상시킬 수 있다.
6. Code on demand - 온디맨드 코드 (optional)
- Server는 소프트웨어 프로그래밍 코드를 Client에게 전송하여 Client 기능을 일시적으로 확장하거나 사용자 지정할 수 있다.
'IT 용어' 카테고리의 다른 글
WEB (0) | 2024.04.25 |
---|---|
프레임워크와 라이브러리 (0) | 2024.04.25 |
REST (0) | 2024.04.24 |