Einführung in Spinnaker

1. Übersicht

In diesem Tutorial sehen wir uns Spinnaker an, eine Open-Source-Plattform für die kontinuierliche Bereitstellung, die von Netflix entwickelt wurde. Wir können es verwenden, um unsere Anwendungen bei mehreren Cloud-Anbietern bereitzustellen.

Das System basiert auf Spring Boot und unterstützt viele Cloud-Anbieter.

Wir werden sehen, wie es funktioniert und für welche Fälle wir es verwenden können.

2. Hintergrund

Werfen wir einen Blick auf die Geschichte der Softwareentwicklung. Zuerst hatten wir den Wasserfall mit seltenen Veröffentlichungen.

Danach haben wir angefangen, agil zu arbeiten und haben bei jedem Sprint Features geliefert. Wir haben jedoch nicht jeden Sprint für die Produktion bereitgestellt. Leider konnten die Benutzer die neuen Funktionen, die in einem Regal lagen, immer noch nicht nutzen.

Es gab einige Gründe für die nicht regelmäßige Bereitstellung. Eine davon war die Tatsache, dass Bereitstellungsschritte häufig manuell ausgeführt wurden und für menschliche Fehler anfällig waren.

Darüber hinaus waren einige Leute der Meinung, dass eine häufigere Bereitstellung ein höheres Risiko für potenzielle Probleme bedeutet. Heutzutage sind wir uns größtenteils einig, dass die Bereitstellung kleiner Änderungen ein geringeres Risiko für große Fehler bedeutet. Wenn es dennoch einen Fehler gibt, können wir ihn schnell in der kleinen Änderung finden und eine neue Version veröffentlichen, die das Problem behebt.

3. Spinnaker

Mit Spinnaker können wir die kontinuierliche Bereitstellung oder kontinuierliche Bereitstellung verwenden, um unsere Anwendung automatisch für die Produktion freizugeben. Kontinuierliche Lieferung bedeutet, dass alles für eine Produktionsfreigabe vorbereitet ist.

Die Version wird jedoch manuell genehmigt, bevor die Anwendung in der Produktion bereitgestellt wird. Kontinuierliche Bereitstellung bedeutet, dass keine manuellen Eingriffe erforderlich sind. Alle Schritte werden ausgeführt, einschließlich der Bereitstellung in der Produktion. Wir übertragen unseren Anwendungscode einfach auf ein Versionskontrollsystem und fertig.

Von der Weitergabe unseres Codes an die Versionskontrolle bis zur Bereitstellung in der Produktion können wir viele Schritte ausführen. Wir können unseren Code erstellen, den Code in einer Einheit testen, ihn in einer Testumgebung bereitstellen und Funktionstests ausführen. Wir verwenden eine sogenannte Pipeline, um alle diese Schritte zu konfigurieren.

Mit Spinnaker können wir eine solche Pipeline erstellen und unsere Anwendung auf den meisten Cloud-Anbietern bereitstellen.

4. Komponenten

Spinnaker besteht im Wesentlichen aus zwei Teilen: einer Abstraktionsschicht über verschiedenen Cloud-Anbietern und einem Tool für die kontinuierliche Bereitstellung.

4.1. Herkömmliche Cloud-Bereitstellungen

Wenn wir uns Cloud-Anbieter ansehen, bieten alle mehr oder weniger die gleichen Dienste an. Diese Dienste umfassen Instanzen, Serverless und Container-Unterstützung.

Die Konfiguration dieser Dienste variiert jedoch stark zwischen den Anbietern. Das macht es schwieriger, zwischen Anbietern zu wechseln. Es dauert einige Zeit, bis Sie zu einem anderen Cloud-Anbieter wechseln und alle Details erfahren. Dies bedeutet, dass wir grundsätzlich eine Lieferantenbindung mit unserem Cloud-Anbieter haben.

Netflix wollte die Möglichkeit haben, einfach zwischen Cloud-Anbietern zu wechseln, anstatt nur von einem abhängig zu sein. Aus diesem Grund haben sie eine Abstraktionsschicht auf den Cloud-Anbietern aufgebaut.

4.2. Abstraktionsschicht

Wenn wir Spinnaker verwenden, ist dies bei allen Cloud-Anbietern gleich. Wir können es auf Amazon Web Services, Microsoft Azure, der Google Cloud Platform, OpenStack, Google App Engine oder Kubernetes verwenden. Dies ermöglicht es uns, zu einem anderen Cloud-Anbieter zu wechseln, wenn die Preise wettbewerbsfähiger sind.

Darüber hinaus können wir uns dafür entscheiden, mehrere Anbieter gleichzeitig bereitzustellen. Auf diese Weise können wir unsere Anwendung für zusätzliche Redundanz auf zwei oder mehr Anbietern ausführen.

Ein weiterer Vorteil der Abstraktionsschicht besteht darin, dass sie sich auf die Anwendungen anstatt auf die Ressourcen konzentriert. Normalerweise zeigen uns Cloud-Anbieter die Ressourcen, die wir derzeit verwenden. Wir müssen jedoch selbst herausfinden, welche Anwendung welche Ressourcen verwendet.

Aber Ressourcen sind für uns nicht interessant. Wir möchten unsere Anwendung ausführen, ohne Zeit damit zu verbringen, die Ressourcen im Auge zu behalten. Spinnaker hat eine anwendungsorientierte Ansicht. Wenn wir uns das ansehen, sehen wir zuerst die Anwendung und dann die von der Anwendung verwendeten Ressourcen.

4.3. Kontinuierliche Lieferung

Auf der Abstraktionsschicht baute Netflix eine kontinuierliche Bereitstellungsplattform auf. Diese Plattform ermöglicht es uns, unsere Anwendung auf einem oder mehreren Cloud-Anbietern bereitzustellen. Es sieht ein bisschen wie Jenkins aus, bietet aber eine bessere Integration mit den Cloud-Anbietern und erfordert weniger Konfiguration.

Wir können beispielsweise die Continuous Delivery-Pipeline von Jenkins, einem hochgeladenen Docker-Image oder einem Git-Push auslösen. Danach können wir mit unserer Anwendung einfach ein Bild oder einen Container erstellen und mit der Produktion beginnen.

Es stehen jedoch noch viele weitere Optionen zur Verfügung, z. B. automatisierte Tests und manuelle Genehmigungen, bevor sie in der Produktion bereitgestellt werden.

Wir können sogar entscheiden, welche Strategie wir bei der Bereitstellung einer neuen Version einer vorhandenen Anwendung verfolgen möchten. Daher ist es möglich, die alte Version einfach durch die neue Version zu ersetzen. Eine bessere Strategie wäre jedoch, sie zuerst nebeneinander zu betreiben. Auf diese Weise können wir automatisch oder manuell prüfen, ob die neue Version funktioniert, und in diesem Fall die alte Version entfernen.

5. Das Netflix Cloud-Modell

Jede Anwendung besteht aus einer oder mehreren Servergruppen. Auf allen Instanzen in der Servergruppe wird dieselbe Version der Anwendung ausgeführt. Die folgende Namenskonvention wird verwendet: ---. Das (optionale) Stapelfeld wird verwendet, um anzugeben, ob die Servergruppe für Test-, Produktions- oder andere Zwecke bestimmt ist. Das optionale Detailfeld wird für zusätzliche Informationen verwendet.

Schließlich haben wir das Konzept eines Clusters, der eine oder mehrere Servergruppen mit demselben Namen, Stapel und Detail enthält. Meistens führt jedoch jede Servergruppe im Cluster eine andere Version der Anwendung aus. Fehlerhafte Instanzen werden durch eine neue Instanz ersetzt.

Es ist auch möglich, Instanzen automatisch zu einer Servergruppe hinzuzufügen, um der erhöhten Last Rechnung zu tragen.

6. Bereitstellungsstrategie

Wenn wir eine neue Version einer Anwendung bereitstellen, wird normalerweise die Strategie "Rot / Schwarz" gewählt. Zunächst wird eine neue Servergruppe mit der neuen Version der Anwendung im Cluster bereitgestellt. Nach der Anwendungsbereitstellung wird überprüft, ob die neue Servergruppe fehlerfrei ist.

Jetzt ist die Servergruppe aktiviert und steht unseren Kunden zur Verfügung. Schließlich ist die alte Servergruppe deaktiviert.

In diesem Szenario ist es einfach, ein Rollback durchzuführen, wenn mit dem neuen Anwendungsserver ein Fehler auftritt. Wir können die Servergruppe einfach wieder mit der alten Version aktivieren und unseren Kunden zur Verfügung stellen.

7. Warum Spinnaker?

Mit Spinnaker können wir uns auf unsere Anwendung konzentrieren, anstatt auf die von uns verwendeten Cloud-Ressourcen. Dies erleichtert die Bereitstellung und Wartung unserer Anwendungen.

Darüber hinaus ermöglicht Spinnaker die gleichzeitige Ausführung auf mehreren Cloud-Anbietern. Darüber hinaus können wir je nach Preisstrategie und verfügbaren Funktionen problemlos zu anderen Cloud-Anbietern wechseln.

8. Fazit

Spinnaker baut auf der Erfahrung von Netflix auf. Wir können ihr Wissen nutzen und mit minimalem Aufwand auf die gleiche Weise arbeiten. Basierend auf diesen Tools können wir problemlos eine Bereitstellungspipeline implementieren, um unsere Anwendungen für die Produktion bereitzustellen.

Um mehr über Spinnaker zu erfahren, laden Sie das kostenlose eBook Continuous Delivery with Spinnaker herunter.