サービスにおけるステートフルとステートレスの違い、そしてクッキーに関して勉強したので、それを記録に残します。
サービスにおけるステートフルとステートレスの違い
ステートフルとステートレスの違いを表にまとめました。
特徴 | ステートレス | ステートフル |
---|---|---|
リクエスト処理 | 各リクエストが独立 | 過去の処理内容を記録 |
負荷分散 | 容易 | 困難 |
スケーラビリティ 1 | 高い | 低い |
障害時の影響 | 小さい | 大きい |
ステートフルとステートレスの違い
ステートフルとステートレスの違いを商品の注文の受け方で例えてみます。
ステートフルな注文の例:メモを用いて注文を受けます
メリット:
- 注文の途中でも、注文内容の変更や確認が可能です
- 注文担当者が交代しても、前の担当者がメモした情報に基づいて続けることができます
デメリット:
- メモの管理が必要です
- 同時に多くの注文に対応しにくいです
ステートレスな注文の例:メモを用いずに注文を受けます
メリット:
- 同時に多くの注文に対応しやすいです
- ウェイターが厨房に持ってくる注文の量は想定可能です
- メモの管理が不要です
- メモがなくなった時のトラブルとかはありません
デメリット:
- 注文の途中でその注文内容を変更することができません
どのようなサービスに用いられるか
- ステートフル:
- 柔軟な対応が求められるサービス
- スケーラビリティがそれほど重要はならない比較的小規模なサービス
- ステートレス:
- Webサービス
- 一般的に大量のリクエストを受け付けます
- 負荷分散も用途によっては必要となります
- Webサービス
クッキーとは
上述したように、Webサービスは、基本的にステートレスに設計されています。しかし、ユーザーごとに異なる情報を管理したい場合(例えば、ログイン状態を保持したい場合)があります。例えば、ネットショッピングサイトなどはその例です。
これを解決するのがクッキーです。クッキーを用いることで、ステートレスなWebの世界でもステートフルなサービスを提供できます。
クッキーのメリット
- ユーザーの状態を保持できます
クッキーのデメリット
- セキュリティリスクがあります(Cookieに機密情報を保存するのは危険)
- クッキーのサイズが制限されています
- ブラウザの設定でクッキーを拒否される可能性があリマス
まとめ
サービスはステートフルとステートレスなものに分類できます
その中でも、Webサービスはステートレスに分類されます
クッキーはステートレスなWebサービスをステートフルなものへと扱えるようにする仕組みです
-
スケーラビリティが高いサービスは、たくさんのリクエストがあっても、安定に稼働します。
逆に、スケーラビリティが低いサービスは、たくさんのリクエストがあったとき、サーバーが落ちたり、レスポンスが遅くなったりします。 ↩