Question

Récemment, nous avons lancé un projet à l'entreprise où je travaille à restructurer et réécrire notre paysage de systèmes et de sauvetage de l'avenir de nos enfants.

Nous avons 3-4 systèmes existants qui ne peuvent absolument pas être adaptées aux nouveaux cas d'utilisation en raison du code horrible, mais toujours gérer une grande quantité assez de commandes par jour via différentes interfaces et formats comme le courrier électronique, xmlrpc, webinterface.

Nous avons donc pensé à écrire un nouveau système à partir de zéro basé sur un modèle de domaine entièrement repensé. En raison de nous ne pouvons pas simplement passer les anciens systèmes hors et nous sommes une équipe très petite, nous sommes arrivés à la conclusion que nous avons besoin d'une architecture et de l'approche qui nous permet la développer progressivement le nouveau système et mettre toutes les pièces de vivre et facilement (lire; rapide) intégrer les nouvelles interfaces, les partenaires et avec les applications existantes et les interfaces.

L'idée était de repenser complètement l'ensemble du modèle de domaine à partir de zéro, créer un service de commande et d'utiliser Apache Camel avec un conteneur OSGi pour imiter les anciennes interfaces de routage des ordres à l'héritage et les nouveaux systèmes et découpler le traitement de format et se transporter du nouveau système. En raison du développement progressif que nous voudrions choisir sont plus architecture « service centrée » qui nous permettra une amélioration progressive, réutilisabilité et de l'évolutivité. Tout cela semble bien sur le papier, et je l'ai lu un peu sur « SOA » mais jusqu'à attendu le battage médiatique à mourir et les « bonnes parties » de rester, mais la plupart de la conversation est toujours très abstraite et imprécise « technique les ventes » niveau il semble.

Je trouve l'approche « service de données de base / partagée » très problématique si j'ai entités avec beaucoup de relations comme ordre, avec un assez grand graphique. Si je créerais un service personnalisé pour les opérations CRUD sur les commandes et les autres entités de fonder les plus abstraites sur, il serait vraiment difficile, voire impossible, de gérer ACID, l'intégrité relationnelle ou que vous auriez à sacrifier l'autonomie de ces services et interconnexion eux, ce qui rendrait les services tout à fait inutile (et peut-être assez lent). Ou est-ce que je comprends quelque chose de mal?

Donc, mon idée était de simplement créer une DAL « traditionnelle » avec de belles JPA POJO, bien sûr avec des interfaces, et le déployer en tant que simple, bundle OSGi versionné pour les services d'affaires et de processus à utiliser, une cartographie plus abstraite. Ces services seraient alors utiliser simplement et d'exposer leur interface au bus. Servir le cas rare d'avoir besoin d'accéder à des données individuelles, comme pour l'enrichissement de contenu en chameau ou en vrac importation ou la communication des données, « l'ensemble des entités de service » pourrait être créé un vilain qui résoudrait le problème acide et l'intégrité.

Jusqu'à présent, si bien, mais: comment les WebUI (ce qui est la plupart du temps CRUD comme je l'ai mentionné, et donc pas vraiment un processus abstrait) accéder aux données? Directement à l'aide l'Assemblée parlementaire paritaire POJO rendrait tout à fait couplé tighly, mais la création d'une cartographie et d'introduire un autre modèle presque identique et utiliser ce qui précède « service monstre DAL » ne marche pas paraître trop bon aussi.

Que pensez-vous? Où est un bon équilibre entre le sens, l'élégance et la praticabilité?

Je suis désolé que ce sont plusieurs questions et le texte est assez long, mais je sentais qu'il était important de décrire la situation que nous sommes confrontés ici à un peu plus en détail.

Merci pour votre temps:)

Était-ce utile?

La solution

Ce n'est pas tant d'une réponse comme une note pour vous souhaiter bonne chance.

Nous avons une situation qui est la même / autre forme vôtre, et il révèle être un problèm très difficile à traiter efficacement.

Je pense que votre approche est OK, sonne comme vous un équilibre OK.

Vous pouvez prendre des modèles d'intégration d'entreprise comme les publié par Martin Fowler , mais si ce que vous aurez à où vous voulez / besoin d'être reste à voir.

Autres options: il y a la machine « saucisse »: où vous poussez l'ancien système dans un système qui génère du code « nouveau » (en Java ou .Net) qui devient votre nouvelle plate-forme. la bonne chose est que vous avez maintenant une base de code dans une langue que vous pouvez travailler avec, les mauvaises nouvelles est que ce sera le plus gros tas le plus terrible de spagetti vous ne l'imaginiez.

Même alors il est une entreprise énorme. Une agence gouvernementale a passé ici 2 ou 3 ans et 5 millions $ avoir fait ça. Ce ne fut pas assez ou sans douleur, mais semble avoir fonctionné. Si vous demandez assez autour (i.e.: pas StackOverflow). Vous devriez trouver des gens qui ont eu affaire à la migration hors des plates-formes de votre coincé avec, entrer dans une conversation avec eux

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top