Einführung in den Spinnaker

Einführung in Spinnaker

1. Überblick

In diesem Tutorial werden wir unsSpinnaker ansehen, eine Open-Source-Plattformcontinuous deliveryvon Netflix. Wir können damit unsere Anwendungen über mehrere Cloud-Anbieter hinweg bereitstellen.

Das System basiert aufSpring 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. Erstens hatten wir den Wasserfall mit seltenen Veröffentlichungen.

Danach begannen wir mit Agile und lieferten Features für jeden Sprint. However, we still didn’t deploy to production every sprint. Leider konnten die Benutzer die neuen Funktionen, die in einem Regal lagen, immer noch nicht verwenden.

Es gab einige Gründe für eine 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 dachten einige Leute, dass die Bereitstellung häufiger ein höheres Risiko für potenzielle Probleme bedeutet. Nowadays, we mostly agree that deploying small changes means less risk for big mistakes. Trotzdem können wir einen Fehler schnell in der kleinen Änderung finden und eine neue Version veröffentlichen, die das Problem behebt.

3. Spinnaker

With Spinnaker, we can use continuous delivery or continuous deployment to release our application on production automatically. Kontinuierliche Lieferung bedeutet, dass alles für eine Produktionsfreigabe vorbereitet ist.

Die Freigabe wird jedoch manuell genehmigt, bevor die Anwendung in der Produktion bereitgestellt wird. Kontinuierliche Bereitstellung bedeutet, dass keine manuellen Eingriffe erforderlich sind. All steps are executed, including the deployment to production. Wir senden unseren Anwendungscode einfach an 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 Unit-testen, in einer Testumgebung bereitstellen und Funktionstests durchführen. Wir verwenden eine sogenannte Pipeline, um all 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. Traditionelle Cloud-Bereitstellungen

Wenn wir uns Cloud-Anbieter ansehen, bieten sie alle mehr oder weniger dieselben Dienste an. Zu diesen Diensten gehören Instanzen, serverlose Dienste und Containerunterstützung.

Die Konfiguration dieser Dienste variiert jedoch stark zwischen den Anbietern. Das erschwert den Providerwechsel. Es dauert einige Zeit, bis Sie zu einem anderen Cloud-Anbieter gewechselt sind, um alle Details zu erfahren. Dies bedeutet, dass wir uns grundsätzlich an unseren Cloud-Anbieter als Anbieter gebunden 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

When we use Spinnaker, it’s the same on all cloud providers. 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.

Even more, we can choose to deploy to multiple providers at the same time. Auf diese Weise können wir unsere Anwendung für zusätzliche Redundanz auf zwei oder mehr Anbietern ausführen.

Another benefit of the abstraction layer is that it focuses on the applications instead of the resources. 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 mit dem Verfolgen von Ressourcen zu verbringen. Spinnaker hat eine anwendungsorientierte Ansicht. Wenn wir es uns ansehen, sehen wir zuerst die Anwendung und dann die von der Anwendung verwendeten Ressourcen.

4.3. Kontinuierliche Lieferung

On top of the abstraction layer, Netflix built a continuous delivery platform. Mit dieser Plattform können wir unsere Anwendung auf einem oder mehreren Cloud-Anbietern bereitstellen. Es sieht ein bisschen wie Jenkins aus, bietet jedoch eine bessere Integration mit den Cloud-Anbietern und erfordert weniger Konfiguration.

Wir können beispielsweise die Pipeline für die kontinuierliche Zustellung 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 vor der Bereitstellung in der Produktion.

Wir können sogar entscheiden, welcher Strategie wir beim Bereitstellen einer neuen Version einer vorhandenen Anwendung folgen 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

Every application consists of one or more server groups. Auf allen Instanzen in der Servergruppe wird dieselbe Version der Anwendung ausgeführt. Die folgende Namenskonvention wird verwendet: - <(optionaler) Stapel> - <(optionales Detail)> - . Das (optionale) Stack-Feld wird verwendet, um anzugeben, ob die Servergruppe zu Test-, Produktions- oder anderen Zwecken verwendet werden soll. Das optionale Detailfeld wird für zusätzliche Informationen verwendet.

Finally, we have the concept of a cluster that contains one or more server groups with the same name, stack, and detail. Meistens führt jedoch jede Servergruppe im Cluster eine andere Version der Anwendung aus. Fehlgeschlagene 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

When we deploy a new version of an application, the ‘red/black' strategy is normally chosen. 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 wird die alte Servergruppe deaktiviert.

In this scenario, it’s easy to roll back if something goes wrong with the new application server. Wir können die Servergruppe einfach wieder mit der alten Version aktivieren und unseren Kunden zur Verfügung stellen.

7. Warum Spinnaker?

With Spinnaker, we can focus on our application instead of the cloud resources that we use. 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 builds on the experience of Netflix. Wir können ihr Wissen nutzen und mit minimalem Aufwand auf die gleiche Weise arbeiten. Basierend auf diesen Tools können wir auf einfache Weise eine Bereitstellungspipeline implementieren, um unsere Anwendungen für die Produktion bereitzustellen.

Um mehr über Spinnaker zu erfahren, laden Sie das kostenlose eBookContinuous Delivery with Spinnakerherunter.