Cloud-Native Anwendungsentwicklung

Cloud Technologien haben auch in der Welt der Anwendungsentwicklung Änderungen mit sich gebracht - aber welche und welche Vorteile haben sie?

Zeitgleich mit der Ankunft von neuen, durch Cloud-Technologien vorangetriebenen Möglichkeiten im Umfeld der Kollaboration und Produktivität ist auch eine neue Entwicklungsmethodik für Applikationen notwendig geworden. Eine, mit der man seine Anwendungen mit dafür notwendiger Flexibilität und Portabilität ausrüsten kann. Diese Methodik ist die cloud-native Applikationsentwicklung. 

Trotz der Bezeichnung geht es in diesem Ansatz nicht alleine darum, Applikationen in der Cloud lauffähig zu gestalten. In Wirklichkeit ist das Gegenteil der Fall: es geht darum, wie Applikationen entwickelt, deployed und verwaltet werden, sodass sie in einer beliebigen Umgebung flexibel und portabel lauffähig sind – ohne dass bei der Umstellung signifikanter Zusatzaufwand entsteht. 

In dem „traditionellen“ Ansatz wurden Applikationen für Langlebigkeit und Stabilität konzipiert. Obwohl diese weiterhin essenzielle Eigenschaften einer modernen Anwendung sind, sind solche sogenannten monolithischen Applikationen längst nicht flexibel genug. Denn in einer cloud-betriebenen Geschäftswelt reichen Langlebigkeit und Stabilität nicht mehr aus: Applikationen müssen auch rasch auf den Markt gebracht werden, müssen die Funktionen dieser abgrenzbar und wiederverwendbar sein; Prozesse müssen – soweit wie möglich – automatisiert werden.

Um diese zu erreichen, muss man Änderungen im gesamten Unternehmen, nicht nur in der Arbeit des Entwicklerteams umsetzen.  

Überblick - Traditionell vs. Cloud-Native Ansatz

Development 

In der cloud-native Anwendungsentwicklung stehen Portabilität und Wiederverwendbarkeit im Mittelpunkt. Im Gegensatz zum traditionellen, „monolitischen“ Ansatz, in dem Applikationen „gebündelt“ programmiert und deployed wurden, wird im Fall von cloud-native eine microservicebasierte Architektur erzielt.

Aber wie sieht das in der Praxis aus? 

Im traditionellen Entwicklungsansatz wird eine Software, wie etwa ein Webshop so programmiert, dass Katalog, Bestellkorb, Zahlungsabwicklung, „Watchlist“ alle in einem, quasi als Paket programmiert und deployed werden. Wenn aber der gleiche Webshop auf Basis der Cloud-Native-Methodik entwickelt wird, werden all diese Funktionen jeweils als alleinstehende Services programmiert, die untereinander mittels APIs oder Messaging kommunizieren können. 

Anschließend können diese Microservices – oder eben auch Prozesse oder ganze Anwendungen – in Containers verpackt werden. Das macht es möglich, einzelne Updates oder Bugfixes zu Funktionen einzeln ausrollen zu können, ohne dass dabei die anderen Funktionen der Applikationen betroffen sind. Außerdem werden solche Komponenten dadurch einfach wiederverwendbar und können in anderen Applikationen einfach wieder zum Einsatz gebracht werden.  

Container sind praktisch überall ausführbar. Dies vereinfacht   Bereitstellung und Betrieb auf virtuellen Maschinen, in Bare-Metal-Umgebungen via Docker oder auf Kubernetes-Clustern, im lokalen Rechenzentrum oder auch in der Public Cloud.

Prozesse

Wenn man cloud-native Prozesse auch im eigenen Unternehmen anwenden möchte, müssen nicht nur das Entwicklerteam, sondern auch IT-Operations, Qualitätsmanagement und auch die IT-Security-Abteilung darin involviert werden. Denn bei diesem Ansatz gehört die Praxis, in der Teams verteilt und isoliert voneinander arbeiten abgeschafft, und es muss eine DevOps-Kultur adaptiert werden. Das heißt, dass Development, Operations, QM und Security in enger Abstimmung und mit integrierten Prozessschritten arbeiten. Dies ist erforderlich, um die vorher bereits genannten Automatisierungsmaßnahmen umsetzen zu können.

Eine dieser ist die Automatisierung von Integration- und Deployment-Prozessen. Die Delivery-Pipeline einer cloud-native Anwendung kann durch Continuous Integration/Continuous Deployment vollständig automatisiert werden. Das heißt, dass jede vom Entwicklerteam implementierte Änderung im Source-Code automatisch von der Development- in die Testumgebung verschoben, dort für eventuelle Fehler überprüft und bei fehlerfreiem Code automatisch zum produktiven Einsatz gebracht wird. Dies verkürzt Rollout-Prozesse und erspart Ihren Mitarbeitern wertvolle Zeit.

Auch in der Skalierung von Cloud-Native-Anwendungen werden neue, effektivere Methoden eingesetzt: statt vertikales Skalieren werden solche Applikationen bei erhöhtem Nutzungsbedarf horizontal skaliert. Das bedeutet, statt die Kapazität einzelner Nodes durch Hardwareverbesserungen zu erhöhen, werden hier zusätzliche Nodes gestartet, die der gewünschten Funktion bessere Verfügbarkeit gewährleisten. Ein großer Vorteil der Methodik ist es, Verfügbarkeit im laufenden Betrieb optimieren zu können. Zudem kann der Prozess mit den entsprechenden Tools ebenfalls automatisiert werden.  

People

Wie dem Blogbeitrag auch zu entnehmen ist, erfordert die Umstellung auf eine Cloud-Native-Strategie auch Offenheit und Kollaboration seitens Ihrer Mitarbeiter: die Tools und Prozesse, die zum Einsatz gebracht werden, müssen von jedem akzeptiert und verstanden sein. Es muss klar definiert und kommuniziert werden, welche Vorteile und Verbesserungen mit dem neuen Ansatz angestrebt und wie diese erreicht werden. Um die allgemeine Akzeptanz Ihrer Mitarbeiter zu erhöhen, ist ein umfangreicher Change-Prozess im Unternehmen empfehlenswert, der auch Workshops und Trainings für die Mitarbeiter enthält. 

Die oben beschriebenen Maßnahmen werden in den meisten Fällen Schritt für Schritt eingeführt, sodass diese den Alltagsbetrieb des Unternehmens nicht spürbar beeinflussen und dass Mitarbeiter sich zwischenzeitlich auch das notwendige Knowhow dieser Tools und Prozesse aneignen können.