従来のデータ処理アプリケーションをJavaに移植するように求められました。Javaで長時間実行されるデータ処理システムの一般的なアーキテクチャは?
システムの現在のバージョンは、(間違って書かれた)Excelシートで構成されています。シートは大きなループを実装しています。多数のデータソースがポーリングされます。これらのソースは、CSVとXMLベースのWebサービスの混合物です。
プロセスは、概念的には単純です:
それは入力に純粋に依存している実行する計算を意味し、ステートレスです。計算結果は公開されています(現在、ネットワーク上のいくつかの標準的な場所に多数のCSVファイルを書き込むことによって)。
結果が公開されると、ポーリングサイクルが再び開始されます。
このプロセスには管理者用GUIは必要ありませんが、何らかのWebベースのコントロールパネルを実装できればうまくいきます。それは内部使用のためにかなり純粋なものではありません。コントロールパネルは、ソースフィードに関する統計情報を無視し、問題が発生した場合に入力フィードを強制的に更新することはほとんどありません。このコンポーネントは、最初の配信ラウンドでは純粋にオプションです。
このシステムの重要な機能はフォールトトレランスです。入力フィードの中にはバグが多いものがあります。入力の一部が壊れた場合にシステムを復旧できるようにしたいと思います。この場合、出力を更新することはできません。システムが解決されるまでポーリングを維持して、システムの状態を示すXMPPメッセージを生成する可能性があります。全体的にシステムは、介入なしで長時間作動するはずです。
現在、ユーザーは、(うまくいけば)書き直す必要のないCSVファイルをポーリングするカスタムクライアントを持っています。私がこの仕事を適切に行うことができれば、このシステムを実行するエンジンが再実装されたことに気付かないでしょう。
私はJavaの開発者ではありません(私は主にPythonを実行します)が、この場合はJVMが必要です。マネージャーは私に寛大な時間を与えてくれました。
私が知りたいのは、この種のプロジェクトをどのように構築するかです。私はフレームワーク&良いパターンを可能にしたいと思います。良質なシステムをより速く稼働させるのに役立つ大きなビルディングブロックはありますか?
UPDATE0:春をまだ誰も言及していません - このフレームワークはこの種のアプリケーションで果たす役割はありますか?
私は@Martin Spamerの答えに対するコメントとしてSpringを挙げました。 – Rich