So werden Sie in sechs Monaten oder noch schneller DevOps-Ingenieur. Teil 6. Starten der Anwendung

So werden Sie in sechs Monaten oder noch schneller DevOps-Ingenieur. Teil 1. Einführung
So werden Sie in sechs Monaten oder noch schneller DevOps-Ingenieur. Teil 2. Konfiguration
So werden Sie in sechs Monaten oder noch schneller DevOps-Ingenieur. Teil 3. Versionen
So werden Sie in sechs Monaten oder noch schneller DevOps-Ingenieur. Teil 4. Software-
Verpackung So werden Sie in sechs Monaten oder noch schneller DevOps-Ingenieur. Teil 5. Bereitstellung



Das Foto oben zeigt die Geschwindigkeit der herkömmlichen Anwendungsbereitstellung. Und wenn Sie einen Monat lang trainiert haben, befinden Sie sich jetzt in Phase 5 der Roadmap:



Startbereit?


Also haben wir unseren Code irgendwo geschrieben, verpackt und bereitgestellt. Ich habe beschlossen, die Codebereitstellung als unveränderliche Maschinenartefakte (wie EC2) zu ignorieren und mich auf Container zu konzentrieren. Warum?

Da es sehr schwierig ist, ein unveränderliches AMI im Quellcode zu backen, es überall zu kopieren und dann auszuführen. Dies ist eine gute Vorlage, aber nur, wenn dies unbedingt erforderlich ist. Ich fordere Sie daher dringend auf, zu prüfen, ob Sie genau das wirklich tun müssen, und wenn nicht, versuchen Sie, Ihre Microservices in Container oder serverlose Funktionen umzuwandeln.

Falls Container nicht möglich sind, da Sie Ihre Software als monolithische Anwendung schreiben, verpacken und bereitstellen möchten, sollten Sie die unveränderliche AMI-Vorlage berücksichtigen. Machen Sie dasselbe, wenn Sie Ihre eigenen Nicht-Cloud-Anwendungen oder kommerzielle Software ausführen müssen, die unverändert (wie sie sind) geliefert werden. Dies ist jedoch nicht das Hauptthema dieses Artikels.

Wenn wir ordentlich verpackte Container haben, wie starten wir sie?

Wirklich funktionierende Container


Am einfachsten können Sie einfach den Befehl docker run myImage ausführen und beenden. Dies ist jedoch keine gute Idee, da eine solche Lösung nicht funktioniert, wenn:

  • dieser Behälter wird plötzlich "sterben";
  • Sie benötigen mehr als einen Container, um die Ladung aufnehmen zu können
  • Sie müssen eine Bereitstellung ohne Ausfallzeiten implementieren.
  • Sie möchten die vollständige Kontrolle über Ihre Microservices
  • Sie möchten den CI / CD-Förderer verwenden, um das Produkt schnell an Kunden
    usw. zu liefern .

Mit anderen Worten, was passiert, wenn Sie eine echte verteilte Anwendung auf Unternehmensebene erstellen müssen? Offensichtlich ist dies ein so komplexer Prozess, dass der primitive Docker-Ausführungsbefehl ihn einfach nicht verarbeiten kann.

Beachten Sie, dass die Docker-Compose-Befehlstechnologie unter sehr ähnlichen Problemen leidet. Docker-Compose, mit dem Sie viele Dienste mit einem einzigen Befehl ausführen können, ist nicht für Produktionsbereitstellungen vorgesehen. Der Zweck ist lokales Prototyping, schnelle Funktionstests oder sehr kleine Bereitstellungen (z. B. Personal Home). Kurz gesagt, es ist ein Tool für Benutzer-Workloads, die keine Geschäftseinnahmen generieren.

Container-Orchestrierung beeilt sich also zur Rettung!

Eine Übersicht über Container-Orchestrierungsmethoden


Wie bei allem anderen im Leben gibt es mehr als einen Weg, um das Problem zu lösen. Das erste und offensichtlichste ist Kubernetes . Kubernetes stammt aus einem internen Google-Projekt und ist der De-facto-Standard für die Container-Orchestrierung.



Dies ist auch die einzige Option, wenn Sie Ihre Anwendung ausführen in:

  • privates Rechenzentrum;
  • Google Cloud
  • Microsoft Azure
  • jede andere öffentliche Cloud.

Wenn Sie jedoch in AWS arbeiten, haben Sie eine weitere Option - ECS. Obwohl dies streng genommen nicht ganz richtig ist: Sie haben Nomad von Hashicorp (das sind die gleichen Leute, die Ihnen Terraform gegeben haben) und Sie haben Docker Swarm von Docker. Das Problem ist, dass es viele Nischenplattformen mit minimaler Implementierung gibt. Um ein schnelles Karrierewachstum zu erreichen, ignorieren wir sie.
Wie auch immer, zurück zu AWS Elastic Container Services (ECS). Es handelt sich um einen vollständig verwalteten Container-Orchestrierungsdienst, der relativ einfach zu starten und eng in den Rest des AWS-Ökosystems integriert ist. Er macht nur ein paar Dinge, aber er macht sie gut. Kurz gesagt, dies ist so ziemlich das Gegenteil von Kubernetes, und wenn ECS für McDonald's gut genug war, dann ist es wahrscheinlich auch für Sie gut genug.

Rein im Hinblick auf den sofortigen beruflichen Aufstieg besteht jedoch kein Zweifel daran, dass Kubernetes die beste Wahl ist. Obwohl ich wette, dass 99% der in AWS tätigen Unternehmen auch ECS perfekt erfüllen werden.

Jetzt können Sie eine Auswahl treffen. Wenn Sie in diesem Bereich ein absoluter Neuling sind, können Sie sich mit Kubernetes abfinden, denn außerhalb des Teams gleichgesinnter DevOps-Ingenieure, die Sie auf Ihrer Reise unterstützen können, ist dies keine leichte Aufgabe! Das folgende Bild zeigt, wie ein zukünftiger DevOps-Ingenieur ein Zugriffssystem untersucht, das auf Kubernetes-Rollen basiert.



Dies ist jedoch definitiv möglich, insbesondere mit kostenlosen Angeboten von Google und AWS, YouTube / Udemy-Tutorials und AWS-Spotpreisen. Wenn Sie diese Route gewählt haben, empfehlen wir Ihnen, mit der kostenlosen Stufe "Google Cloud Platform Free Tier" oder "Kops" zu beginnen, mit der Spot-AWS-Instanzen gestartet werden. Kubernetes (EKS), die unter Amazon ausgeführt werden, kosten Geld und sind zwar für Produkt-Workloads geeignet, aber kein guter Weg, um zu lernen, wie Anwendungen korrekt ausgeführt werden. Und ich weiß nicht genug über Azure, um es zu empfehlen.
Wenn Sie jedoch nicht neu in diesem Bereich sind und wirklich im AWS-Ökosystem arbeiten, lautet mein Rat wie folgt. Machen Sie Ihre Microservices containerisiert und stellen Sie sie in ECS bereit, damit Sie nachts ruhig schlafen und parallel arbeiten können, um eine erstklassige Kubernetes-Plattform zu erstellen. Tatsache ist, dass das Eintauchen in Kubernetes wie das „Rasieren von Yaks“ ist, was Sie sich nicht einmal vorstellen können und Sie unweigerlich von Ihrer wahren Mission ablenken werden - Produkte schnell und effizient an Kunden zu liefern.

Hinweis: „Yak-Rasur“ ist ein Programmierbegriff, der eine Reihe von Aufgaben umfasst, die ausgeführt werden müssen, bevor ein Projekt zum nächsten Meilenstein gelangen kann. Es wurde von Carlin Vieri geprägt, inspiriert von der Episode "The Ren & Stimpy Show". Der Name des Begriffs weist auf die scheinbar Sinnlosigkeit der ausgeführten Aufgaben hin, auch wenn sie zur Lösung eines größeren Problems erforderlich sein können.

Benötigen Sie wirklich Kubernetis? Nein. Und wenn Sie wirklich mit ihm arbeiten wollen? Dann ja". Klar? Der Markt sagt: "Entweder Kubernetes oder nach Hause gehen." Werfen wir also einen kurzen Blick auf das, was Sie abonnieren, indem Sie sich an dieses Ding wenden.

Erstens ist die Idee von Kubernetes trotz des Eindrucks modernster Technologie relativ alt. Als Google 2015 Wrapper von Borg (dem Vorgänger von Kubernetes) entfernte, war das damals schon eine ziemlich alte Idee.

Lesen Sie Folgendes: „Wir bieten eine kurze Beschreibung der Architektur und der Merkmale des Borg-Systems, wichtige Entwurfsentscheidungen, eine quantitative Analyse einiger seiner politischen Entscheidungen und eine qualitative Analyse der Lehren aus zehn Jahren Erfahrung in der Arbeit mit ihm.“ Lies es nochmals! Im Jahr 2015 (!) Gab Google die Details zum Start eines Systems bekannt, das Kubernetes ähnelte und zu diesem Zeitpunkt über zehn Jahre alt war.



Sie selbst sind jedoch nicht schüchtern. Hier der erste Satz auf der Kubernetes-Homepage: „Kubernetes (K8s) ist ein Open-Source-System zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von Containeranwendungen. Es gruppiert die Container, aus denen die Anwendung besteht, in logische Blöcke, um die Verwaltung und Erkennung zu vereinfachen. Kubernetes stützt sich auf seine 15-jährige Erfahrung mit den Workloads von Google in Verbindung mit den besten Ideen und Praktiken der Community. “

Wenn Sie also das nächste Mal jemanden hören, der Kubernetes als eine neue „heiße“ Idee präsentiert, die bereit ist, die Welt zu erobern, denken Sie daran, dass er für Technologie steht, die jetzt mindestens fünfzehn Jahre alt ist. Ist das nicht ein bisschen innovativ?
Denken Sie zweitens an die Zielgruppe. Google erstellt Tools zur Lösung der Probleme von Google und Google. Auch hier sagt die Kubernetes-Homepage ganz deutlich: "Planetare Skalierung: Kubernetes wurde nach denselben Prinzipien entwickelt, mit denen Google Milliarden von Containern pro Woche starten kann, ohne Ihr Einsatzteam zu vergrößern."

Schließlich betont einer der ursprünglichen Kubernetes-Entwickler und sein aktivster Unterstützer, Kelsey Hightower, diesen Punkt: „Kubernetes ist für Leute gedacht, die ganze Plattformen bauen. Wenn Sie als Entwickler Ihre eigene Plattform erstellen (AppEngine, Cloud Foundry oder ein Heroku-Klon), ist Kubernetes genau das Richtige für Sie. “

Wenn Sie also auf planetarischer Ebene arbeiten, Milliarden von Containern pro Woche starten oder eine Cloud für andere Benutzer erstellen, ist Kubernetes die richtige Wahl. Und wenn nicht, dann ist dies nicht das Ende der Geschichte. Und es ist mir egal, dass Ihre Großmutter während der Mittagspause ein paar Kelsey-Tweets gelesen und dann ihre Blumenladen-Website in einer Woche mithilfe von CI / CD und Automated Canary Analysis auf Kubernetes umgestellt hat. Dies ist nicht das richtige Werkzeug für Sie, es sei denn, die Art Ihres Produkts erfordert, dass Sie es verwenden.

Aber ist das wirklich wichtig? Kubernetes = $$$. Steige also auf, genieße deine Reise in die DevOps-Welt und teile deine Erfahrungen mit mir.
Anmerkung des Übersetzers: Artikel 7 über Überwachungsanwendungen auf der Basis von ELK Stack wurde noch nicht veröffentlicht.

Wird sehr bald fortgesetzt ...

Ein bisschen Werbung :)


Vielen Dank für Ihren Aufenthalt bei uns. Gefällt dir unser Artikel? Möchten Sie weitere interessante Materialien sehen? Unterstützen Sie uns, indem Sie eine Bestellung aufgeben oder Ihren Freunden Cloud-basiertes VPS für Entwickler ab 4,99 US-Dollar empfehlen , ein einzigartiges Analogon von Einstiegsservern, das wir für Sie erfunden haben: Die ganze Wahrheit über VPS (KVM) E5-2697 v3 (6 Kerne) 10 GB DDR4 480 GB SSD 1 Gbit / s ab 19 $ oder wie teilt man den Server? (Optionen sind mit RAID1 und RAID10, bis zu 24 Kernen und bis zu 40 GB DDR4 verfügbar).

Dell R730xd 2-mal günstiger im Equinix Tier IV-Rechenzentrum in Amsterdam? Nur wir haben 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2,6 GHz 14C 64 GB DDR4 4 x 960 GB SSD 1 Gbit / s 100 TV von 199 US-Dollar in den Niederlanden!Dell R420 - 2x E5-2430 2,2 GHz 6C 128 GB DDR3 2x960 GB SSD 1 Gbit / s 100 TB - ab 99 US-Dollar! Lesen Sie mehr über den Aufbau eines Infrastrukturgebäudes. Klasse C mit Dell R730xd E5-2650 v4-Servern für 9.000 Euro für einen Cent?

All Articles