ステートレス、ステートフルについて分かりやすく解説してくれているページです。
セッションを利用したアプリケーションでも、セッションを共有することで、スケーラビリティを確保することができるやり方もあります。
この説明に併せて考えると、
- 客: こんにちは
- 店員: いらっしゃいませ。○○バーガーへようこそ
- 客: (会員証を提示して)ハンバーガーセットをお願いします
- 店員: (会員番号とハンバーガセットをオーダ票に書き込む)サイドメニューは何になさいますか?
- 客: (会員証を提示して)ポテトで
- 店員: (オーダ票の中から会員証の会員番号と同じオーダ票を探し出し、ポテトを追加)ドリンクは何になさいますか?
- 客: (会員証を提示して)ジンジャーエールで
- 店員: (オーダ票の中から会員証の会員番号と同じオーダ票を探し出し、ジンジャエールを追加)+50円でドリンクをLサイズにできますがいかがですか?
- 客: (会員証を提示して)Mでいいです
- 店員: (オーダ票の中から会員証の会員番号と同じオーダ票を探し出す)以上でよろしいですか?
- 客: (会員証を提示して)はい
- 店員: (オーダ票の中から会員証の会員番号と同じオーダ票を探し出す)かしこまりました
こんな感じになるのかな。
会員番号がセッションIDのイメージですかね。
セッションを共有するってことは、このオーダ票を店員間で共有するってことで。
確かに作業が繁雑(というか忙しい)感じになりますね。
セッションの共有と言えば、Java で、implements Serializable にしてないオブジェクトをセッションで共有しようとして、エラーが発生して共有できない、なんてことがたまーにあります。基本中の基本ですが、経験の浅いプログラマの方だと知らない人も結構いるみたいで。
僕もエンジニアになって2年目の頃、これにはまったことがあります。
開発環境では動くのに、本番環境では動かない!みたいな。挙げ句、ハードウェアベンダに問い合わせる直前までいった記憶が・・・。恥ずかしいなぁ。