【セッションいじ】

セッション維持 とは?

公開:
💡 銀行の窓口で「あなたは毎回この担当者へ」と決めてもらうVIP案内
📌 このページのポイント
セッション維持(スティッキーセッション) ユーザー (Cookie付) ロード バランサー Cookie確認 → 同じサーバへ サーバ A セッション情報あり ✓ サーバ B (振り分けなし) サーバ C (振り分けなし) Cookie → A番
セッション維持(スティッキーセッション):同一ユーザーを常に同じサーバへ
ひよこ ひよこ
セッション維持って、どういう場面で必要になるの?
ペンギン先生 ペンギン先生
ECサイトショッピングカートに商品を入れたのに、次のページで消えてしまう…という事態を防ぐために使うんだよ。複数のサーバで負荷分散しているとき、リクエストのたびに別のサーバへ行くとセッション情報がなくなってしまうんだ。
ひよこ ひよこ
なんで別のサーバへ行くとセッションが消えるの?
ペンギン先生 ペンギン先生
サーバAに「このユーザーはログイン済み」という情報が保存されていても、サーバBにはその情報がないんだよ。だから「同じユーザーは必ずサーバAへ」と決めて、セッション情報が常に同じ場所にあるようにするのがセッション維持だよ。
ひよこ ひよこ
どうやって「同じユーザー」って判断するの?
ペンギン先生 ペンギン先生
主に2つの方法があるよ。CookieにサーバのIDを埋め込んで次回も同じサーバへ誘導する「Cookieベース」と、送信元IPアドレスが同じなら同じサーバへ送る「IPベース」だよ。IPベースはNAT環境で複数ユーザーが同じIPになると精度が下がるという弱点があるんだ。
ひよこ ひよこ
サーバが壊れたらどうなるの?
ペンギン先生 ペンギン先生
担当サーバが落ちるとそのユーザーのセッション情報も消えてしまうんだ。それを防ぐためにRedisなどの共有セッションストレージを使って、どのサーバからでもセッション情報を読めるようにする方法が一般的だよ。その場合はセッション維持が不要になることもあるんだ。
ひよこ ひよこ
最近のWebサービスはどうしているの?
ペンギン先生 ペンギン先生
JWTなどのトークンをクライアント側に持たせてステートレスにする設計が増えているよ。サーバ側にセッション情報を持たないからロードバランサがどのサーバに振っても動くんだ。セッション維持は旧来のステートフルな設計では重要だけど、新しいシステムでは不要にする方向が主流だよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
セッション維持」って出てきたら「同じユーザーを同じサーバへ送り続ける仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Session Persistence」 = セッション永続性・セッション固定
💬 「Persistence(継続・維持)」が由来で、スティッキーセッションとも呼ばれるよ。ユーザーとサーバの関係を「くっつけて(Sticky)」維持するイメージだよ。
← 用語集にもどる