-
REST, REST api, RESTful api, statelessCS/Network 2024. 4. 10. 20:12
rest api란 REST원칙을 적용해 서비스 api를 설계한 것이다.
REST란, 자원을 이름으로 표현해 해당 자원의 상태를 주고받는 것이다.
이런 REST원칙을 잘 지킨 REST api를 RESTful하다고 하며, RESTful api는 요청의 모습 자체로도 어떤 자원을 요구하는지 추론이 가능하다. 다시말해 요청 주소만으로 어떤 자원을 필요로하는지 알 수 있는 것이다.
reat api는 무상태성, 즉 stateless라고 한다.
무상태성을 알기 전에 그럼 상태성이 있는것은 무엇일까?
stateful 한 특성은 server side에 client와 server의 동작, 상태정보를 저장하는 형태 즉, 세션 상태에 기반하여 server의 응답이 달라진다.
그럼 반대로 stateless한 특성은 server side에 client와 server의 동작, 상태정보를 저장하지 않는 형태 즉, server의 응답이 client와의 세션 상태와 독립적이다. 이러한 특성은 서버가 client정보를 저장관리 하지 않으므로 Scaling이 자유롭다는 것이 장점이다.
그럼 rest api는 왜 stateless할까?
이는 http가 무상태성 특성을 갖고있기 때문이다.
http는 비연결성, 무상태성이라는 특징을 갖는 프로토콜이다.
비연결성(Connectionless)
비연결성이란 클라이언트가 요청(request)을 하고, 서버가 해당 요청에 적합한 응답(response)를 하게 되면 바로 연결을 끊는 성질을 의미
무상태성(Stateless)
비연결적인 특성으로 연결이 해제됨과 동시에 서버와 클라이언트는 클라이언트가 이전에 요청한 결과에 대해서 잊어버리게 됩니다. 즉, 클라이언트가 이전 요청과 같은 데이터를 원한다고 하더라도 다시 서버에 연결을 하여 동일한 요청을 시도해야만 합니다. 간단히 말하면 무상태성이란 말그대로 이전의 상태가 없다는 뜻이다.
(무상태성의 단점을 보완하기 위해 쿠키와 세션이 생겼다.)왜 connectionless 하고 stateless 할까 ? 독립적인 쌍의 요청과 응답을 처리함으로 단순하고, 상태를 저장해야 하는 서버의 부담을 감소시킬 수 있기 때문이다.
결론적으로, rest api는 http 메서드로 자원을 요청하는데, http의 비연결, 무상태 특성 때문에 rest api또한 무상태 특성을 갖는 것이다.
참고
'CS > Network' 카테고리의 다른 글
로드밸런싱 (3) 2024.09.08 네트워크 인터페이스 / MAC 주소 (0) 2024.05.11 공인 IP 주소와 사설 IP 주소 / 포트 포워딩 (2) 2024.05.08 네트워크 연결 상태 확인 (1) 2024.05.07