DevOps in einer Cloud-nativen Welt: Zwei der wichtigsten Tech-Begriffe prallen aufeinander
Viele Tech-Führungskräfte stellen sich die Frage: Worum handelt es sich bei DevOps und Cloud-nativer Entwicklung und wie hängen sie zusammen?
DevOps und Cloud-native Entwicklung: Worum handelt es sich dabei und wie hängen sie zusammen?
DevOps ist vergleichsweise „alt“ und schon seit mehr als 10 Jahren gängig. Aber nur weil es schon so lange existiert, bedeutet das noch lange nicht, dass allen bewusst ist, worum es sich dabei überhaupt handelt und wie es in der Praxis zum Einsatz kommt. Kommt dann auch noch die neuere – und noch weniger verstandene – Cloud-native Entwicklung ins Spiel, ist die Verwirrung verständlicherweise groß.
Das ist wahrscheinlich der Grund dafür, dass wir feststellen mussten, dass ohne feste Definitionen jedes Gespräch über diese beiden Konzepte schnell in die falsche Richtung läuft. Bevor wir uns also anschauen, wie sie funktionieren, müssen wir zunächst klären, was sich hinter diesen Begriffen verbirgt – und was nicht.
Werfen wir als Erstes einen Blick auf DevOps. Bei DevOps handelt es sich weder um einen Service oder ein Produkt noch um eine Berufsbezeichnung. Es ist ein Betriebsmodell, das Entwicklungs- und Infrastrukturfunktionen in funktionsübergreifenden Teams zusammenführt. All dies wird durch Automatisierung möglich gemacht und mittels agiler Methoden koordiniert. Unter „Cloud-nativer“ Entwicklung ist die Modularisierung Ihres Anwendungs-Stacks und die Nutzung von Microservices zu verstehen, mithilfe derer eine serverlose Systemarchitektur geschaffen und Ressourcen optimiert werden können. Es geht darum, Anwendungen zu entwickeln und zu modernisieren, um von den wichtigsten Eigenschaften des Cloud Computings im Hinblick auf Skalierbarkeit, Zuverlässigkeit und Automatisierung zu profitieren und diese zu maximieren.
Und genau hier prallen DevOps und Cloud-native Entwicklung aufeinander. Was heutzutage modern und Cloud-nativ ist, kann in 5 Jahren schon wieder veraltet sein. Hyperscaler bringen ständig neue Services heraus und Technologien schreiten schnell voran.
Mit DevOps haben Sie die Möglichkeit, die Art und Weise, wie Sie Ihre Anwendungen und Ihre Teams gestalten, kontinuierlich weiterzuentwickeln. So können Sie mit neuen Technologien Schritt halten, sobald diese auf den Markt kommen.
Es gibt drei Bedingungen für die richtige Umsetzung von DevOps
Der Weg hin zu einer erfolgreichen Umsetzung von DevOps kann ganz schön beschwerlich sein, besonders wenn man sich auch noch mit der Verwendung von Cloud-nativen Services auseinandersetzen möchte. Und lang ist der Weg meist auch. Es gibt jedoch drei Voraussetzungen, deren Erfüllung sich immer wieder als Grundlage für wahren Erfolg abgezeichnet hat.
Zuallererst müssen alle Missverständnisse im Hinblick auf die Natur und Implementierung von DevOps beseitigt werden. Unternehmen stellen nicht einfach ein DevOps-Team zusammen oder kaufen eine Anbieterlösung und schon sind all ihre Prozesse automatisiert. Was sie stattdessen tun, ist Grenzen und Hindernisse zwischen Teams zu beseitigen, um verschiedene Disziplinen miteinander zu verknüpfen und ein gemeinsames Verständnis und Ziel zu schaffen. Um wirklich mit der Einführung von DevOps und den damit verbunden agilen Methoden innerhalb Ihrer Cloud-nativen Entwicklung beginnen zu können, müssen zunächst alle betroffenen Teams mit den notwendigen Fähigkeiten ausgestattet werden, die es ihnen erlauben, End-to-End-Verantwortung für ihren Teil des Produkts oder Services zu übernehmen.
Zweitens müssen alle Stakeholder von Anfang an auf derselben Seite sein. Oftmals ist es so, dass wichtige Stakeholder in einem Vortrag von „DevOps“ hören und dann ins Büro kommen und verkünden: „Wir nutzen jetzt DevOps.“ Diese Begeisterung ist zwar schön und gut, aber wenn nicht die richtigen Personen mit im selben Boot sitzen – also diejenigen, die Entwicklungs-, Anwendungs-, Datenbank- und Infrastrukturteams leiten –, kann der Start äußerst holprig werden.
Zu guter Letzt sollten Anwendungseigentümer und -entwickler über die Anforderungen an die Systemarchitektur entscheiden. Sie wissen selbst am besten, welche Technologien sie benötigen und was in ihrem Anwendungs-Stack vorhanden sein muss, damit es zur Implementierung kommen kann. Allerdings sollten sie auch von den Infrastrukturteams dazu angewiesen werden, standardmäßig PaaS und SaaS zu verwenden. Sehr oft haben Teams zuvor mit Instanzen und VMs gearbeitet. Wenn jemand eine VM oder eine Mongo- oder Redis-Datenbank möchte, ist es im DevOps-Bereich die Aufgabe des Infrastrukturteams, Cloud-native Alternativen zu finden und zu empfehlen. (Wenn nach eingehender Recherche oder bei zusätzlichem Entwicklungsbedarf auf VMs zurückgegriffen werden muss, ist das natürlich vollkommen in Ordnung.)
Wie sieht echtes DevOps für die Cloud-native Entwicklung nun also aus, wenn Unternehmen neue Releases herausbringen?
Zunächst ist in einer Cloud-nativen Welt hinsichtlich neuer Launches und Releases mit DevOps zu sagen, dass diese sonst so großen Bereitstellungen eigentlich gar kein so großes Ereignis mehr sind, wenn man die beiden Konzepte erst einmal erfolgreich miteinander kombiniert hat. Sie haben jeden noch so kleinen Fehler behoben, sind Schritt für Schritt vorgegangen und der Tag des Launches ist nur noch das letzte Puzzleteil. Das ist eine ganz schön befreiende Situation, in der Sie sich befinden.
Während der finalen Züge kurz vor dem Veröffentlichungsdatum läuft die von Ihnen entwickelte Maschine schon auf Hochtouren und jedes Ihrer Teams macht sich pünktlich an die Arbeit, um vor dem Launch die letzten Lasttests durchzuführen. Hierbei funktioniert alles einwandfrei, weil Sie die vergangenen Monate damit verbracht haben, einen wasserdichten Plan zu erstellen, den alle Beteiligten genauestens kennen und verstehen. Jede und jeder Mitarbeitende weiß, wann genau die Entwicklungsumgebung und die Infrastruktur auf dem Markt eingeführt werden müssen, um das gemeinsame Ziel zu erreichen.
Es ist vergleichbar mit einer Sinfonie. Alle Mitwirkenden müssen wissen, welchen Part sie spielen, wann dieser einsetzt und wie er zum Gesamtergebnis beiträgt. Wenn alles harmoniert, entsteht etwas Wunderbares. Wenn nicht … ist es eben sehr unharmonisch.
Ans Ziel kommen: lieber mit der Unterstützung eines Partners oder im Alleingang?
Wenn Sie DevOps und Cloud-native Entwicklung mit der Unterstützung eines Drittanbieters implementieren möchten, müssen Sie einen Anbieter finden, dessen Personal und Fähigkeiten Ihre bereits vorhandenen Ressourcen ergänzt und optimiert. Sie wollen bei der Zusammenstellung von funktionsübergreifenden Teams Kompetenzen dazugewinnen, die zu Ihrem Betriebsmodell passen – Sie wollen schließlich nicht von externen Partnern abhängig sein. Wenn Sie beispielsweise schon ein solides Entwicklungs- und Produktteam haben und lediglich Unterstützung für Ihr Infrastrukturteam benötigen, dann sollten Sie darauf achten, dass Ihr Partner als Erweiterung dieses Teams fungiert (und er nicht das gesamte Team ist). Es sollte immer eine Zusammenarbeit sein.
Wenn Sie den Weg doch alleine gehen, fangen Sie klein an und iterieren Sie. Es wird einige technische Schulden zu begleichen geben und viel Lernen auf beiden Seiten nötig sein. Haben Sie also Geduld. Ein Erfolgsgefühl kann sich jedoch schon von Anfang an einstellen, wenn Sie mit einfachen Aufgaben beginnen und Ihre Tools daran ausprobieren, um erst einmal alle Beteiligten auf eine Seite zu bringen. Sie könnten zum Beispiel zunächst nur einen ganz bestimmten Teil der Bereitstellung automatisieren oder Ihre Unternehmensanforderungen an die Verfügbarkeit, an Backups und ans Monitoring ausarbeiten und darauf aufbauend das erste Projekt planen.
DevOps und Cloud-native Entwicklung bedeuten lebenslanges Lernen – fangen Sie also besser gleich an (oder zumindest bald)
Es handelt sich hierbei um einen Prozess und das Ergebnis ist nicht fix oder statisch. Es gibt immer etwas Neues zu lernen und neue Herausforderungen, die überwunden werden müssen, wenn Sie es mit der Einführung oder Wartung von DevOps-Kompetenzen zu tun haben.
Unternehmen, die sich noch in der frühen Phase von DevOps befinden, haben oft mit traditionellen IT-Pain-Points wie hohen Kosten, Instanz-Wachstum und Verfügbarkeitsproblemen zu kämpfen. Wenn sie diese Probleme dann im Nachhinein zu lösen versuchen, stellen sie fest, dass es sehr viel schwieriger ist, diese Probleme rückwirkend anzugehen und zu beheben, als sie von Anfang an zu berücksichtigen. Unternehmen, die bei DevOps schon im Endspurt sind, haben bereits agile Methoden entwickelt und ihre Teams kommunizieren effektiv miteinander. Auf beiden Seiten gibt es ein tiefes Verständnis für die vorhandenen Stacks und Tools. Aber die Kosten und Leistung lassen sich immer optimieren.
Selbstverständlich haben Unternehmen, die sich noch am Anfang des Prozesses befinden, am meisten zu lernen. Fassen wir also die besten Tipps für Tech-Führungskräfte zusammen, die ihnen die ersten Schritte hin zu DevOps und Cloud-nativer Entwicklung erleichtern sollen.
- Gehen Sie bei der Auswahl von Tools und Standards stets bedacht und zweckorientiert vor, damit Sie sich künftig nicht in technische Schulden stürzen. Die Auswahl ist riesig und verleitet dazu, immer mehr und mehr Tools zu den schon vorhandenen Ressourcen hinzuzufügen.
- Seien Sie sich im Klaren darüber, wie weit Sie mit Ihrer Cloud- und DevOps-Einführung bereits vorangeschritten sind, und erstellen Sie einen Plan, um zuerst bestehende Probleme zu beheben. Fragen Sie sich: Ist die Cloud für Sie immer noch nur ein Ort, an dem sich Ihre EC2-Instanzen, VMs und Anwendungen befinden? Wie sind Ihre Teams strukturiert und ergänzen oder behindern sie sich gegenseitig?
- Legen Sie so bald wie möglich los! Cloud-Technologien entwickeln sich ständig weiter und je länger Sie warten, desto größer wird die Lücke, die Sie schließen müssen.
Es steht eine bedeutende Neuerung an
About the Authors
VP, Public Cloud
Josh Prewitt
Since joining Rackspace Technology in 2010 as a Linux Administrator in our Customer Success organization, Josh has led numerous teams and functions across Rackspace including global technical support organizations, operations, product management, software development and engineering. In his current role as VP, Public Cloud, Josh oversees Rackspace Technology’s Public Cloud Solutions strategy for services on AWS, Azure, and GCP creating innovative solutions for customers. Prior to joining Rackspace, Josh was a customer of Rackspace from 2003-2009 and led a handful of affiliate marketing startups.
Read more about Josh Prewitt