ステートレスとは?REST設計における意味とステートフルとの違いも解説
投稿日: 2025年06月12日
RESTの設計では、「クライアント/サーバ」モデルを土台とし、そこにいくつかの**制約(アーキテクチャスタイル)**を組み合わせて構築されます。
本記事では、その最初の制約である「ステートレスサーバ」について解説します。
「なぜステートレスがREST設計の中で重要なのか?」という視点を交えて見ていきましょう!!
以下、関連する記事となります。
良かったらご覧ください。
「クライアント/サーバ」に最初に追加するアーキテクチャスタイルです。
「ステートレス」とは「状態(state)を持たない」と言う意味です。
具体的には、
「クライアントの状態(ログイン情報や捜査の途中経過)をサーバ側で保持しない」と言う設計方針を指します。
つまり、サーバはリクエストが来るたびに、それが”何者”か・”何の文脈”かを全てリクエスト内で判断できるようにする。と言うことです。
○ステートフルなサーバ(状態あり)
ユーザーがログイン
サーバ側にセッションを保持
ユーザーは後続のリクエストでセッションIDだけを送信
サーバは保持済みセッション情報を使って状態を把握する
○ステートレスなサーバ(状態なし)
各リクエストに、認証トークン(例: JWT)や必要な情報を毎回つけて送る
サーバは毎回その情報だけを使って処理をする
セッションは保持せず、リクエストの処理が終われば何も覚えていない
サーバ側が実装を簡略化できること。
スケーラビリティが高い(どのサーバでも同じリクエストを処理できる)
使ったメモリやCPU・ DB接続などを即座に解放よく大量のリクエストをさばくことができます。
ステートレスサーバの導入により、RESTシステムは「クライアント / ステートレスサーバ」という構成をとるようになります。
ステートレスは、RESTアーキテクチャにおける重要な構成要素のひとつです。
RESTではこの他にも「キャッシュ」「統一インターフェース」などの制約が存在し、それらが積み重なることで堅牢で拡張性の高いWebアーキテクチャが実現されます。
次回は「キャッシュ」について詳しく見ていきましょう。