Ok où je travaille, nous avons un nombre assez important de systèmes écrits au cours des deux dernières décennies que nous maintenons. Les systèmes sont divers: systèmes d'exploitation multiples (Linux, Solaris, Windows), bases de données multiples (plusieurs versions d'oracle, sybase et mysql) et même plusieurs langues (C, C++, JSP, PHP et un hôte). d'autres) sont utilisés.Comment intégrer au mieux plusieurs systèmes?
Chaque système est assez autonome, même au prix d'entrer les mêmes données dans plusieurs systèmes.
La direction a récemment décidé que nous devions étudier ce qu'il faudrait faire pour que tous les systèmes se parlent entre eux et partagent des données. Gardez à l'esprit que, même si nous pouvons apporter des modifications logicielles à l'un des systèmes individuels, une réécriture complète d'un système (ou plus) n'est pas quelque chose que la direction est susceptible de divertir. La première pensée de plusieurs des développeurs ici était la suivante: Si le système A a besoin de données du système B, il devrait simplement se connecter à la base de données du système B et l'obtenir. De même, s'il doit donner des données B, il suffit de l'insérer dans la base de données de B. En raison du désordre des bases de données (et des versions) utilisées, d'autres développeurs étaient d'avis que nous devrions avoir une nouvelle base de données, combinant les tables de tous les autres systèmes pour éviter d'avoir à jongler avec plusieurs connexions. En faisant cela, ils espèrent pouvoir consolider certaines tables et se débarrasser de l'entrée de données redondante.
C'est à peu près au moment où j'ai été amené à donner mon opinion sur tout ce bazar.
L'idée d'utiliser la base de données comme moyen de communication système me semble drôle. La logique métier devra être placée dans plusieurs systèmes (si le Système A veut ajouter des données au Système B, il comprendra mieux les règles de B concernant les données avant de faire l'insertion), plusieurs systèmes devront probablement faire une sorte de sondage de base de données pour trouver Toute modification de leurs données, la maintenance continue sera un casse-tête, comme toute modification à un schéma de base de données propage maintenant plusieurs systèmes. Ma première pensée était de prendre le temps et d'écrire des API/services pour les différents systèmes, qui, une fois écrits, pouvaient facilement être utilisés pour transmettre/récupérer des données. Beaucoup d'autres développeurs pensent que c'est un travail excessif et beaucoup plus que de simplement utiliser la base de données.
Alors, quelle serait la meilleure façon de faire communiquer ces systèmes entre eux?