On m'a demandé de transférer une application de traitement des données héritée vers Java.Architecture générale pour un système de traitement de données à long terme en Java?
La version actuelle du système est composée d'un nubmer de feuilles Excel (mal écrites). Les feuilles implémentent une grosse boucle: Un certain nombre de sources de données sont interrogées. Ces sources sont un mélange de services Web CSV et XML.
Le processus est conceptuellement simple:
Il est apatride, cela signifie que les calculs qui fonctionnent sont purement fonction des entrées. Les résultats des calculs sont publiés (actuellement en écrivant un certain nombre de fichiers CSV dans certains emplacements standards sur le réseau).
Après avoir publié les résultats, le cycle d'interrogation recommence.
Le processus n'aura pas besoin d'une interface graphique d'administration, mais il serait intéressant si je pouvais implémenter une sorte de panneau de contrôle basé sur le Web. Ce ne serait rien de joli et purement pour usage interne. Le panneau de contrôle ferait un peu plus que diffuser des statistiques sur les sources et peut-être forcer l'actualisation des flux d'entrée en cas de problème. Ce composant est purement facultatif lors du premier tour de livraison.
Une caractéristique critique de ce système sera la tolérance aux pannes. Certains flux d'entrée sont notoirement buggés. Je voudrais que mon système puisse récupérer dans le cas où certaines des entrées seraient cassées. Dans ce cas, il ne serait pas possible de mettre à jour la sortie - je voudrais qu'elle continue d'interroger jusqu'à ce que le système soit résolu, en générant éventuellement des messages XMPP pour indiquer l'état du système. Dans l'ensemble, le système devrait fonctionner sans intervention pendant de longues périodes.
Les utilisateurs ont actuellement un client personnalisé qui interroge les fichiers CSV qui (espérons-le) n'auront pas besoin d'être réécrits. Si je peux faire ce travail correctement, ils ne remarqueront pas que le moteur qui exécute ce système a été ré-implémenté.
Je ne suis pas un devloper java (je fais principalement Python), mais la JVM est l'exigence dans ce cas. Le directeur m'a donné beaucoup de temps pour apprendre.
Ce que je veux savoir, c'est comment commencer à architecturer ce genre de projet. Je voudrais faire usage de cadres & de bons motifs possibles. Y a-t-il de gros blocs de construction qui pourraient m'aider à faire fonctionner un système de bonne qualité plus rapidement?
UPDATE0: Personne n'a encore mentionné le printemps - Ce framework a-t-il un rôle à jouer dans ce genre d'application?
J'ai mentionné Spring comme commentaire à la réponse de @Martin Spamer. – Rich