« rosy.js の ログコンソールに実行用の入力欄を付けてみようかと | メイン | rosy.js ログウィンドウを色んなページに表示させるBookmarklet »

ステートレスとステートフル

ステートレス、ステートフルについて分かりやすく解説してくれているページです。

yohei-y:weblog: ステートレスとは何か

セッションを利用したアプリケーションでも、セッションを共有することで、スケーラビリティを確保することができるやり方もあります。

この説明に併せて考えると、


  • 客: こんにちは

  • 店員: いらっしゃいませ。○○バーガーへようこそ

  • 客: (会員証を提示して)ハンバーガーセットをお願いします

  • 店員: (会員番号とハンバーガセットをオーダ票に書き込む)サイドメニューは何になさいますか?

  • 客: (会員証を提示して)ポテトで

  • 店員: (オーダ票の中から会員証の会員番号と同じオーダ票を探し出し、ポテトを追加)ドリンクは何になさいますか?

  • 客: (会員証を提示して)ジンジャーエールで

  • 店員: (オーダ票の中から会員証の会員番号と同じオーダ票を探し出し、ジンジャエールを追加)+50円でドリンクをLサイズにできますがいかがですか?

  • 客: (会員証を提示して)Mでいいです

  • 店員: (オーダ票の中から会員証の会員番号と同じオーダ票を探し出す)以上でよろしいですか?

  • 客: (会員証を提示して)はい

  • 店員: (オーダ票の中から会員証の会員番号と同じオーダ票を探し出す)かしこまりました


こんな感じになるのかな。

会員番号がセッションIDのイメージですかね。

セッションを共有するってことは、このオーダ票を店員間で共有するってことで。

確かに作業が繁雑(というか忙しい)感じになりますね。

セッションの共有と言えば、Java で、implements Serializable にしてないオブジェクトをセッションで共有しようとして、エラーが発生して共有できない、なんてことがたまーにあります。基本中の基本ですが、経験の浅いプログラマの方だと知らない人も結構いるみたいで。

僕もエンジニアになって2年目の頃、これにはまったことがあります。

開発環境では動くのに、本番環境では動かない!みたいな。挙げ句、ハードウェアベンダに問い合わせる直前までいった記憶が・・・。恥ずかしいなぁ。