状態とは、システムが保持する情報であり、何らかの形でその機能に影響を与えます。例えば、ウェブサイトはログインしたユーザーを追跡する場合があります。ドキュメントエディタは現在のテキストを記憶します。バックグラウンドワーカーは、完了したタスクと保留中のタスクを記録します。データベースは、必要に応じて書き込まれたレコードを保存します。有用なソフトウェアは通常、意図された機能を実行するために状態を管理する必要があります。
困難なのは、リクエストが重複し、サーバーが追加され、マシンが故障し、ソフトウェアの変更がデプロイされても、状態を正しく維持することです。多くの場合、一般的なアドバイスは「アプリケーションをステートレスにする」ことです。しかし、このアドバイスには説明が必要です。これは通常、特定のアプリケーションサーバーを交換しやすくし、その重要な状態を別の場所に置くことを意味します。状態が完全に存在しないことを意味するわけではありません。
このような設定を理解するには、状態がなぜ存在するのか、誰がそれを所有しているのか、そしてそれが利用できなくなったときに何が起こるのかを検討する必要があります。この記事では、なぜ状態がソフトウェア開発で最も難しいことなのか、そして開発者がそれを管理するために使用できる複数の戦略について見ていきます。
出典: ByteByteGo · 要約:HeadlinesBriefing