[NB] 위클리 페이퍼: Node.js 백엔드 개발 중급[17]

권나현·2025년 8월 17일
post-thumbnail

Q. REST에서 무상태성(Stateless)이란 무엇인지 설명해 주세요.

1. REST에서 무상태성(Stateless)이란?

  • 웹 서비스를 설계할 때 자주 언급되는 개념 중 하나가 바로 REST 아키텍처 입니다.

  • REST는 여러 제약 조건을 통해 탄순하면서도 확장성 있는 시스템을 만들 수 있게 하는데, 그중 핵심이 바로 무상태성(Sateless)이에요.

  • 무상태성은 말 그대로 서버가 클라이언트의 상태를 보존하지 않는다는 의미입니다.

  • 즉, 클라이언트가 서버에 요청을 보낼 때마다 그 요청 자체만으로 처리가 가능해야 하며, 서버는 "이전에 어떤 요청이 왔는지", "현재 클라이언트가 어떤 상태인지" 같은 정보를 따로 기억하지 않습니다.

  • 그래서 클라이언트는 서버로 요청을 보낼 때마다 인증 정보, 필요한 데이터, 요청을 처리하기 위한 모든 조건을 함께 전달해야 합니다.

  • 서버는 이를 바탕으로 요청을 독립적으로 처리하고 결과를 반환합니다.

쉽게 말해, 각각의 요청은 완전히 독립적이고 자기완결적(self-cntained)이어야 한다는 원칙이죠.

2. 무상태성의 장점

2-1. 확장성

  • 서버가 특정 클라이언트 상태를 기억할 필요가 없으므로, 여러 대의 서버가 동시에 요청을 처리하기 쉽습니다. 로드 밸런싱이나 서버 확장(스케일 아웃)에 유리하죠.

2-2. 단순성

  • 각 요청이 독립적으로 처리되기 때문에 서버 구현이 단순해지고, 요청 흐름을 추적하기도 수월합니다.

2-3. 독립성

  • 클라이언트와 서버가 강하게 묶여 있지 않으므로, 서버를 교체하거나 클라이언트가 다른 서버에 요청을 보내더라도 문제없이 동작할 수 있습니다.

3. 무상태성의 단점

3-1. 반복되는 데이터 전송

  • 매 요청마다 인증 정보나 필요한 데이터를 반복해서 보내야 하므로 네트워크 비용이 다소

3-2. 클라이언트 부담 증가

  • 상태를 서버가 아니라 클라이언트가 관리해야 하기 때문에, 클라이언트 쪽에서 더 많은 책임을 져야 합니다.
  • 예를 들어, 로그인 상태를 유지하기 위해 쿠키나 토큰 관리 로직이 필요해집니다.

4. 예시

4-1. 무상태성(Stateless)

  • 클라이언트가 GET /user/123 요청을 보낼 때, 항상 인증 토큰이나 필요한 파라미터를 포함해야 합니다.
  • 서버는 오직 이 요청 정보만 보고 인증 여부를 확인한 뒤, 해당 유저 정보를 응답합니다.

4-2. 상태유지

  • 클라이언트가 로그인하면 서버가 세션(Session)을 만들어 내부에 저장합니다.
  • 이후 요청부터는 클라이언트가 세션 ID만 보내고, 서버는 저장해 둔 세션 정보를 조회해 사용자를 식별합니다.

REST는 이 두 가지 방식 중 무상태성을 따르는 것이 원칙입니다.

  • 결국 REST의 무상태성은 서버가 클라이언트의 상태를 저장하지 않고, 요청 하나하나를 독립적으로 처리하도록 하는 원칙입니다.

  • 이 원칙 덕분에 RESTful 서비스는 단순하고 확장성이 뛰어나지만, 동시에 클라이언트가 상태 관리 책임을 더 지게 된다는 특징이 있습니다.

profile
node.js 백앤드 개발자가 되기 위한 Study Vlog

0개의 댓글