Was sind die Vor- und Nachteile von SnowFlakes-Servern, Phoenix-Servern und unveränderlichen Servern?

15

Ich bin neugierig auf eine Matrix wie den Vergleich von Sicherheit, einfacher Verwaltung und forensischen Fähigkeiten für jeden Servertyp. Ich kann auch einige weitere wichtige Funktionen von jedem Typ vergessen.

Ich habe eine allgemeine Vorstellung von den Typen, aber in einigen Fällen (wenn die Automatisierung für die Anwendung beispielsweise komplex wird) kann eine Referenzmatrix hilfreich sein, wenn Sie zwischen ihnen wählen.

Um zu vermeiden, dass die Bedenken zu weit gefasst werden, würde eine Aufteilung in mehrere Fragen die Informationen zerstreuen und eine Frage zum Sicherheitsvergleich müsste auch jeden Typ vergleichen.

Tensibai
quelle

Antworten:

15

Der Begriff Phoenix Server wurde von einem Kollegen von Martin Fowler geprägt, und alle drei Begriffe wurden in kurzen Artikeln über Martins Wiki beschrieben.

Die Vor- und Nachteile der einzelnen Server sind in den Artikeln beschrieben. Der Hauptunterschied liegt in der Art und Weise, wie der Server verwaltet wird.

Server sind vorhanden, um die Rolle eines Containers für einige Anwendungen zu erfüllen. Da sich Anwendungen häufig ändern, müssen häufig einige Attribute des Containers geändert werden, z. B. Pakete, Konfiguration usw. Manchmal müssen auch Attribute des Containers selbst geändert werden, z. B. aufgrund von Sicherheitslücken, für die Patches erforderlich sind installiert werden.

Es gibt verschiedene Möglichkeiten, einen vorhandenen Server zu ändern:

  1. Erstellen Sie den Server zunächst manuell und ändern Sie dann den Inhalt jedes Mal, wenn eine Änderung erforderlich ist.
  2. "Backen" Sie ein Image für einen Server anhand eines Rezepts, in der Regel auf automatisierte Weise (nicht manuell). Erstellen Sie dann Server aus diesem Image. Und wiederholen Sie diesen Vorgang bei jeder Änderung.

Ersteres wird als Schneeflocke bezeichnet, während letzteres die Servertypen Phoenix und Unveränderlich zulässt. Wenn Immutable angibt, dass keine Änderungen an einem vorhandenen Server vorgenommen wurden, nachdem dieser erstellt wurde, und Phoenix bedeutet, dass ein Server vollständig zerstört wurde und ein neuer Server verwendet wird, um ihn während des Änderungsprozesses zu ersetzen.

Evgeny
quelle
9

Da ich mehr über eine Auflistung der Vor- und Nachteile jedes Typs nachgedacht habe, ist dies meine Ansicht (nicht erschöpfend, meiner Meinung nach sind es die wichtigen operativen):

  1. Schneeflocken-Server

    • Was sie sind : Systeme mit ihrer spezifischen Konfiguration, keine anderen Server im Rechenzentrum haben genau die gleichen Parameter. Sie werden normalerweise manuell verwaltet.

    • Vorteile :

      • Passend zu den Anforderungen, die auf ihnen ausgeführt werden.
      • Updates sind in der Regel von kurzer Dauer.
      • Angepasst an spezielle Fälle, in denen die Optimierungen durch das gehostete Produkt gut dokumentiert werden.
    • Nachteile :

      • Manchmal hinterlassen Updates nicht verwendete Dateien. Die Bereinigung kann komplex sein.
      • Wenn die Änderungen an mehreren Computern vorgenommen werden müssen, dauert es eine Weile.
      • Nichts hindert undokumentierte Änderungen.
      • Im Falle einer Beschädigung müssen Sie ein Basisbetriebssystem neu erstellen und wiederherstellen. Einige OS-Optimierungen können nicht wiederhergestellt werden und sollten erneut angewendet werden. Es ist einfach, über eine Zeile zu gleiten und eine wichtige Optimierung zu vergessen.
      • Aufgrund der manuellen Konfiguration ist die Bereitstellung in der Regel lang.
  2. Phoenix-Server

    • Was sie sind : Automatisch durch einen Code konfiguriert.
    • Vorteile :

      • Durch Code definiert, versionierbar.
      • Einfach zu einem bestimmten Zeitpunkt zu replizieren.
      • Langlebige, kurze Updates auch.
      • Änderungen an kontrollierten Dateien werden dokumentiert und können nicht vergessen werden.
    • Nachteile :

    • Manchmal hinterlassen Updates nicht verwendete Dateien. Die Bereinigung kann komplex sein.
    • Nicht alles unterliegt der Codeverwaltung, einige Anpassungen eines Menschen können übersehen werden, wenn sie nicht in die Automatisierung einbezogen werden.
  3. Unveränderliche Server

    • Was sie sind :
      • Automatisierte einmalige Bereitstellung von einem Master-Image ohne generellen Zugriff.
    • Vorteile :

      • Durch Code definiert, versionierbar.
      • Einfach zu einem bestimmten Zeitpunkt zu replizieren.
      • Reduzierte Angriffsfläche durch das übliche Entfernen des Fernzugriffs.
      • Feste Konfiguration, keine Änderung kann etwas kaputt machen
      • Leicht skalierbar "on demand" aus dem Master-Image.
    • Nachteile :

      • Sie sind unveränderlich. Sie müssen sicherstellen, dass Sie bei einem 0-Tage-Fehler, der Sie betrifft, schnell ein Update durchführen können.
      • Nicht alle Anwendungen passen gut in dieses Modell (Datenbanken, zum Beispiel, ein vollständiges Ersetzen derselben Daten ist nicht immer möglich, es muss eine Migration durchgeführt werden).
      • Neue Herausforderungen für die forensische Analyse des Absturz- und Protokollmanagements.

Keines dieser Muster ist exklusiv, Sie müssen das beste nach Ihrem tatsächlichen Bedarf auswählen. Schneeflocken bereiten im Falle einer Wiederherstellung nach einer Katastrophe große Sorgen, sodass in der Regel mehr zwischen Phoenix und Immutable gewählt wird.

Tensibai
quelle
2

Bei allen drei handelt es sich um eine Art Muster. Es geht nicht darum, welche unter bestimmten Umständen ausgewählt und ausgewählt werden sollen, sondern darum, zu wissen, wann die Muster zu erkennen sind, die Ihnen helfen oder Sie verletzen können.

Schneeflockenserver

Ein Snowflake-Server ist in hohem Maße ein Anti-Pattern, das den Fall darstellt, dass sich ein Server auf unkontrollierte Weise so weit entwickelt, dass er nicht mehr einfach reproduziert werden kann.

Ich habe bereits zahlreiche Run-Ins mit dieser Art von Servern in der Produktion gehabt. Sie sind ziemlich leicht zu erkennen, da es normalerweise eine große Anzahl von fehlgeschlagenen Änderungen und Kommentaren gibt, z ".

Phoenix Servier

Ein Phoenix-Server ist eher ein Prinzip als ein Muster, wie Martin Fowler es ausdrückt:

Ein Server sollte wie ein Phönix sein und regelmäßig aus der Asche aufsteigen. [ein]

Wenn Sie IT Service Management (ITSM) oder ITIL auf dieselbe Situation anwenden würden, würden Sie dies wahrscheinlich als IT Service Continuity Plan oder Recovery Plan bezeichnen:

Ein separater Plan für jeden Dienst sollte detaillierte Verfahren und schrittweise Richtlinien für jede Phase eines Vorfalls enthalten, damit die Wiederherstellungsteams die Dienste wiederherstellen und damit die vereinbarten Prozess- und Komponenten-RTOs einhalten können.

Unveränderlicher Server

Ein unveränderlicher Server oder eine unveränderliche Infrastruktur ist der Prozess, mit dem wir die gesamte bereitgestellte Infrastruktur, Konfiguration und den Code als absolut unveränderlich, dh unveränderlich behandeln. Wenn wir etwas Neues bereitstellen, bauen wir eine neue Infrastruktur auf und stellen den Code dafür bereit. Interessanterweise erfüllt dies hauptsächlich die Bedürfnisse, die Evergreening traditionell erfüllt .


Anmerkungen

  • a: Martins Kollege Kornelis Sietsma hat in einer internen Diskussionsliste den Begriff "Phoenix Server" gefunden.
Richard Slater
quelle