Frage

Einleitung

In meiner jetzigen Organisation, wir haben viele Desktop- und Web-Anwendungen alle irgendwann ineinander Fütterung. Wenn nach älteren Anwendungen oder das Erstellen von neuen Anwendungen suchen, es erweist sich als sehr schwierig zu versuchen, und denken Sie daran, welches System verlassen sich auf andere Systeme, um zu arbeiten. Ich spreche nicht über Software-Abhängigkeiten wie DLL und Bilder, ich spreche über ganze Systeme wie ein Finanzsystem abhängig von dem HR-System etc.

Meine Frage

Welche ist die eine beste Weg, zu verfolgen, wie ein gesamtes System ist auf einem anderen abhängig?

kann die Antwort vorschlagen, entweder ein Verfahren zur Herstellung des oben tun, eine Software-Paket oder Dokumentationstechniken.

In meinem speziellen Fall, Viele bedeutet mehr als 20 Web- und Desktop-Anwendung über ein Dutzend Server.

War es hilfreich?

Lösung

Ich würde sagen, klar, dass Design-Dokument auf Ihrer Architektur angeben. Es gibt einige gute Werkzeuge für diese wie Enterprise Architect . Dieses Tool ermöglicht es Ihnen, für die Beschreibung dieser Abhängigkeiten in einer klaren und visuellen Art und Weise Diagramme mit dem UML-Standard zu erstellen.

Andere Tipps

Die beste Quelle für Informationen ist in der Regel in Config-Dateien gefunden. Dies hat in der Regel die Verbindungszeichenfolgen, Web-Service-Urls usw., die eine gute Idee, auf den externen Abhängigkeiten geben.

Eine andere Technik ist durch Profilierung mit oder Tracing und Filter anwenden, können wir leicht alle externen Anrufe verfolgen. Die meisten Fälle, die Abhängigkeit in der Datenbank Schicht und für verknüpfte Server überprüft und deren Abhängigkeiten Tracking können viele Informationen ans Licht.

Ich bin nicht sicher, ob es eine automatische Möglichkeit, diese Informationen zu erhalten, insbesondere wenn die Systeme auf mehreren Plattformen sind. Viel Handarbeit wird beteiligt, alles zu dokumentieren.

Dies ist die Art von Anwendung, die wir unter Tideway Systeme , und die viele große Unternehmen verwenden für nur diese Zweck. Sie können das Produkt verwenden, Ihren Nachlass zu entdecken, und die Modellierungsfunktionen verwenden, um Ihre Business-Anwendungen zu beschreiben (die in der Regel mehr als ein Stück Software und Span-Servern bestehen).

Es klingt wie Sie die kostenlose Community Edition der Stiftung nutzen qualifizieren, die Sie bis zu 30 Server verwenden auf kann - nur Download es und check it out. Dann lassen Sie uns wissen, was Sie denken, bitte!

Disclaimer: Ich betreibe die Entwicklungsgruppe unter Tideway . Das Produkt ist IMO sehr cool, obwohl ich nichts davon geschrieben habe ich direkt:)

jede Maschine einzeln ausschalten und sehen, was bricht ..; p

Aber im Ernst, es gibt keine einfache Antwort auf diese Frage. Mit einer Sammlung von Systemen könnten Sie ein Diagramm erstellen, um die grundlegenden Abhängigkeiten zeigen, aber es würde nicht viel Sinn haben, wenn Sie eine Vorstellung davon hatte, was die Abhängigkeit war. Normalerweise Ihr Ziel ist, zu bestimmen, was Sie brauchen, um „Revalidierung“, wenn Sie ein anderes System ändern, nicht die Maschinen, die Sie zufällig ausschalten. Aber diese Art von Informationen erfordert eine große Menge an Details und ist schwer in erster Linie zu akkumulieren.

Diese endet schließlich alle in einer Situation, wo Sie sind Systeme vor Ihrer Automatisierung sind. Sie werden nie ein eingeschrumpft Automatisierungs-Tool finden, die oben hält. Auf der anderen Seite mit so viel Detail notwendig etwas, das sich um die Hälfte nehmen oder sogar ein Drittel der Arbeitsbelastung wird wertvoll sein.

Dies ist eine gute Frage -. Wir mit dieser jedes Mal kämpfen, wie es scheint

Was wir versucht haben, im letzten Jahr oder so zu tun ist seine „rücksichtslos“ auf zwei Dinge:

  1. Automatisierung - wenn Sie es automatisieren und bauen / deploy oft, dann wird der Automatisierungsprozess wird dazu neigen, die Dinge richtig machen die meisten der Zeit (config-Einstellungen usw.)

  2. wiki, wiki, wiki -. Wir versuchen, Hard-Core auf halten das Team und Projekt-Wiki up-to-date

  3. zu sein

Curious andere Antworten zu sehen.

Das ist Funktion eines „Configuration Management“ -Gruppe. Um loszulegen, müssen Sie den „Experten“ in Ihrem Unternehmen sprechen müssen und eine Karte / grafische Darstellung von Anwendungen erstellen. Verwenden Sie graphviz / Punkt, ein Diagramm zu erzeugen, es wird nicht schön sein, aber es wird Ihnen eine visuelle Darstellung der Abhängigkeiten.

Hier ist ein Beispiel:

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

Hope, das hilft,

System Dependency Mapping ist eine Sache. Echte Umgebungseinstellungen, UID, Passwörter, Identitätswechsel Einstellungen, Datenbanknamen und andere Daten, die von der Entwicklung bis qa ändern, um die Produktion zu UAT ist die eigentliche Herausforderung.

Wer speichert / erinnert sie alle?

Der Entwickler weiß nicht, welche Produktions-Server (n) seine Anwendung auf residieren wird. Er dokumentiert nur den Namen seiner Entwicklung Datenbank, UID, PWD ist und beschreibt seine Datenbanktabellen, anschl Strings, etc.

Sobald es in den Code-Repository eingecheckt hat, und an die QA-Umgebung migriert, die durch die Mitte der Daten ist verpflichtet, diese Konfigurationsdatei mit den richtigen Werten zu aktualisieren?

Auch bei der Migration zu QA und UAT, wer?

Wer hat die Verantwortung ist es, die nächste Migrationsgruppe zu informieren, was geändert werden muss?

In meiner Firma ist das, was bewirkt, dass uns die meisten Kopfschmerzen. Zu der Zeit, es durch den internen Änderungskontrollprozess und eine Migrationsanforderung erstellt wird genehmigt bekommt die Anwendung in die Produktionsumgebung zu migrieren, alles was man braucht ist eine Konfigurationseinstellung vergessen werden, um die gesamte Implementierung zu ruinieren, und es geschieht die ganze Zeit, weil klare Verantwortlichkeit sind nicht gezeichnet (in meiner opnion).

Darüber hinaus Verantwortung, die ich denke, ist ein zentrales Repository für diese Informationen.

dh. Ein System, das alle Konfigurationseinstellungen für alle Projekte / Anwendungen speichert, und auf der Grundlage Ihrer „Rolle“ können / kann nicht die tatsächlichen Werte sehen.

Der Entwickler beendet seine Build und erstellt eine Migrationsanforderung in dem „System“. Die QA Person erhält eine Benachrichtigung, die ### ist fertig bauen. Die QA Person meldet sich das „System“ und ruft die Migration Anweisungen. Jetzt wissen sie genau, was getan werden muss, und sie Begeht die Code-Check-out und Migrationsprozess.

Wiederholen Sie dies für UAT und schließlich prod.

Wenn jemand baut diese Migration System lassen Sie mich wissen, denn das wird vielen Menschen helfen.

Vielleicht baue ich werde es selbst ... Wer will mich zusammenziehen?

Ich war neu für einen Job, und es wurde als erste Aufgabe vorgeschlagen, dass ich die Systemabhängigkeiten gehen zu identifizieren. Es stellt sich heraus, dass das, was mein Chef gemeint war die Rede, um Menschen zu gehen - auf diese Weise würde ich erfahren, wer wer war. Ich dachte, mein Chef mich wollte, dass ein Computerprogramm schreiben, zu tun. Und so habe ich getan. Meine Vermutung war, dass, wenn ein Programm ein Kunde von einem anderen Programm ist (ein Service oder ein Server), dann netstat -pant und netstat -panu dann für Sie, dass würde grep GEGRüNDET. Sie können die Dienste identifizieren, indem die Ausgabe für ZUHÖREN greppen.

Das ist nur eine Teillösung. Ja, es sagt Ihnen, welche Anwendungen auf welche Anwendungen sprechen, aber es gibt auch andere Abhängigkeiten. So zum Beispiel verwenden einige Anwendungen DNS ihre Server zu finden, während andere hart codiert oder in Konfigurationsdateien sind. Alles, was TCP oder UDP verwendet, ist abhängig von IP. An den meisten Orten ist IP abhängig von ARP und Ethernet oder WiFi. Alles, was in Abhängigkeit von einem Dienst auf einem anderen LAN ist abhängig von mindestens einem Router.

Wenn Sie einen Load-Balancer oder irgendeine Art von Cluster haben, dann wird das Problem noch interessanter. Wenn ich einen Dienst, der aus einem Load Balancer kommt und entweder „echter“ Server hinter der Firewall ausfällt, dann wird der Dienst abgebaut, ist aber immer noch.

Es wird noch interessanter, weil Dienstleistungen (Programme) ist abhängig von Servern (Hardware). Server, der wiederum hängt von Strom und Klimaanlage.

So wie mein Denken außer Kontrolle geraten, bekam die Dinge schrecklich kompliziert, und ich dachte über eine domänenspezifische Sprache (DSL) zu schaffen all diese Abhängigkeiten zu erfassen. Ich dachte, dass zum Beispiel server_1, server_3 und server_5 sind auf Leistungsphase 1; server_2, Server_4 und server_6 sind auf Power-Phase 2. Server_1, Server_3 und server_5 alle scheitern etwa zur gleichen Zeit: wahrscheinlich Phase 1 ausgefallen ist. Ich habe immer noch nicht ganz dachte, dass aus. Offensichtlich kann die Situation durch einen gerichteten Graphen dargestellt werden, ich habe einfach nicht die Details ausgearbeitet.

scroll top