.net Web アプリケーションを構築しているので、知りたいだけです
- データベースがクラッシュした場合、Web アプリケーションはどうなりますか?
- ユーザーが何が起こったのかを知らずにサイトを維持する方法は?
- ユーザーが入力したデータをどのように処理しますか?
- 状態管理を使用する場合、どのようにデータを保存できますか?
.net Web アプリケーションを構築しているので、知りたいだけです
それはすべて、あなたがどれだけの努力をするかにかかっています。たとえば、データベースのフェールオーバーを有効にすることができます。これは高価になる傾向がありますが (2 台目のサーバー、ライセンスなど)、ペアへの復旧は非常に高速です。アプリをコーディングして、メモリ内 (アプリがリサイクルされると扱いにくくなります) または独立したストアに対して何かを行うことができます。
ここでの最も一般的な選択は実用的なものです。DB が必要です (それが sql、nosql、またはその他のものであるかどうかにかかわらず、何らかの中央データ リポジトリ)。DB サーバーがオフラインになると、アプリもオフラインになります。DB 層で非常に優れた稼働時間を確保する必要があります。そのアップタイムを改善する方法を確認することに時間を費やした方がよいでしょう。
読み取り専用アプリケーションのもう 1 つの選択肢は、各アプリケーション層サーバーに DB のコピーを保持し、段階的に更新することです。アプリサーバーが稼働しているときは、(通常) ローカル DB も稼働しています。
Marc が言うように、これは大きな問題であり、正直に言うと、Stack Overflow に関する見知らぬ人からの知識に頼って意見を形成するつもりはありません。大まかに言えば、最近のハードウェアなどはかなり信頼性が高く、比較的少ない費用で非常に高いレベルの可用性 (RAID ドライブ、NAS ストレージなど) を実現できます。このルートで達成できるよりも高いレベルの可用性が必要な場合は、専門家の領域に入ります。以前にそれを行った人のアドバイスが必要です. また、コストもかかります。稼働時間を 99.9% から 99.99% にすると、ソリューションのコストが簡単に 2 倍になります。中途半端な対策は、インフラストラクチャとコードの両方をさらに複雑にすることで、状況を改善するどころか悪化させる傾向があります。複雑さはバグが存在する場所であり、バグはハードウェア障害よりも効果的に可用性を低下させます。
そうは言っても....
それはすべて、アプリケーションのデータ集約度、アプリケーションのキャッシュ可能性、データの複雑さなどによって異なります。
クラスター化されたデータベースを見ることができます-ライセンス/ハードウェアとDBA時間の両方の点で高価ですが、理論的には、複数のデータセンターにまたがってクラスター化し、100%のアップタイムに近づけることができます.
データベースに直接アクセスするのではなく、メッセージング ソリューションを見ることができます。メッセージ キューイング ソリューション (Microsoft には 1 つある) は、標準の "データベースと直接対話する ASP.Net アプリ" とは根本的に異なるアプリケーションの設計方法ですが、膨大なボリュームを処理でき、非常に高いフェールオーバー保証を提供します。
キャッシング レイヤーを見ることができます。すべてのデータをキャッシュに保持すると、基盤となるデータベースがオフエアであっても、サイトが機能しているという錯覚を維持できる場合があります。