Written by
Lemon
on
on
RESTful이란 무엇인가
Restful 너는 누구냐
1. REST 란?
REST는 HTTP 아키텍처 스타일(혹은 아키텍처 패턴)이다. 부끄럽게도 난 REST가 무엇의 약자인지 몰랐다. 이번에 정리하고자 찾아보니 Representational State Transfer 라고 한다.
REST는 여러 아키텍처 스타일을 조합해 구축된 것이다. 용어가 비슷해서 헷갈리는데, 아키텍처는 HTTP, 아키텍처 스타일은 REST 이렇게 이해하면 될 것 같다!
2. REST의 6가지 스타일
REST는 다음의 6가지 스타일을 조합하여 만들었다.
- 클라이언트/서버
- UI와 관련은 클라이언트, 데이터 저장은 서버에서 처리한다.
- Stateless 서버
- 서버는 상태관리를 하지 않는다.
- 캐시
- 한 번 가져온 리소스를 저장하여 서버 통신 횟수를 줄인다.
- 유니폼 인터페이스
- 리소스 조작을 GET, POST 등 8개의 메세지만 사용
- 계층화 시스템
- 클라이언트와 서버 사이에 시스템을 몇 개의 계층으로 분리해도 클라이언트에서는 동일 인터페이스로 접근 가능
- 코드 온 디맨드
3. Stateless 서버
REST의 6가지 스타일 중에서 좀 더 자세하게 살펴봐야 할게 stateless다.
여기서 말하는 상태는 애플리케이션 상태인데, 로그인해서 로그아웃 할 때 까지의 상태를 말하기 때문에 세션 상태
라고도 부른다.
기존에는 상태 값을 서버에서 관리하는게 클라이언트 입장에서는 편하다고 생각했는데, 이 stateless 개념을 공부하면서 내 생각이 틀렸다는 걸 깨달았다.
서버가 클라이언트 상태를 기억하면 다음과 같은 단점이 있다
- 클라이언트 수가 늘어나 두 대 이상의 서버가 처리할 경우, 서버 간의 동기화 작업이 필요하며 이는 오버헤드를 발생시킬 수 있다.
Stateless의 장,단점은 다음과 같다.
- 처리할 서버가 많아질 경우, 증설만 하면 된다.
- 서버 시스템이 단순해진다.(세션상태를 관리할 필요가 없으므로)
- 서버에게 보낼 데이터가 많아진다.
- 이는 퍼포먼스 저하로 이어질 수 있음
- 네트워크 에러가 발생하면 클라이언트와 서버간의 상태 불일치가 발생한다.
출처: 웹을 지탱하는 기술