🎓 A1Learner
🔍
0 of 47 lessons completed

Stateless and Stateful

Stateful and stateless servers differ in where the state lives between requests. That single choice changes what happens when a second server helps.

A stateful server remembers

The basket lives inside this one server. Each request adds an item, and the basket grows in the server memory.

server = {"basket": []}

def stateful_server(item):
    server["basket"].append(item)
    return server["basket"]

print("add milk -> basket:", stateful_server("milk"))
print("add bread -> basket:", stateful_server("bread"))

Stateless servers share one store

Neither server keeps the basket. Both read the one basket held in the shared store, so both print the same line.

store = {"basket": ["milk", "bread"]}

def stateless_server(store):
    return store["basket"]

print("server one reads:", stateless_server(store))
print("server two reads:", stateless_server(store))

Two stateful servers can disagree

Each stateful server holds its own basket in its own memory. The same user gets a different basket from each server.

server_a = {"basket": ["milk", "bread"]}
server_b = {"basket": []}

print("server A basket:", server_a["basket"])
print("server B basket:", server_b["basket"])

Example

store = {"basket": []}

def stateless_server(store, item):
    store["basket"].append(item)
    return store["basket"]

print("server one adds milk:", stateless_server(store, "milk"))
print("server two adds bread:", stateless_server(store, "bread"))
print("server one reads:", store["basket"])
print("server two reads:", store["basket"])

Key points

  • State: information kept between requests, such as the items in a basket.
  • Stateful: a server that keeps state inside its own memory.
  • Stateless: a server that keeps no state inside itself.
  • Shared store: a place outside every server that all servers can read and write.

In this example, two stateless servers add items through one shared store. Both print the same final basket, because the basket lives in the store and not in either server.

Note

a stateless server reads the state from the shared store on each request.

Try it Yourself

Edit the code, then press Run.

Running is simulated

Exercise

A server reads the basket from a shared store on every request and keeps nothing itself. Which design is it?