Question

Introduction

Dans mon organisation actuelle, de nombreuses applications Web et de bureau s’alimentent mutuellement à un moment donné. Lorsqu’on s’occupe d’anciennes applications ou crée de nouvelles applications, il est très difficile d’essayer de savoir quel système dépend d’autres systèmes pour fonctionner. Je ne parle pas de dépendances logicielles telles que les DLL et les images, je parle de systèmes entiers, comme un système financier dépendant du système des ressources humaines, etc.

Ma question

Quel est le meilleur moyen de déterminer la dépendance d’un système dans son ensemble?

La réponse peut suggérer une méthode pour effectuer la procédure ci-dessus, un logiciel ou des techniques de documentation.

Dans mon cas particulier, Plusieurs signifie plus de 20 applications Web et de bureau sur une douzaine de serveurs.

Était-ce utile?

La solution

Je dirais de l'indiquer clairement dans votre document de conception d'architecture. Il existe de bons outils pour cela, tels que Enterprise Architect . Cet outil vous permet de créer des diagrammes utilisant le standard UML pour décrire ces dépendances de manière claire et visuelle.

Autres conseils

La meilleure source d’information se trouve généralement dans les fichiers de configuration. Cela contient généralement les chaînes de connexion, les URL de service Web, etc., ce qui vous donnera une bonne idée des dépendances externes.

Une autre technique consiste à utiliser le profilage ou le traçage et à appliquer des filtres, ce qui permet de suivre facilement les appels externes. Dans la plupart des cas, la dépendance se situe dans la couche base de données. La recherche de serveurs liés et le suivi de leurs dépendances peuvent révéler de nombreuses informations.

Je ne sais pas s'il existe un moyen automatique d'obtenir ces informations, en particulier si les systèmes sont installés sur plusieurs plates-formes. Beaucoup de travail manuel sera nécessaire pour documenter tout cela.

C’est le type d’application que nous produisons à l'adresse Tideway Systems , et que de nombreuses grandes organisations utilisent pour cela objectif. Vous pouvez utiliser le produit pour découvrir votre patrimoine et utiliser les fonctionnalités de modélisation pour décrire vos applications métier (généralement composées de plusieurs logiciels et serveurs étendus).

Il semble que vous ayez droit à l’utilisation gratuite de Community Edition of Foundation, que vous pouvez utiliser sur 30 serveurs au maximum - il suffit de téléchargez et vérifiez-le. Alors laissez-nous savoir ce que vous pensez s'il vous plaît!

Avertissement: je dirige le groupe de développement à l'adresse Tideway . Le produit est très cool IMO, même si je n’ai rien écrit moi-même directement:)

Eteignez chaque machine une par une et voyez ce qui se casse ..; p

Sérieusement, il n’ya pas de réponse simple à cette question. Avec un ensemble de systèmes, vous pouvez créer un diagramme montrant les dépendances de base, mais cela n’aura pas beaucoup de sens si vous n’avez pas une idée de ce qu’est la dépendance. En général, votre objectif est de déterminer ce dont vous avez besoin pour "revalider". Lorsque vous changez de système, vous ne pouvez pas éteindre les machines de manière aléatoire. Mais ce type d’information exige une grande quantité de détails et est difficile à accumuler en premier lieu.

Tout ceci finit par se retrouver dans une situation où vos systèmes sont en avance sur votre automatisation. Vous ne trouverez jamais un outil d'automatisation sous emballage rétractable qui continue. D'autre part, avec autant de détails nécessaires, tout ce qui peut prendre en charge la moitié, voire le tiers de la charge de travail, sera précieux.

C’est une bonne question. Il semble que nous nous débattions à chaque fois.

Ce que nous avons essayé de faire au cours de la dernière année, c’est d’être "impitoyable". sur deux choses:

  1. automatisation - si vous automatisez et construisez / déployez souvent, le processus d'automatisation aura tendance à fonctionner correctement la plupart du temps (paramètres de configuration, etc.)

  2. wiki, wiki, wiki - nous essayons de garder le noyau de l'équipe et du projet wiki à jour.

Curieux de voir les autres réponses.

Cela ressemble à un travail de découverte d'entreprise automatisé dans la mesure du possible. Selon la taille de votre organisation et de l'environnement, il existe différentes solutions. Pour les grands paysages, vous aurez de toute façon besoin d’une base de données CMDB (Configuration Management Database). Des produits tels que HP Universal CMDB peut détecter et dépister des dépendances dans des environnements à grande échelle.

E.g. il peut découvrir les relations entre un système SAP et ses bases de données associées et les hôtes sur lesquels les systèmes distribués s'exécutent et vous montrer les dépendances. Plus important encore, il peut vous avertir au cas où des modifications non autorisées seraient apportées à l'environnement réel.

La réponse dépend donc de ce que vous considérez comme "plusieurs".

Deux types de problèmes sont en jeu:

a.) pour ceux qui veulent savoir comment déterminer les dépendances de chaque composant

b.) pour ceux qui veulent suivre les interdépendances et leurs priorités dans un système de composants. (comme dans quel composant est d'abord installé dans un environnement de test, etc ...)

Si vous possédez une série de composants pour chacun desquels vous connaissez des dépendances et que vous souhaitez un ordre de dépendance pour la liste complète des composants, vous pouvez trouver un module Perl appelé Algorithm :: Dependency :: Ordered to d'une certaine valeur. Il existe d'autres modules associés pouvant fonctionner avec des enregistrements de base de données contenant des composants, etc. Mais un avertissement: j'ai eu des problèmes pour que cela fonctionne.

Vous pouvez également utiliser un outil graphique.

Ceci est fonction d'un " Configuration Management " groupe. Pour commencer, vous devrez parler aux "experts". dans votre entreprise et créez une carte / graphique d’applications. Utilisez graphviz / dot pour générer un diagramme, ce ne sera pas beau, mais cela vous donnera une représentation visuelle des dépendances.

Voici un exemple:

digraph g {
 rankdir=LR;
 app1->app2->db1;
 app1->app3;
}

J'espère que cela vous aidera,

Le mappage des dépendances du système est une chose. Le véritable défi consiste à définir de véritables paramètres d'environnement, des identifiants d'utilisateur, des mots de passe, des paramètres d'emprunt d'identité, des noms de bases de données et d'autres données qui évoluent du développement à la production, puis à la production.

Qui stocke / se souvient de tous?

Le développeur ne sait pas sur quel (s) serveur (s) de production son (s) application (s) va résider. Il ne documente que le nom de sa base de données de développement, de ses uid, de pwd et décrit ses tables de base de données, ses chaînes de connexion, etc.

Une fois archivés dans le référentiel de code et migrés vers l'environnement d'assurance qualité, qui conserve les données nécessaires à la mise à jour de ce fichier de configuration avec les valeurs appropriées?

Une fois de plus migré vers QA et UAT, qui?

Qui a la responsabilité d'informer le prochain groupe de migration de ce qui doit être changé?

Dans mon entreprise, c’est ce qui nous cause le plus de maux de tête. Au moment où il est approuvé par le processus de contrôle des modifications interne et qu'une demande de migration est créée pour migrer l'application dans l'environnement de production, il suffit d'un paramètre de configuration à oublier pour ruiner toute l'implémentation, et cela se produit constamment, car des lignes claires de responsabilité ne sont pas tracées (à mon avis).

Au-delà de la responsabilité, je pense est un référentiel central pour ces informations.

c'est à dire. Un système qui stocke tous les paramètres de configuration pour tous les projets / applications, et basé sur votre "rôle". vous pouvez / ne pouvez pas voir les valeurs réelles.

Le développeur termine sa construction et crée une demande de migration dans le "système". Le responsable QA reçoit une notification indiquant que la compilation ### est prête. Le responsable QA se connecte au " système " et récupère les instructions de migration. À présent, ils savent clairement ce qui doit être fait et entament le processus de vérification du code et de migration.

Répétez cette opération pour UAT et finalement prod.

Quand quelqu'un construira ce système de migration, faites-le moi savoir, car cela aidera beaucoup de gens.

Peut-être que je le construirai moi-même ... Qui veut me contracter?

J'étais nouveau sur un emploi et il a été suggéré comme première tâche d'identifier les dépendances du système. Il s'est avéré que ce que mon patron voulait dire était d'aller parler aux gens - de cette façon, j'apprendrais qui était qui. Je pensais que mon patron voulait que j'écrive un programme informatique pour le faire. Et c'est ce que j'ai fait. Mon hypothèse était que si un programme était un client d'un autre programme (un service ou un serveur), alors netstat -pant et netstat -panu , alors grep pour ESTABLISHED vous donnerait cette. Vous pouvez identifier les services en superposant la sortie pour LISTENING.

Ceci n'est qu'une solution partielle. Oui, cela vous indique quelles applications parlent avec quelles applications, mais il existe d'autres dépendances. Ainsi, par exemple, certaines applications utilisent DNS pour trouver leurs serveurs, tandis que d'autres sont codées en dur ou dans des fichiers de configuration. Tout ce qui utilise TCP ou UDP dépend de l’IP. Dans la plupart des endroits, IP dépend d’ARP, Ethernet ou WiFi. Tout ce qui dépend d’un service sur un autre réseau local dépend d’au moins un routeur.

Si vous avez un équilibreur de charge ou une sorte de cluster, le problème devient plus intéressant. Si je suis un service qui provient d’un équilibreur de charge et qui est "réel" le serveur derrière le pare-feu tombe en panne, le service est dégradé mais reste actif.

Cela devient encore plus intéressant car les services (programmes) dépendent des serveurs (matériel). Les serveurs, à leur tour, dépendent de la puissance et de la climatisation.

Alors, alors que ma pensée devenait incontrôlable, les choses se compliquaient de plus en plus, et je pensais créer un langage spécifique au domaine (DSL) pour capturer toutes ces dépendances. Je pensais que, par exemple, server_1, server_3 et server_5 étaient sous tension phase 1; server_2, server_4 et server_6 sont à la phase 2 de l'alimentation. Server_1, Server_3 et server_5 échouent à peu près au même moment: probablement la phase 1 a échoué. Je n'ai toujours pas tout compris. De toute évidence, la situation peut être représentée par un graphe orienté, je n'ai tout simplement pas réglé les détails.

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