Der Blog

Skalieren Sie sich, bevor Sie sich selbst ruinieren

von Sara Jeanes 9. November 2017 | 5 Minuten Lesezeit

Wenn Sie Ihr Geschäft und Ihren Benutzerstamm vergrößern möchten oder mit den Wechselfällen moderner Softwarebereitstellung zurechtkommen wollen, ist Skalierbarkeit – also die Fähigkeit, die Anwendungsnachfrage auf jeder Ebene zu erfüllen – von entscheidender Bedeutung.

Doch Skalierung ist keine leichte Aufgabe. Die meisten Legacy-Anwendungen haben Mühe, Tausende von Benutzern zu unterstützen. Ein unerwarteter Datenverkehrsanstieg bringt eine Anwendung, die nicht dafür ausgelegt ist, einfach zum Erliegen. Unzählige Kunden und Geld gehen verloren, während das ITOps-Team damit kämpft, VMs oder Rack-and-Stack-Server hochzufahren, um die Last zu bewältigen.

Und selbst wenn Sie Ihre App in der Cloud ausführen, ist die Skalierbarkeit nicht garantiert. Bei einer schlecht konzipierten Cloud-App treten Engpässe auf, die sie unbrauchbar machen.

Angesichts der enormen Kosten, die suboptimale digitale Dienste für die Produktivität, verpasste Chancen und mehr verursachen, ist Skalierbarkeit heute für jedes Unternehmen von entscheidender Bedeutung. Und sie ist möglich! Sie erfordert die Implementierung der die richtigen Werkzeuge und Prozesse , das richtige Team und die richtigen Kommunikationswege zwischen diesem Team. Im Folgenden erkläre ich, wie Sie Skalierbarkeit erreichen, um zu verhindern, dass Ihre Software und Organisation aus der Bahn geworfen werden.

Die Prinzipien der Skalierbarkeit

Bei der Vorbereitung auf Skalierbarkeit sind Flexibilität und die Anpassung der bereitgestellten Infrastruktur an die Last entscheidend. Dies kann auch zu Kosteneinsparungen bei der Bereitstellung einer Anwendung führen. Wenn Sie Ihre Verkehrsmuster, die durchschnittliche Nutzung und die Standardabweichung kennen, können Sie Ihre Umgebung richtig dimensionieren. Und wenn Sie eine schnelle Skalierung für ein äußerst seltenes (aber mögliches) Ereignis planen, kann Ihnen das viel Kopfzerbrechen ersparen, wenn die Anwendung viral wird. Wenn eine Anwendung regional bereitgestellt wird, treten Leerlaufzyklen oft mitten in der Nacht auf. Die Auslastung an Wochentagen kann im Vergleich zur Auslastung am Wochenende erheblich variieren. Viele Unternehmen sind saisonabhängig, und die Nutzung der Anwendung ist von einer Jahreszeit zur nächsten geringfügig oder exponentiell geringer.

Beim Skalieren geht es auch darum, die Reproduzierbarkeit Ihrer Artefakte sicherzustellen, was wiederum die Konsistenz in Produktionsbereitstellungen erzwingt. Die Serviceartefakte können dann unabhängig voneinander skaliert werden, wenn sich die Anwendungsanforderungen ändern und wachsen. Diese Methode erfordert ein fundiertes Verständnis von DevOps , mit einer dauerhaften kontinuierlichen Integration und Kontinuierliche Bereitstellung Pipeline im Kern.

Tools und Prozesse, die Skalierbarkeit ermöglichen

Zuallererst muss der Quellcode der Anwendung in ein Versionskontrollsystem eingecheckt werden. Anstatt diese gut strukturierte Ausgabe zu nehmen und einen maßgeschneiderten Server-Stack darum herum aufzubauen, muss der Server-Stack selbst ebenfalls in Code umgewandelt werden. Das kann anfangs ein mühsamer Prozess sein, aber die einzige Möglichkeit, eine Infrastruktur jedes Mal konsistent zu skalieren, besteht darin, sich nicht darauf zu verlassen, dass ein ITOps-Mitarbeiter auf jedem für Entwicklung, Test und Produktion bereitgestellten Server auf die Schaltfläche „Weiter“ klickt oder Befehle in die Konsole eingibt.

Sobald Ihre Infrastruktur und Ihr Code gut definiert sind, können Sie Integrationstests schreiben, um sicherzustellen, dass sie in einer vollständig erstellten Umgebung wie vorgesehen funktionieren. Um diese auf die nächste Ebene der Komplexität zu bringen, können Container als Infrastrukturbausteine verwendet werden. Diese Blöcke haben dann konsistente „nach unten“ gerichtete Hooks zur Infrastruktur. Eine Cloud-Container-Management-Plattform, kombiniert mit Manifestdateien, die beschreiben, wie die Dienste zusammenpassen und skaliert werden sollten, verwandelt diese konsistenten Artefakte in eine äußerst robuste und skalierbare Anwendung.

Koordinierung Ihres Teams

Die oft übersehene wesentliche Zutat für Skalierbarkeit ist ein Team, das sich gut in die oben beschriebene technologische Topologie einfügt. Ein solches Team besteht aus drei Hauptgruppen (Hinweis: Namenskonventionen für Titel und Aufgabenverteilung können je nach Organisation unterschiedlich sein):

  • Entwickler — Einspeisen von Anwendungscode in die Pipeline
  • ITOps-Teams — verantwortlich für das Schreiben von Infrastructure-as-Code zum Erstellen von Images, die den Anwendungscode enthalten und ausführen
  • Site Reliability Engineers (SREs) — Arbeiten Sie mit dem ITOps-Team zusammen, um die laufende Anwendung in der Produktion zu überwachen und zu optimieren und die Umgebung für Skalierbarkeit und Zuverlässigkeit zu entwerfen und aufzubauen

Der Trick bei der Koordination Ihres Teams zur Maximierung der Skalierung besteht darin, dass sich die SREs auf Zuverlässigkeitsbemühungen konzentrieren, indem sie die von ihren Teammitgliedern geschriebene Infrastruktur als Code nutzen, anstatt Zeit mit manueller Konfiguration zu verbringen. Dies führt zu einer anderen Art von Teamanordnung als bei einer herkömmlichen Teamstruktur, bei der Anwendungscode von den Entwicklern einfach „über die Mauer geworfen“ wird, damit das ITOps-Team ihn bereitstellen und ausführen kann. Das herkömmliche Modell ist eine stark manuelle Umgebung und fehleranfällig.

Ergänzend zu dieser größeren Transparenz der Infrastruktur können Entwicklungsteams ein höheres Maß an Anwendungsablaufprotokollierung implementieren, um Probleme schneller zu erkennen. Als Anreiz zur Entwicklung einer besser instrumentierten Anwendung können Canary-Releases schnell für einen Teil der Benutzerbasis der Anwendung bereitgestellt werden. So kann das Team neue Funktionen testen und Fehler schneller finden, ohne die größere Benutzerbasis der Anwendung zu beeinträchtigen. Mit Canary-Releases können Sie außerdem schrittweise neue Funktionen veröffentlichen, wodurch die Wahrscheinlichkeit von Vorfallspitzen während der Einführung verringert wird.

Kommunikation ist der Schlüssel

Und zu guter Letzt: Denken Sie daran, wie wichtig Kommunikation ist. Es versteht sich von selbst, dass selbst das am besten strukturierte Team keine Skalierbarkeit erreichen kann, wenn die Teammitglieder nicht reibungslos miteinander kommunizieren können.

Effektive Kommunikation erfordert nicht nur Tools zur Automatisierung von Kommunikationsaufgaben, sondern auch die Verpflichtung, sicherzustellen, dass alle in Ihrem Team „dieselbe Sprache sprechen“ – was bedeutet, dass Entwickler, ITOps und SREs auf für beide Seiten verständliche Weise miteinander kommunizieren können, weil sie alle die Rollen und Bedürfnisse der anderen kennen.

Die ersten Schritte auf dem Weg zur Anwendungsskalierung können einschüchternd sein. Menschen, Prozesse und Technologie müssen sich ändern, um von der Wasserfallmethode zu DevOps zu wechseln und herkömmliche Infrastrukturmanagementpraktiken in moderne ITOps und Zuverlässigkeitstechnik umzuwandeln.

Ganz ähnlich wie die agile Entwicklung Die Revolution hat in kürzerer Zeit einen Mehrwert geschaffen, jeder Schritt auf dem Weg zur Skalierung bringt einen Wert, der sofort realisiert werden kann.