배꼽파지 않도록 잘 개발해요

stateful과 stateless 본문

BackEnd/Database

stateful과 stateless

꼽파 2024. 12. 29. 14:20

Stateful (상태 유지 시스템)

- 상태(state)를 시스템이 기억하고, 사용자가 이전에 했던 작업이나 데이터다음 요청에서도 계속 유지

- 예를 들어, 사용자가 로그인하면 세션을 통해 로그인 상태가 유지되며, 이후 요청에서도 로그인 상태가 계속 유지됨. 상태가 유지되기 때문에, 이전 작업의 결과나 데이터를 바탕으로 추가 작업을 진행할 수 있음.

- 장점 : 사용자의 이전 데이터를 기억하여, 연속적인 작업을 할 수 있음.

- 단점 : 상태를 관리하기 위한 서버 자원과 비용이 필요하고, 여러 서버 간에 상태를 일관되게 유지해야하므로 복잡할 수 있음.

- 예시 : 데이터베이스의 세션 정보는 stateful한 방식. 사용자가 세션을 종료하거나 시간이 지나면 그 상태가 사라짐.

 

Stateless (상태 비유지 시스템)

- 상태(state)를 유지하지 않으며, 각 요청은 독립적으로 처리됨. 즉, 시스템은 이전 요청의 상태를 기억하지 않고, 매번 새로운 요청을 처리함.

- 예를 들어, HTTP 프로토콜은 stateless임. 각 요청은 서로 독립적이며, 서버는 클라이언트가 보낸 요청만 처리하고 이전 요청에 대한 정보는 기억하지 않음.

- 장점 : 시스템이 단순하고, 서버 간에 상태를 공유할 필요가 없으므로 확장성이 좋음.

- 단점 : 사용자가 이전에 했던 작업이나 상태를 기억하지 못하기 때문에, 매번 요청 시마다 필요한 정보를 다시 보내야 함.

- 예시 : JWT(JSON Web Token)은 stateless한 인증 방식. 서버가 세션을 관리하지 않고 클라이언트가 토큰을 통해 인증정보를 저장하여 서버가 요청을 처리할 수 있도록 함.

 

stateful과 stateless 요약

  • stateful : 상태를 유지하며, 이전 작업이나 데이터를 기억하고 처리 (세션, 데이터베이스)
  • stateless : 상태를 유지하지 않고, 매 요청마다 독립적으로 처리 (HTTP, JWT)

 

데이터베이스와 상태

- 데이터베이스는 보통 stateful임. 왜냐하면, 데이터베이스는 데이터를 저장하고, 그 상태를 계속 유지해야하기 때문임. 예를 들어, 한 사용자가 추가한 정보가 데이터베이스에 저장되면, 그 정보는 다음 요청에서도 유효해야 함.

- 그러나 데이터베이스의 읽기 작업은 stateless한 방식으로 복제본에서 처리할 수 있으며, 이는 요청이 독립적이므로 상태를 기억할 필요가 없음.

 

stateful 시스템에서는 서버가 사용자의 상태를 계속 추척하고, stateless 시스템에서는 매번 새로운 상태로 요청을 처리함.

728x90