Bei der Renuo entwickeln wir qualitativ hochwertige Webanwendungen. Obwohl wir uns um Einfachheit bemühen, ist die Bereitstellung unserer Software nicht ganz unkompliziert. Unsere Projekte umfassen mindestens einen Webserver, eine Datenbank, eine Jobqueue und eine Datenspeicherlösung. Glücklicherweise konnten wir die Einrichtung und Wartung unserer grundlegenden Infrastruktur in den letzten Jahren stark optimieren. Manchmal erfordert eine Anwendung jedoch eine komplexere Bereitstellung. Hier kommt Kubernetes ins Spiel.
Was ist Kubernetes?
Kubernetes ist eine Open-Source-Lösung zur Verwaltung von Infrastruktur. Sie wurde von Google entwickelt, um ihre Server auf bequeme Weise zu verwalten. Seit der ersten Veröffentlichung im Jahr 2014 hat sich Kubernetes stark weiterentwickelt und wird in der Branche immer öfters benutzt. Das Hauptargument für Kubernetes ist die Möglichkeit, eine Anwendung nahezu unbegrenzt ohne zusätzlichen Aufwand zu skalieren. Und Kubernetes bietet noch viel mehr:
Automatisierte Bereitstellungen: Um eine neue Version einer Anwendung zu veröffentlichen, müssen laufende Prozesse neu gestartet werden. Um Ausfallzeiten zu vermeiden, kann Kubernetes mehrere Versionen der Anwendung parallel laufen lassen und die Last langsam von «alt» auf «neu» verschieben. Währenddessen wird der Zustand der Anwendung überwacht, und wenn etwas schief läuft, wird die Applikation automatisch zurückgesetzt.
Horizontale Skalierung: Mit Kubernetes kann die Rechenkapazität innerhalb kürzester Zeit erhöht oder verringert werden. Es ist auch möglich, die Skalierung automatisch auf der Grundlage der Nutzung vorzunehmen.
Selbstheilung: Kubernetes überwacht den Zustand der Anwendung nicht nur während der Freigabe, sondern auch während der normalen Laufzeit. Bei Zeitüberschreitungen, Abstürzen oder anderen Fehlfunktionen werden fehlerhafte Teile automatisch neu gestartet.
Infrastruktur als Code
Kubernetes basiert auf der Idee von «Infrastructure as Code», wobei die Infrastruktur über Konfigurationsdateien definiert wird. Dies steht im Gegensatz zur Verwendung der grafischen Benutzeroberfläche beliebter Hosting-Anbieter oder zur Selbstverwaltung eines Servers über die Befehlszeile. Infrastructure as Code ist in letzter Zeit sehr populär geworden, und das aus gutem Grund: Änderungen an der Infrastruktur sind versionskontrolliert. Dadurch wird die History bewahrt und die Qualität verbessert, da derselbe Genehmigungs- und Qualitätssicherungsprozess wie für den Rest der Anwendung erforderlich ist. Fehler werden erkannt, bevor sie passieren.
Alternativen
Unser bevorzugter Hosting-Anbieter für die meisten Anwendungsfälle ist Heroku. Er ermöglicht uns, ein Projekt mit sehr wenig Aufwand zu betreiben. Andere beliebte Anbieter sind AWS und render. Beide haben wir bei der Renuo bereits eingesetzt. Dokku ist ein Open-Source-Konkurrent im Hosting-Bereich. Er ist auf der Komplexitätsskala zwischen Kubernetes und Heroku angesiedelt und muss selbst gehostet werden.
Wenn wir einen genaueren Blick auf Heroku und Kubernetes werfen, können wir feststellen, dass sie unterschiedlicher nicht sein könnten. Heroku verwaltet die Server automatisch, während man bei Kubernetes selbst verantwortlich ist. Auf der anderen Seite ist Heroku einer der teuersten Hosting-Anbieter. Bei Kubernetes wird die Konfiguration in yaml geschrieben, während Heroku auf eine grafische Benutzeroberfläche setzt.
Fazit
Es gibt eine Menge guter Optionen für die Verwaltung von Infrastruktur. Wie immer ist es wichtig, das richtige Tool für das jeweilige Projekt zu wählen. Wenn die Komplexität und der Umfang sehr überschaubar sind, ist die kostengünstigste Lösung oft ein vollständig verwalteter Hosting-Anbieter wie Heroku. Kubernetes sollte jedoch in Betracht gezogen werden, wenn die Infrastruktur über diese Simplizität hinausgeht.