Warum Cloud-native Entwicklung einen neuen Ansatz und eine andere Kultur erfordert

Geschrieben von Eric Newcomer, CTO, WSO2, erörtert den Stand der Cloud-nativen Entwicklung heute und die Notwendigkeit weiterer Innovationen.
Geschrieben von Eric Newcomer, CTO, WSO2, erörtert den Stand der Cloud-nativen Entwicklung heute und die Notwendigkeit weiterer Innovationen.

Cloud-native Anwendungsentwicklung ist ein Ansatz zum Erstellen, Ausführen und Verbessern von Apps auf der Grundlage bekannter Techniken und Technologien für Cloud-Umgebungen. Da immer mehr Organisationen auf Cloud-First-Strategien umsteigen, ist dies sicherlich die Richtung, die Unternehmen einschlagen. Warum? Weil es ihnen ermöglicht, skalierbare Anwendungen in modernen, dynamischen Umgebungen wie öffentlichen, privaten und hybriden Clouds zu erstellen und auszuführen. Allerdings ist es nicht einfach, einen anderen Softwareentwicklungsansatz zu wählen, und ich weiß, dass Cloud-native Entwicklung für Unternehmen problematisch ist, da ich selbst von der Kundenseite komme.

Nutzen Sie die richtigen Fähigkeiten, Kenntnisse und Herangehensweisen

Ich habe mehrere Jahre bei der multinationalen institutionellen und Verbraucherbank Citi gearbeitet und war während dieser Zeit direkt an Cloud-Migrationsaktivitäten beteiligt. Infolgedessen erlebte ich aus erster Hand die große Herausforderung, die damit verbunden ist, die richtigen Fähigkeiten, Kenntnisse und Ansätze zu erwerben, um zu verstehen, was bei der Cloud-nativen Entwicklung anders ist. Es ist eine völlig andere Infrastruktur, auf der Anwendungen bereitgestellt werden. Organisationen müssen Code entwerfen und entwickeln, der speziell für diese Infrastruktur vorgesehen ist, um das Beste aus ihr herauszuholen. 

Ich verglich diesen Unterschied damit, als wir an Anwendungsbenutzerschnittstellen für Webbrowser arbeiteten, als dann mobile Geräte auftauchten und wir naiverweise versuchten, diese Webbrowser-basierten Apps einfach auf die mobilen Geräte zu portieren. Und sie reagierten nicht wirklich gut auf die unterschiedlichen Eigenschaften dieser Hardware. Also mussten wir letztendlich native Apps entwickeln, die speziell für diese Geräte gedacht waren, weil sie andere Eigenschaften als ein PC haben. Dies galt insbesondere für die Navigationsmodi, den Touchscreen, die Größe des Bildschirms, die biometrische Authentifizierung, den verfügbaren Standort und andere Geräteinformationen, die Telefonintegration und die inhärenten Multimedia-Funktionen.

Die Entwicklung für Cloud Native ist insofern ähnlich, als die Infrastruktur für Cloud Computing auf Commodity-Servern läuft, was bedeutet, dass es Hunderte oder Tausende von Servern auf PC-Ebene gibt, auf denen Sie Ihre App bereitstellen, anstatt alte App-Server und Mainframes, auf denen Sie Ihren gesamten Code ablegen könnten in ein Image oder eine große Anwendung umwandeln und alles zusammen ausführen. Um das Beste aus dieser Art von Infrastruktur herauszuholen, müssen Entwickler die Anwendung in Microservices aufteilen, die so konzipiert sind, dass sie einzeln auf diesen kleineren PC-Hardwareeinheiten laufen. Und dann müssen diese Anwendungen über das Netzwerk miteinander kommunizieren, um alle Funktionen zusammenzubringen.

Übergang von Monolith zu Microservices

Das ist ein ganz anderes Paradigma als das alte Paradigma. Die Branche verlagert sich von Monolithen zu Microservices, und es kann einige Zeit dauern, zu verstehen, warum Anwendungen in kleinere Arbeitseinheiten aufgeteilt werden müssen, um in der neuen Cloud-Infrastruktur korrekt ausgeführt zu werden. Früher habe ich im Rahmen unseres Distinguished Engineer-Programms Teams bei Citi geschult, und einer der Bereiche, auf die ich mich konzentrierte, waren die Prinzipien hinter Microservices und der Cloud, die es für Anwendungen und Software anders machen.

Heute kommen alle neuesten IT-Trends aus dieser Umgebung, Big Data, Microservices, DevOps, also die Automatisierung, die für die Infrastrukturbereitstellung erforderlich ist. Alle diese technologischen Merkmale sind auf die Umstellung der Software zurückzuführen, die erforderlich ist, um diese Umgebung zu nutzen und in ihr korrekt zu funktionieren. Es dauert eine Weile, bis man versteht, dass es sich nicht nur um eine Portierung von Mainframe auf Linux oder von einer proprietären Version von Unix wie Solaris auf Linux handelt; Es gibt ein anderes Computerparadigma, bei dem Sie all diese kleineren Arbeitseinheiten zusammenfügen müssen. Und die kleineren Arbeitseinheiten sind da, weil die Computer klein sind. Und es dauert länger, bis Entwickler verinnerlicht haben, wie man das richtig macht. Und es ist nicht nur die technologische Herausforderung, anders über Ihre Anwendungen und Daten denken zu müssen, sondern auch die Entwicklungskultur.

Wenn wir uns einige der führenden Beispiele von Unternehmen ansehen, die dies getan haben, wie Netflix und die Einzelhandels-Website von Amazon, haben sie auch Pionierarbeit für eine Praxis geleistet, die Zwei-Pizza-Teams oder autonome Teams genannt werden, die die Verantwortung für die Gesamtheit eines kleineren Projekts übernehmen , von den Anforderungen bis hin zu Bereitstellung und Support. Die Idee ist, dass kleinere Teams mehr Effektivität schaffen und Verantwortung für kleinere Funktionen übernehmen. Die Arbeit kleiner Teams kann unabhängig von anderen Teams voranschreiten, solange die Schnittstellen zwischen den Funktionen stark geregelt sind.   

Dies bietet sogenannte „begrenzte Kontexte“, die es kleinen Teams ermöglichen, autonom an der Entwicklung und Bereitstellung einer Anwendungsfunktion zu arbeiten und sich dennoch in alle anderen Funktionen der größeren Anwendung einzufügen, ohne sie zu beeinträchtigen, wenn ein Update durchgeführt und in der Produktion bereitgestellt wird.

Dies ist eine große Veränderung für Unternehmen mit IT-Systemen, die älter als die Cloud sind und in der Regel Betriebs- und Entwicklungsfunktionen trennen. In der Cloud gibt es keine Betriebsabteilung. Stattdessen führen Entwickler die Betriebsarbeit mithilfe von APIs und automatisierten Build-, Test- und Bereitstellungspipelines durch.

Ich habe einen enormen Kulturunterschied beschrieben, der für Unternehmen oft schwieriger zu erreichen ist, als sich nur auf die technischen Belange einzustellen. Und es ist nicht einfach – es erfordert andere Entwicklerfähigkeiten. Wenn wir an neue Entwickler denken, die in die Branche kommen, stellt sich die Frage, ob Universitäten die Art und Weise ändern müssen, wie sie Computeringenieure ausbilden.

Überbrückung der Kluft zwischen Bildung, Technologie und Wirtschaft

Bei Citi leitete ich ein kleines Innovationslaborteam im Cornell Tech-Büro von Citi, wo wir mit der Cornell Tech-Institution zusammenarbeiteten. Dies ist eine Graduiertenschule, die Programme für MBA- und Computer-Master- und PhD-Abschlüsse anbietet, die auf technologische Karrieren ausgerichtet sind. Die Idee der Colocation war, dass die auf dem Campus ansässigen Unternehmen den Studenten helfen würden, Projekte zu erstellen und zu überwachen, die auf realen Geschäftsanforderungen basieren. Die Schüler würden helfen, kreative Ideen zu entwickeln, um diese Probleme zu lösen. 

Technologiestudenten hatten daher eine geschäftliche Verbindung mit Unternehmen und nahmen auch an Wirtschaftskursen teil. MBA-Studenten engagierten sich auch in Unternehmen und nahmen an Programmierkursen teil. Cornell Tech veranstaltete eine formelle Herausforderung, bei der Unternehmen jedes Jahr ein Geschäftsproblem einreichten, an dem Studenten arbeiten konnten. Diese Projekte hatten sich gegenseitig befruchtende Teams, in denen Informatiker einen MBA-Studenten in ihrem Team hatten und umgekehrt.

Durch diesen neuen Ansatz der Graduiertenausbildung versuchte Cornell Tech bewusst, diese klassische Kluft zwischen Wirtschaft und Technologie zu überbrücken. Auch andere Universitäten folgen diesem Modell.

Tim O'Reilly, der Gründer von O'Reilly Media, sagte bekanntermaßen, er glaube, dass Programmieren eines Tages wie Lesen und Schreiben sein und zu einer der grundlegenden Fähigkeiten werden wird, die Schulen lehren. Wir sehen auch, dass die Branche No-Code- und Low-Code-Tools umarmt. Jeder hat seine eigene Definition dessen, was das bedeutet, aber ich denke, die Kernprämisse besteht darin, es mehr Benutzern zu erleichtern, mit Software zu arbeiten und bei der Entwicklung von Anwendungen zu helfen.

Daher haben wir zwei klare Trends; Die Computerkenntnisse nehmen an Universitäten und Schulen zu, und die Fähigkeit, Geschäftsprobleme zu verstehen, verbessert sich unter Informatikern. Und dann haben Sie den Trend, den Weg zu abstrahieren, um es den Menschen zu erleichtern, mit Code zu interagieren.

All dies wird zweifellos den aktuellen Übergang zu Cloud-nativen Computing-Modellen und -Praktiken unterstützen.

WEITERLESEN:

Warum alles zu Code wird

Hier bei WSO2 ist es unser Ziel zu prüfen, wie wir Unternehmen bei der Digitalisierung unterstützen können, wo sich so viel um die Erstellung von Code dreht, der den einzigartigen Wert eines Unternehmens für seine Kunden und Partner verkörpert. Infolgedessen müssen mehr Personen im Unternehmen auf die eine oder andere Weise am Code beteiligt werden. Ob es nun darum geht, Anforderungen zu stellen, Qualitätssicherung durchzuführen oder zu helfen zu verstehen, dass das, was codiert wird, das ist, was benötigt wird. Heute, denke ich, gibt es eine echte Erkenntnis, dass Software zur Welt wird, oder alles wird zu Code, was neue Ansätze, Kulturen und Denkweisen erfordert.

Vergessen Sie nicht, unser tägliches Bulletin zu abonnieren, um weitere Neuigkeiten von Top Business Tech zu erhalten!

Folge uns auf  LinkedIn machen Twitter

Amber Donovan-Stevens

Amber ist Inhaltsredakteurin bei Top Business Tech