In den letzten Jahren hat unser Netzwerk Hunderttausende von Live-gestreamten Sportereignissen, massive Software-Downloads, Milliarden von Stunden Videostreaming und Anforderungen von Tausenden von Webanwendungen unterstützt, die alle Reaktionsschnelligkeit in Echtzeit und eine weltweit konsistente Leistung erfordern. Um dieses enorme Wachstum zu unterstützen, ist unser globales Netzwerk seit 2015 auf mehr als 250 Tbit/s gewachsen und erfordert Tausende neuer Server in unseren 300 Pops.
Um mit der Herausforderung Schritt zu halten, ein ständig wachsendes und sich ständig veränderndes Netzwerk bereitzustellen, haben unsere Operations-Teams eine IT-Automatisierungsplattform mit StackStorm entwickelt. Es ist ein riesiger Fortschritt, der die Art und Weise verändert hat, wie unsere Teams die Serverinfrastruktur implementieren, ändern, reparieren und stilllegen, die mehr als 95 % der Serverpopulation in unserem globalen Netzwerk umfasst.
Hier sehen Sie, wie wir eine Automatisierungsplattform entwickelt haben, die uns folgende Vorteile ermöglicht:
- Fügen Sie in weniger als drei Jahren mehr als 12.000 Server in unser Netzwerk ein.
- Automatisieren Sie in einigen Fällen die Ticketgenerierung und lösen Sie Probleme ohne Tickets in anderen Fällen.
- Stellen Sie unseren Teams Tools zur Verfügung, damit sie in Echtzeit zusammenarbeiten können.
- Reduzieren Sie den Zeitaufwand für die Durchführung manueller Schritte.
Anpassen von StackStorm in Projekt-Krebse
Da wir den Wert und die zunehmende Reife von IT-Automatisierungsplattformen erkannt haben, gründeten wir 2015 das Team für Infrastrukturautomatisierung unter dem Projektnamen Crayfish. Wir haben ernsthaft mit der Entwicklung einer IT-Automatisierungslösung begonnen – keine kleine Aufgabe für ein Unternehmen unserer Größe. Die Auswahl des Namens für das Projekt, das wir noch verwenden, war beabsichtigt. Seit langem haben wir Fisch- und nautische Themen für unsere Werkzeuge, aber darüber hinaus haben wir uns für Flusskrebse entschieden, weil sie als Filterfutter dienen und helfen, die Umwelt, in der sie leben, sauber zu halten.
Zunächst haben wir die Entwicklung eines eigenen IT-Automatisierungsrahmens in Erwägung gezogen, entschieden uns aber schon früh, dass StackStorm mit zusätzlichen Verbesserungen zur Unterstützung unserer einzigartigen Anforderungen und Skalierbarkeit die effektivsten Fortschritte ermöglicht hat. StackStorm ist eine ereignisgesteuerte Open-Source-Plattform, die einen „Infrastructure as Code“-Ansatz für die DevOps-Automatisierung unterstützt. Es zeichnet sich durch die Ausführung von Workflows auf der Grundlage von Ereignissen aus, lässt sich in Slack integrieren, das wir in unseren Betriebsteams verwenden, und bietet native ChatOps-Unterstützung.
Einige Konfigurationsänderungen wurden an StackStorm vorgenommen, damit StackStorm in der erforderlichen Skalierung ausgeführt werden kann. In erster Linie ging es darum, die Anzahl der ausgeführten Serviceinstanzen zu erhöhen und die Datenaufbewahrung zu reduzieren. Zu Beginn des Projekts bestand unser Netzwerk aus 8.000 Servern. Jetzt sind wir bei 20.000 Servern und zählen. Der Schlüssel zu unserer Skalierbarkeit war die Möglichkeit, eine beliebige Anzahl von StackStorm-Instanzen als Workers auszuführen, anstatt zu versuchen, dass eine einzelne StackStorm-Instanz für alles zuständig ist. Wie in der Abbildung unten gezeigt, wird dies durch eine von uns entwickelte Policy Engine ermöglicht, die die Einreichung von Anfragen an StackStorm basierend auf unserer Geschäftslogik ermöglicht. Policy Engine kann optional Anforderungen in die Queue stellen und automatisch ausführen, wenn die Richtlinien festlegen, dass sie sicher sind. Mit diesen Richtlinien werden Nebenläufigkeit, Kapazität, Datenverkehr, Produktionsstatus, Infrastruktur, Blacklists und Fehlerrate überwacht.
![](https://edg.io/wp-content/uploads/2019/03/stackstorm_blog_fig1.png)
Einreichungsanforderungen werden über eine Policy Engine-Instanz an eine beliebige Anzahl von StackStorm Workern weitergeleitet, um eine nahezu unbegrenzte Skalierbarkeit zu erreichen.
Die Kodierung von Stammeswissen
Der grundlegende Ansatz in jedem IT-Automatisierungsprojekt besteht darin, vorhandene Prozesse und Workflows zu erfassen, in Code umzuwandeln, der die Workflow-Schritte ohne manuelles Eingreifen implementieren kann, und die kodifizierten Workflows in einem zentralen Repository zu speichern, wo sie bei Bedarf entweder als Teil anderer Automatisierung oder über ChatOps-Befehle aufgerufen werden können.
Nach Beginn des Projekts hat das Crayfish-Team vorhandene Workflows und Prozesse aus dem gesamten Unternehmen erfasst. Glücklicherweise waren die meisten der wichtigsten Prozesse, die von verschiedenen Gruppen verwendet wurden, wie dem Network Operation Center (NOC), Data Center Operations oder SysOps, gut dokumentiert und konnten schnell mit der Programmiersprache Python kodifiziert und zu Crayfish hinzugefügt werden.
Wenn unser NOC beispielsweise einen Neustart-Workflow implementieren wollte, müsste es anhand verschiedener Richtlinienüberprüfungen überprüfen, ob es sicher ist, auf dem Computer zu arbeiten. Wenn sich beispielsweise ein Server in der Produktion befindet, würde das System Schritte Unternehmen, um Verbindungen zu entziehen und den Status zu aktualisieren. Als Nächstes führt sie den eigentlichen Neustart durch und führt die erforderlichen Schritte aus, um zu überprüfen, ob die Maschine produktionsbereit ist, bevor sie schließlich wieder in die Produktion zurückgeführt wird.
Sicher, es gab viele Edge-Fälle. Zu den größten Herausforderungen gehörten Prozesse, die noch nicht zur Dokumentation gelangten. Diese Fälle von Stammeswissen erforderten eine funktionsübergreifende Zusammenarbeit und das Gespräch mit den Personen, deren Fachwissen sicherstellte, dass sie korrekt behandelt wurden. Ein weiterer Vorteil der Automatisierungsbemühungen war, dass wir dieses Wissen erfassen konnten, um sicherzustellen, dass es auch in Zukunft in unserem Unternehmen bleibt.
In einigen Fällen konnten wir sogar effizientere Methoden für die Bearbeitung einer bestimmten Aufgabe identifizieren, indem wir mit mehreren Ingenieuren und Technikern in Verbindung standen, die verstanden haben, was bei einer bestimmten Aufgabe vor sich ging oder wie ein bestimmtes Problem behoben werden kann. Wir haben festgestellt, dass es in einigen Fällen unterschiedliche Wissensstufen zwischen verschiedenen Teammitgliedern gab. In diesem Fall würden wir die Informationen aller Beteiligten sammeln und einen einzigen Workflow entwickeln, von dem jeder sich einig war, dass er die effizienteste Lösung bieten würde.
Bereitstellung neuer Server auf Abruf
Crayfish hat unsere IT-Abläufe auf vielen Ebenen verändert, z. B. durch die Vereinfachung der Serververwaltung, die Reduzierung von Serverausfällen und die Beschleunigung der Serverbereitstellung. Allein im Jahr 2018 hat ITOps unser globales Netzwerk um 22 Tbit/s erweitert. Tausende von Servern wären ohne die Automatisierung von Flusskrebsen nicht möglich gewesen. Und das wurde erreicht, ohne dass die Mitarbeiterzahl erheblich gesteigert wurde.
Derzeit bietet Crayfish eine robuste Automatisierung für etwa 20 verschiedene Servertypen. In unserer Organisation definieren wir einen Servertyp als eine Gruppe von Servern, die mehr oder weniger denselben Service ausführen. Verschiedene Anwendungen werden auf verschiedenen Servertypen ausgeführt, und jeder Servertyp hat unterschiedliche Supportanforderungen in der Produktion. Heutzutage unterstützt Crayfish den gesamten Serverlebenszyklus für etwa 10 Servertypen und kann auch die meisten Reparaturen, Revisionen und Patches für etwa 10 zusätzliche Servertypen durchführen. Sie bietet auch unterschiedliche Unterstützungsgrade für etwa 40 oder 50 mehr. Da wir uns auf die am häufigsten eingesetzten Servertypen konzentriert haben, unterstützt Crayfish etwa 96 % unserer weltweiten Serverpopulation.
Die Verwendung von Krebsen hat insgesamt zu einer Steigerung der Leistung des CDN und seiner Fähigkeit, unerwartete Ereignisse zu bewältigen, geführt. Unser Netzwerk ist gut ausgestattet, um den massiven, ständig steigenden Datenverkehr von großen Sportveranstaltungen und Software-Downloads zu unterstützen, indem beispielsweise mehr Server in der Produktion bleiben und die Unterbrechung des Ausbaus von Servern während der Spitzenzeiten reduziert wird.
Unsere Skala trägt dazu bei, warum Flusskrebse aus Leistungssicht wichtig sind. Wenn Ihr Unternehmen über ein einziges Rechenzentrum verfügt, können Sie Ausfallzeiten planen und die Anforderungen dieses Rechenzentrums auf dem Laufenden halten. Wenn Sie jedoch von einem Rechenzentrum in fast jeder Zeitzone sprechen, wie in der Netzwerkkarte unten dargestellt, müssen Sie mit unterschiedlichen Profilen, Nutzungszeiten und Nutzungszeiten kämpfen. Die Berücksichtigung all dieser Faktoren kann von Fall zu Fall äußerst komplex sein, aber Krebse können sie leicht handhaben.
![](https://edg.io/wp-content/uploads/2019/03/Edgio_Network-1024x553.png)
Mit Crayfish können wir Aufgaben wie Provisioning oder Upgrades automatisch planen, aber das System ist intelligent genug, um den lokalen Anforderungen gerecht zu werden. Nehmen wir mal an, dass ein Ereignis in Lettland einen großen Anstieg des Video-Streamings verursacht hat, als wir alle Server in Lettland neu bereitstellen wollten. Aufgrund der Integration zwischen Crayfish und unserem System zur Erfassung von Metriken würde das System den Datenverkehr erhöhen und die erneute Bereitstellung stoppen. Bei Bedarf könnten sogar mehr Server in Produktion genommen werden.
Erkennen von Infrastrukturausfällen, bevor sie zu Serviceausfällen werden
Krebse und andere Überwachungssysteme reduzieren die Ausfallzeiten und Reparaturzeiten einzelner Server erheblich. Unsere Systeme überwachen das Netzwerk kontinuierlich auf Probleme oder Fehler und können automatisch Tickets erstellen oder direkt Fixes anwenden. Bei automatisierten Systemen müssen die Mitarbeiter keine „Augen auf Glas“ haben, um Netzwerkfehler zu erkennen – Computer werden nie langweilig oder müde und überwachen kontinuierlich.
Der Umfang der Kontrollen, der auf diese Weise durchgeführt werden kann, ist sehr gering. Unser Metriksystem führt fortlaufend Hardwareprüfungen durch, bei denen keine Maschinen aus der Produktion genommen werden müssen. Ein anderes System sucht nach schlechten Werten und ruft Crayfish auf, um die Maschine zu überprüfen, wenn Probleme gefunden werden. Mit diesem Ansatz können wir Hardwareausfälle sehr früh erkennen.
Wenn beispielsweise Metriken zeigen, dass eine Festplatte ausfällt, starten automatisierte Systeme einen Workflow in Crayfish, der den Fehler auf der betroffenen Maschine überprüft und Details über den Ausfall sammelt, wie z. B. die fehlerhafte Festplatte in welchem Steckplatz, die Shield-Nummer usw. Anschließend wird ein speziell gestaltetes Ticket für die Data Center Operations-Gruppe erstellt, und ein Techniker wird zur Installation eines Ersatzgeräts entsandt.
![](https://edg.io/wp-content/uploads/2019/03/stackstorm_blog_image1-1024x576.jpg)
In der Vergangenheit führte jeder manuelle Workflow, bei dem mehrere Abteilungen die Schritte koordinieren oder übergeben mussten, zu erheblichen Verzögerungen. Mit einem automatisierten Workflow kann die Zeit bis zum Abschluss Minuten betragen, anstatt Tage in einer Ticketwarteschlange zu verbringen, die auf das Popup der Anforderung wartet. Dadurch haben die einzelnen Betriebsteams, die ihre Systeme und Anwendungen am besten kennen, mehr Kontrolle.
Bereitstellung von Werkzeugen, mit denen Ingenieure produktiver arbeiten können
Unser bisheriger Ansatz für NOC-Arbeit bestand darin, einen Befehl zu erteilen und darauf zu warten, dass Dinge passieren. Wenn ein NOC-Techniker 10, 20 oder 30 Minuten darauf wartet, dass ein Server ordnungsgemäß heruntergefahren wird, müssen Sie sich fragen, warum. Ist das eine gute Zeitnutzung? Flusskrebse können viele, viele Hinrichtungen parallel ausführen. Und wie bereits erwähnt, wurde der Flusskrebs horizontal skaliert. Wenn wir also mehr Arbeit brauchen, können wir einen neuen Knoten hinzufügen. Wenn wir plötzlich eine Menge Arbeit auf einmal erledigen müssen, können wir ein paar Knoten über das gesamte CDN skalieren und es dann wieder verkleinern.
Außerdem haben Techniker nur so viel Speicher darüber, wie viele Maschinen gleichzeitig bearbeitet werden können. Nur der außergewöhnlichste Multitasker kann mehr als fünf oder sechs Maschinen in verschiedenen zuständen verarbeiten, ohne dabei den Überblick zu verlieren oder Fehler zu machen. Aber bei Krebsen ist es nicht nötig, zwischen verschiedenen Aufgaben zu springen, sondern sie können einen Befehl erteilen und weitermachen.
Aufbauend auf den vorhandenen intelligenten Bereitstellungssystemen, die von den Teams für Software Infrastructure und Systems Operations entwickelt wurden, werden andere Aspekte des Serverlebenszyklus in Crayfish vollständig unterstützt und erfolgen weitgehend autonom, einschließlich Betriebssystem-Updates, Server-Provisioning oder erneute Bereitstellung von Firmware-Updates und Sicherheitspatches. Wenn ein neuer Patch veröffentlicht wird, beschleunigt Crayfish die Validierungstests, um sicherzustellen, dass der Patch freigegeben werden kann.
Da Crayfish in Slack integriert ist, unterstützt es normale IT-Prozesse und erleichtert die Zusammenarbeit bei sich ändernden Anforderungen und Anforderungen. Anstatt auf die Implementierung einer Änderung durch eine einzelne Abteilung zu warten, können Teams ihren manuellen Prozess nun als automatisierten Workflow definieren. Sie können den Workflow dann Endbenutzern zur bedarfsgerechten Ausführung bereitstellen. Richtlinien, die einschränken, wann ein Workflow sicher ausgeführt werden kann, können ebenfalls implementiert werden. So kann ein Techniker, der vor einem Server in einem Rechenzentrum steht, einen Befehl zur Änderung des Produktionsstatus eines Servers ausgeben, an dem er arbeiten möchte.
Abschließende Gedanken
Da Tausende von Kunden täglich Terabyte an Daten über unser globales Netzwerk mit mehr als 20.000 Servern übertragen, ist unsere Implementierung von StackStorm zu einem wichtigen operativen Tool geworden, um unsere Services gesund und sicher zu halten. Dadurch konnten wir unser Netzwerk schneller skalieren, um den Kundenanforderungen gerecht zu werden und gleichzeitig trotz dynamischer Änderungen und unerwarteter Verkehrsspitzen eine bessere Leistung zu bieten. Diese betriebliche Flexibilität macht uns zu einem zuverlässigeren Serviceanbieter, der skalierbar ist, um die Anforderungen an Streaming-Medien und Webanwendungen zu erfüllen.
Die meisten Unternehmen arbeiten zwar nicht in derselben Größenordnung wie wir, aber es gibt immer noch mehrere Einsatztische, die die Automatisierung attraktiv machen können. Dazu gehören die folgenden Möglichkeiten:
- Konzentrieren Sie die Entwickler auf Arbeit, die eine höhere Rendite erzielt
- Standardisieren Sie Routine- und alltägliche Aufgaben.
- Verbesserung der abteilungsübergreifenden Zusammenarbeit.
- Reduzieren Sie Serverausfälle.
- Verbessern Sie die Sicherheit durch Implementierung von Firmware-Updates und Sicherheitspatches.
Die Umstellung auf IT-Automatisierung bietet zweifellos eine sehr attraktive Rendite, aber es ist wichtig, dass Sie aus den richtigen Gründen einen Schritt Unternehmen. Ein guter Ansatz ist es, Automatisierung als eine Möglichkeit zu betrachten, Ingenieuren Tools zur Verfügung zu stellen, die sie produktiver und kompetenter machen und ihnen ermöglichen, sich auf Verbesserungen zu konzentrieren.
Der Übergang zu Workflow-basierter Automatisierung ist eine hervorragende Möglichkeit, um Stammeswissen zu vernetzen und zu kodifizieren. Anstatt dass jeder seinen eigenen Ansatz verfolgt – wir bringen die Stämme zusammen, entwickeln einen gemeinsamen Workflow und ermöglichen es jedem, zukünftiges Wissen zu einem einzigen Ergebnis beizutragen.