Frage

Wenn Sie eine Java-Anwendung für Worst-Praktiken prüfen haben, wenn es Hochverfügbarkeit und Disaster Recovery kommt, würden Sie wahrscheinlich für hartcodierte IP-Adressen suchen und suboptimales Caching von bind Griffen. Was sonst sollte in Betracht gezogen werden?

War es hilfreich?

Lösung

Fehlende Maßnahmen / Zustand Protokollierung.

Ein Java-Anwendung sollte in der Lage sein, wieder aufnehmen, wo es war, als es abgestürzt ist.
Das heißt, es sollte ein Mechanismus in der Lage sein zu notieren, was bereits (um nicht alles wieder von vorne an den nächsten Lauf zu tun) getan hat.

Das bedeutet, dass auch ein solches Java-Programm sollte den gleichen Zustand nach dem gleichen Reihe von Aktionen immer erreichen. (Macht sie etwas zweimal in dem gleichen Ergebnis führen würde, und die Aktionen geschehen sollen nicht wiederholt werden, sondern einfach übersprungen)

Diese Aufzeichnung viel Form annimmt (Datei, Datenbank, Metadaten in einem Repository von Art, ...), aber der Punkt ist:. Eine Java-Anwendung bereit, so schnell wie möglich erholen sollte wissen, was es bereits getan hat

Andere Tipps

Der Mangel an Überwachungseinrichtungen. Früher oder später werden alle Anwendungen fehlschlagen. Wenn das passiert, werden Sie wollen es wissen, bevor es jemand anderes tut.

Der Mangel an Protokollierung. Wenn Sie nicht, was finden Sie Ihre App getötet, dann ist es wirklich schwer, es zu beheben. Dies ist besonders böse, wenn Sie sehr intermittierende Ausfälle haben, die schwer zu repro Fällen haben.

Da eine angemessene Überwachung bereits erwähnt, möchte ich hinzufügen, anstelle einen Notfallplan haben. Es kann etwas so einfach sein wie: wenn dies dann geschieht, werden wir dies tun, wenn diese andere Sache geschieht dann, dass wir es tun. Dann, wenn Probleme auftreten, die Sie gerade folgen dem (vorher getestet) Plan statt jede Panik mit und schnellen Entscheidungen zu treffen.

Wie ich es sehe es gibt ein paar wesentliche Aspekte zu dem, was Sie fragen. Ich glaube nicht, dass die Sprache spezifisch ist, und Sie eine Java-Anwendung als Beispiel verwendet, damit ich hoffe, dass Sie nichts dagegen habe ich nicht speziell über Java reden.

Failover / HA : Hier können Sie Ihren SPOF identifizieren - Single Point of Failure. Beispiele hierfür sind hartcodierte Adressen, wie Sie erwähnt, sondern auch Anwendungen, die Daten in nicht-replizierbar Mittel, wie eine lokale Festplatte speichern. Andere Artikel könnten DNS-Lookups für „zu lang“ werden das Caching, nicht die Wiederherstellung abgetrennte Verbindungen, auf der Suche nach bestimmten Hardware-Informationen (wie MAC-Adressen, CPUIDs, Dongles, partition Etikett, MB oder Laufwerk Seriennummern, etc.). Ich habe alle diese als Probleme, die zu unnötigen Abhilfen gesehen BCP / DR funktionsfähig zu erhalten.

Datenintegrität : Wie werden die Daten gespeichert? Ist es ein benutzerdefiniertes Format / Struktur verwenden? Wenn dies der Fall ist es ein „Sichern und Wiederherstellen“ Mechanismus? Ist der Dienst Notwendigkeit der Wartung Kunden zu stoppen, oder es nicht abbaut es Service ist Backups zu tun? Gibt es Daten an ein Gerät schreibt asynchron und wenn ja, wie oft ist es „gespült“ auf der Festplatte (manchmal ist dies bis zu der App, andere nicht so viel)? Das Sperren von Dateien, Speicher-persistenten Speicher Zeitrahmen und Fähigkeiten sind auch Teil davon.

aussehen Wesentlichen auf das, was würde dazu führen, Sie zu haben, um zu arbeiten. Dann sehen Sie, wie es dazu kam stoßen und Sie werden wahrscheinlich zwei wichtige Bits von Wissen zu entwickeln beginnen: Patterns zu verwenden BCP / DR zu verbessern, und wie Sie bereits erwähnt, Antipatterns, die Probleme verursachen. Injizierenden diese Art von Fragen in den Entwicklungsprozess, wie bereits machbar ist, wird Ihre Entwickler leiten die Muster und anti-Muster, die Sie für Ihre Suche helfen. Oft nur die Fragen, die Probleme verhindert.

Das Beste, was zu tun ist, etwas Zeit und testen Sie es zu planen. Sie werden viel mehr Probleme dies zu tun finden. Sobald Sie alles dokumentiert haben, jemand anderes es ohne Ihre Hilfe zu tun. ;)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top