Day 34 · 5/5
🌿 중급 백엔드

stateless가 뭔가요?

쉽게 이해하기

편의점에서 물건을 살 때마다 점원이 당신을 처음 보는 손님처럼 대하는 거예요. '어제 이 손님이 우유를 샀었지' 같은 정보를 기억하지 않고, 매번 독립적인 거래로 처리하죠. 서버도 마찬가지로 이전 요청이 뭐였는지 기억하지 않아요.

핵심 정리

서버가 이전 요청을 기억하지 않고, 매 요청을 독립적으로 처리하는 방식이에요.

자세히 알아보기

Stateless는 '상태가 없다'는 뜻으로, 서버가 클라이언트의 상태 정보를 저장하지 않는 방식이에요. HTTP는 기본적으로 stateless 프로토콜이에요. 서버는 매 요청을 완전히 새로운 것으로 간주하고, 이전에 누가 어떤 요청을 했는지 기억하지 않아요. 예를 들어 쇼핑몰에서 상품을 카트에 담았다가 다른 페이지로 갔다 오면, stateless 서버는 당신이 뭘 담았는지 모르죠. 그래서 실제로는 클라이언트가 매 요청마다 필요한 모든 정보(토큰, 세션 ID, 카트 정보 등)를 함께 보내야 해요. 이게 stateless의 핵심이에요. Stateless의 장점은 서버 확장이 쉽다는 거예요. 어떤 서버가 요청을 처리하든 상관없으니까, 사용자가 많아지면 서버를 여러 대 추가하기만 하면 돼요. 또 서버가 갑자기 죽어도 다른 서버가 바로 대신할 수 있죠. 반면 stateful 서버는 특정 사용자 정보를 메모리에 저장하고 있어서, 그 서버가 죽으면 정보가 날아가요. 하지만 완전히 stateless로만 운영하기는 어려워요. 실제로는 세션을 데이터베이스나 Redis 같은 곳에 저장해서, 서버는 stateless로 두되 상태 정보는 따로 관리하는 방식을 많이 써요. REST API가 stateless 원칙을 따르는 이유도 확장성 때문이에요.