【すてぃっきーせっしょん】

スティッキーセッション とは?

💡 一度仲良くなったサーバとは、ずっと一緒にいる約束
📌 このページのポイント
スティッキーセッション クライアントA クライアントB ロード バランサ サーバ 1 サーバ 2 サーバ 3 ★ A専用 ★ B専用 同じクライアントは常に同じサーバへ固定(貼り付け)される
スティッキーセッションのイメージ
ひよこ ひよこ

ロードバランサって複数のサーバに振り分けてくれるんだよね。なんでわざわざ同じサーバに固定するの?

ペンギン先生 ペンギン先生

ショッピングカートやログイン状態をサーバのメモリに保存している場合、別のサーバに繋がるとカートが消えてしまうんだよ。それを防ぐために「同じユーザは同じサーバへ」と固定するのがスティッキーセッションだよ。

ひよこ ひよこ

なるほど!どうやって同じサーバだって判断するの?

ペンギン先生 ペンギン先生

主に2通りあって、Cookieにサーバ識別子を書き込む方法と、クライアントのIPアドレスを使う方法があるよ。Cookieベースの方が精度が高くてよく使われるんだ。

ひよこ ひよこ

デメリットはあるの?

ペンギン先生 ペンギン先生

負荷が特定のサーバに偏りやすいのが大きなデメリットだよ。あるユーザが大量リクエストを送ると、そのサーバだけ過負荷になってしまう。スケールアウトの効果も薄れるね。

ひよこ ひよこ

じゃあ使わない方法はないの?

ペンギン先生 ペンギン先生

セッション情報をRedisや共有データベースに置けば、どのサーバに繋がっても同じセッションを読めるから、スティッキーセッションは不要になるよ。モダンなアーキテクチャではこちらが主流だね。

ひよこ ひよこ

スティッキーセッションはどんな場面で今も使われているの?

ペンギン先生 ペンギン先生

セッションの外部化が難しいレガシーシステムや、WebSocketのような長時間コネクションが前提のアプリでは今も活躍しているよ。設定一つで動くお手軽さが強みなんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
スティッキーセッション」って出てきたら「同じユーザは同じサーバに繋がり続ける仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Sticky Session」 = 粘着するセッション
💬 Sticky は「べたっとくっつく」という意味で、クライアントが特定サーバに貼り付いたように通信し続けることからきているよ
← 用語集にもどる