**ステートレス(stateless)**は、
**「各リクエストがそれ単体で完結していて、サーバ側が過去の状態(セッション)を持たない設計」**のことです。
例えばHTTPは基本的にステートレスで、リクエストごとに
「誰が・何をしたいか」を毎回送る前提になっています。
対になるのがステートフルで、こちらはサーバが
「この人はログイン済み」「前にこれをした」
といった状態を覚えています。
イメージ
ステートレス:
毎回「初対面です。IDはこれで、この処理をしてください」と説明する
ステートフル:
「いつもの人ですね、前回の続きからやります」
メリット
一番大きいのはスケールしやすさとシンプルさです。
・サーバが状態を持たない → どのサーバでも同じ処理ができる
→ 負荷分散が簡単(ロードバランサで適当に振れる)
・障害に強い
→ あるサーバが落ちても、別のサーバでそのまま処理できる
・実装がシンプル
→ セッション管理や同期が不要
・キャッシュと相性がいい
→ 同じリクエストは同じ結果になりやすい
デメリット
代わりに毎回のリクエストが重くなりがちです。
・必要な情報を毎回送る必要がある
→ トークンや認証情報などを都度付与
・クライアント側に負担が寄る
→ 状態管理(トークン保持など)を持たせる必要がある
・複雑な処理に向かない場合がある
→ 連続した操作(ショッピングカートなど)は工夫が必要
・セキュリティ設計が重要
→ トークンの扱いをミスるとリスクが上がる
実務的な落としどころ
完全なステートレスは理想ですが、実際はこうなりがちです:
・認証 → JWTなどで擬似的にステートレス化
・一時的な状態 → DBやキャッシュに逃がす
つまり
「サーバは極力状態を持たないが、必要な状態は外に出す」
という設計になります。
まとめ
ステートレスは、
**「状態を持たないことでスケーラビリティと可用性を得る代わりに、各リクエストに責任を持たせる設計」**です。
API設計やマイクロサービスではほぼ前提になる考え方なので、かなり重要な概念です。