質問

高可用性とディザスタリカバリに関して、最悪の場合にJavaアプリケーションを監査する必要がある場合は、おそらくハードコーディングされたIPアドレスとバインドハンドルの次善のキャッシングを探すでしょう。他に何を考慮する必要がありますか?

役に立ちましたか?

解決

アクション/状態ログの欠如。

Javaアプリケーションは、クラッシュした時点から再開できるはずです。
これは、すでに行われたことを記録できるメカニズムが必要であることを意味します(次回実行時にすべてをやり直さないようにするため)。

つまり、このようなJavaプログラムは、アクションの同じセットの後に常に同じ状態を達成する必要があります。 (何かを2回実行すると同じ結果になります。すでに実行されたアクションは再び実行されるべきではなく、単にスキップされます)

そのレコードは多くの形式(ファイル、データベース、ソートのリポジトリ内のメタデータなど)を取ることができますが、ポイントは次のとおりです。できるだけ早く回復したいJavaアプリケーションは、すでに行ったことを知っている必要があります。

他のヒント

監視施設の欠如。遅かれ早かれ、すべてのアプリケーションが失敗します。それが起こったら、他の誰かがする前にそれについて知りたいでしょう。

ロギングの欠如。あなたがアプリを殺したものを見つけることができない場合、それを修正するのは本当に難しいです。これは、再現が困難な非常に断続的な障害がある場合に特に厄介です。

適切な監視についてはすでに述べているので、緊急時対応計画を立てることを追加します。それは次のような単純なものです。これが発生した場合、これを行い、この他のことが発生した場合、それを行います。その後、問題が発生した場合は、全員がパニックに陥って迅速な決定を下すのではなく、(以前にテストした)計画に従うだけです。

私が見ているように、あなたが尋ねていることにはいくつかの重要な側面があります。言語固有ではないと思うので、例としてJavaアプリを使用したので、Javaについて具体的に説明しなくても構わないことを願っています。

フェイルオーバー/ HA : ここで、SPoF-Single Point of Failureを特定します。例には、前述のハードコードされたアドレスが含まれますが、ローカルディスクなどの複製不可能な手段でデータを保存するアプリケーションも含まれます。他のアイテムは、「長すぎる」ためのDNSルックアップをキャッシュし、切断された接続を再確立せず、特定のハードウェア情報(MACアドレス、CPUID、ドングル、パーティションラベル、MBまたはドライブシリアル番号など)を探します。これらはすべて、BCP / DRを機能させるための不必要な回避策につながる問題と考えています。

データの整合性: データはどのように保存されますか?カスタム形式/構造を使用していますか?その場合は、「ダンプと復元」があります。機構?サービスはクライアントへのサービスを停止する必要がありますか、またはバックアップを行うためにサービスを低下させますか?非同期的にデバイスにデータを書き込みますか?その場合、「フラッシュ」する頻度は?ディスクへ(これはアプリ次第である場合もあれば、それほど多くない場合もあります)?ファイルのロック、メモリから永続ストレージへのタイムフレームおよび機能もこの一部です。

回避する必要がある原因を本質的に見てください。次に、それがどのように隣接したかを見てください。おそらく、BCP / DRを改善するために使用するパターンと、問題を引き起こすAntiPatternsの2つの重要な知識の開発を開始するでしょう。これらのタイプの質問を可能な限り早く開発プロセスに注入することは、開発者が探しているパターンとアンチパターンを導き出すのに役立ちます。多くの場合、質問するだけで問題を防ぐことができます。

実行するのに最適なのは、ダウンタイムをスケジュールしてテストすることです。これを行うと、さらに多くの問題が見つかります。すべてを文書化したら、誰かの助けを借りずに他の人にそれをさせてください。 ;)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top