Suchen

Machine Learning, Programmiersprachen und die Cloud Mega-Trends im Development

| Autor / Redakteur: Filipe Martins & Anna Kobylinska / Stephan Augsten

Vor dem Hintergrund technologischer Mega-Trends spielen sich in der Softwareentwicklung umwälzende Änderungen ab, und zwar an etlichen Fronten gleichzeitig. Auf Entwickler kommen viele aufregende Möglichkeiten zu.

Firmen zum Thema

Die Vulkan Graphics API ist dabei, OpenGL ES den Rang abzulaufen.
Die Vulkan Graphics API ist dabei, OpenGL ES den Rang abzulaufen.
(Bild: Julius_Silver / Pixabay )

In der kaum noch überschaubaren Szene der Softwareentwicklung geht das Relevanteste schon mal leicht unter. Eine Analyse aktueller Trends kommt da genau richtig.

Coden für die Edge

Von massiv skalierbaren Cloud-nativen Microservices bis hin zu den kleinsten IoT-Endgeräten an der Netzwerkkante – kaum eine IT-Meldung ohne Verweise auf Künstliche Intelligenz (KI) und Machine Learning (ML): Anwendungen wie Sprach- und Gesichtserkennung, Algorithmen der Personalisierung, Prozessintelligenz, Lösungen zur KI-gestützten Cyberabwehr sowie die Echtzeit-Analyse von Sensordaten werden zunehmend praxistauglich.

Mit bis zu 4K und 60 FPS: Google Stadia, eine Art „Netflix für Games“, geht in Deutschland und 13 anderen Ländern mit zurzeit über 30 gestreamten Games an den Start.
Mit bis zu 4K und 60 FPS: Google Stadia, eine Art „Netflix für Games“, geht in Deutschland und 13 anderen Ländern mit zurzeit über 30 gestreamten Games an den Start.
(Bild: Google)

Mit ihnen rückt KI immer näher an die Edge heran. 5G-Konnektivität macht hier Schwarmintelligenz möglich. Das Edge als eine Ausführungsumgebung trumpft bei latenzsensiblen Nutzungsszenarien wie Gaming. Edge-zentrische Entwicklungsframeworks von Microsofts Project Xcloud und Googles Stadia bis hin zu NVIDIA’s GeForce NOW buhlen bereits um die Gunst der Spieleentwickler an der Edge.

KI und ML an der Netzwerkkante

Die scheinbar trivialsten Endgeräte legen sich zunehmend mit eigenen KI-Fähigkeiten ins Zeug, von vernetzten Fahrzeugen über autonome Drohnen bis hin zum letzten Make-up-Spiegel. Das Aufkommen von neuromorphischen Chips dürfte diesen Trend noch weiter verschärfen und Algorithmen des Tiefen Lernens zum allgegenwärtigen Phänomen cyberphysischer Systeme werden lassen.

KI-gestützte Toolchains und IDEs

Coder stecken da gewissermaßen in der Klemme. KI-gestützte Tools für die Softwareentwicklung wie können Developern bereits heute mit ihrer Code-Intelligenz unter die Arme greifen. Hierzu zählen Kite, eine KI-Engine zur automatischen Vervollständigung von Code, oder DeepCode.ai des gleichnamigen Spin-offs der ETH Zürich. Mit Tools wie diesen lassen sich etwa Software-Bugs auf der Basis von reinem Code vorhersagen – und beheben – sowie bisher unerkannte Effizienzpotenziale durch fortgeschrittene KI-Optimierungen ausloten.

Ein Screenshot von Deep Code in Aktion.
Ein Screenshot von Deep Code in Aktion.
(Bild: ETH Zürich)

Doch KI in der Softwareentwicklung hat ihre Schattenseiten. Das Aufkommen von KI verändert den Arbeitsmarkt für Coder auf eine bisher noch ungekannte Art und Weise, scheinbar unaufhaltsam. Müssen Developer jetzt die eigenen Mathe-Kenntnisse aufpolieren und Hals über Kopf eine neue Programmiersprache lernen oder tut es auch ein KI-Framework?

Das Team von DeepCode sucht Verstärkung. In der Abbildung: die Gründer des Spin-offs.
Das Team von DeepCode sucht Verstärkung. In der Abbildung: die Gründer des Spin-offs.
(Bild: ETH Zürich)

Der Schachgroßmeister Gary Kasparov glaubt, dass KI satte 96% aller Arbeitsplätze nicht bloß verändern, sondern „vernichten“ würde. (Hoffentlich betrifft die Prognose vorrangig solche Arbeitsplätze, die keine menschliche Kreativität erfordern.) Die stolze Zahl lässt die Schachprominenz gut aussehen: Kasparov hatte bekannterweise sein zweites Duell gegen IBMs Supercomputer Deep Blue bereits im Jahre 1997 verloren. Der Titel des weltstärksten Schachmeisters liegt seither bei der KI.

Immersive Experiences: Grafik-lastige Anwendungen auf dem Vormarsch

Vergleich zwischen OpenGL ES und Vulkan im Hinblick auf die CPU-Nutzung.
Vergleich zwischen OpenGL ES und Vulkan im Hinblick auf die CPU-Nutzung.
(Bild: ARM)

Das Aufkommen von Immersive Experiences machen Grafiktechnologien wie die quelloffene Vulkan Graphics API möglich. Dieser inoffizielle Nachfolger von OpenGL liefert einen Performance-Boost von bis zu 50 Prozent gegenüber nativen OpenGL-Aufrufen. Mac-Anwender berichten sogar von einem Leistungssprung von 15fps auf 60fps.

Die Vulkan Portability Initiative ermöglicht mehrschichtige Vulkan-Implementierungen über eine Reihe zugrunde liegender APIs, um hochperformante Grafik auch auf diejenigen Plattformen zu bringen, die möglicherweise keine nativen Vulkan-Treiber unterstützen. Nicht nur Spiele, auch Webseiten können sich so in wahre Erlebniswelten verwandeln. WebAssembly kommt da genau wie gerufen.

Der wahre Schauplatz von Immersive Experiences sind digitale Erlebniswelten mit erweiterter Realität (Augmented/Virtual Reality) und 360°-Video. Holografische Entwicklungsplattformen wie die HoloLens von Microsoft versprechen völlig neue Dimensionen der Visualisierung. VividQ, das erste Softwareframework für 3D-Elebniswelten, bietet bereits eine vollständige Softwarelösung zur Implementierung der computergenerierten Holographie in Software für die Ausgabe auf LCoS-Displays.

Von Datensparsamkeit zur Datensynthese

Algorithmen des Tiefes Lernens setzen (in der Lernphase) die Verfügbarkeit massiver Datenbestände voraus, um zuverlässig funktionieren zu können. Das Gebot der Datensparsamkeit stellt sich dem breiteren Einsatz von KI in den Weg. Um die Herausforderung unzureichender Datenbestände zu umgehen, experimentieren Unternehmen schon mal mit der Datensynthese: dem Einsatz von Softwarealgorithmen zum Generieren von Daten, mit deren Hilfe sich KI-Algorithmen wiederum trainieren lassen sollen.

KI-Frameworks und -Marktplätze

KI-Frameworks gehören inzwischen in das Standardrepertoire der Softwareentwicklung. Software mit kognitiven Fähigkeiten wird zum Standard. Doch keine Panik, nicht jeder Softwareentwickler muss zum Datenwissenschaftler oder KI-Experten werden, dafür gibt es ja Frameworks, Bibliotheken und Marktplätze.

Die Daimler AG setzt auf Kaggle, um mit Hilfe ausgeklügelter KI-Algorithmen die Qualitätskontrolle zu verbessern.
Die Daimler AG setzt auf Kaggle, um mit Hilfe ausgeklügelter KI-Algorithmen die Qualitätskontrolle zu verbessern.
(Bild: Daimler AG)

Wer auf die Suche nach Datensätzen für KI-ML-Algorithmen gehen muss, kann mittlerweile auf Plattformen wie Kaggle zurückgreifen, eine offene Datengrube für KI. Die derzeit 19.000 öffentlich verfügbaren Datensammlungen und 200.000 öffentliche Jupyter-Notebooks bieten sicherlich einen guten Ausgangspunkt für das Testen von KI-Code. Ausschreibungen von KI-Vorreitern wie die Daimler AG haben dem einen oder anderen Entwickler schon mal den Traumjob beschert.

KI-Lösungen zur Datenanalyse sind auf dem Vormarsch. Wer statt Daten eher nach fertigem Code spezialisierter Algorithmen sucht, wird auf Marktplätzen wie Algorithmia fündig. Für Entwickler entstehen dadurch neue Betätigungsfelder und neue Karrierechancen, die jedoch mit neuartigen Anforderungen einhergehen.

Vielen Codern stellt sich recht dringend die Frage, mit welchen. Kenntnisse von Hadoop, Spark und verwandten Technologien werden immer stärker gefragt. Auch Kompetenzen in Mathe und Datenwissenschaften sind zunehmend begehrt. Und auch jenseits dieser neuen Nischen ist das Betätigungsfeld für Softwareentwickler üppig und die Aufgaben vielfältig.

Auf Biegen und Brechen: Integrationen mit KI

Zunehmend viele Softwareprojekte beinhalten Aufgaben rund um die Integration von KI. KI-Getriebene Chatbots, die sogenannte konversationelle KI (Engl. conversational AI), sind ein Beispiel von vielen. Anbieter von KI-Lösungen wie die Artificial Solutions International AB mit der konversationellen KI-Plattform Teneo reiben sich da natürlich die Hände.

Die Aufgabe der Anwendungsentwickler besteht hierbei darin, aus dem konversationellen, oft indirekten und implikaturreichen Datenaustausch zwischen Mensch und Maschine nicht „nur“ konkret umsetzbare Handlungsanweisungen abzuleiten, sondern ihm vielmehr wirtschaftliche Werte zu entlocken. Denn unterm Strich muss eine Software profitabel sein. Noch nie war es so wichtig wie im KI-Zeitalter, ein Nebeneffekt der hohen Kosten der Bereitstellung von kognitiven Fähigkeiten in Software.

Zukunftsträchtige Programmiersprachen

WebAssembly läuft mittlerweile in allen halbwegs aktuellen Webbrowsern
WebAssembly läuft mittlerweile in allen halbwegs aktuellen Webbrowsern
(Bild: CanIUse.com)

Der Vielfalt und Vielseitigkeit der Entwicklungssprachen scheint nicht nachlassen zu wollen, es ändert sich jedoch der Mix. Python, Kotlin, Swift und WebAssembly sind klar im Kommen. Java und die C-Sprachen scheinen etwas kürzer zu treten.

Als ein Nebeneffekt der KI/ML-Revolution wächst kontinuierlich die Popularität von Python. Diese recht angenehme quelloffene Skriptsprache hat sich neben R fast unbemerkt zur wichtigsten Programmiersprache für Datenanalyse gemausert. Laut SlashData vertrauen auf Python rund 8,2 Millionen Entwickler weltweit (ein Wachstum von 17,1 Prozent gegenüber den 7 Millionen des Vorjahrs). Zum Vergleich: 7,8 Millionen coden in Java (ein Wachstum von gerade einmal knapp zehn Prozent ausgehend von 7,1 Millionen im Vorjahr).

Unternehmen wie Netflix nutzen Python für Alles, von der Entwicklung von Empfehlungsalgorithmen bis hin zu Automatisierung der Cybersicherheit. Da sich die Begeisterung der Datenwissenschaftler für R mittlerweile immer stärker abkühlt, steht Python-Entwicklern anscheinend eine goldene Zeit bevor.

Die Hype-Kurve zu Künstlicher Intelligenz von Gartner.
Die Hype-Kurve zu Künstlicher Intelligenz von Gartner.
(Bild: Gartner)

Web-Entwickler stehen vor einem anderen Problem: Viele haben es einfach satt, sich mit den Performance-Engpässen von JavaScript nach all den Jahren immer noch abgeben zu müssen. Das Interesse an WebAssembly wächst. Seit die Kernspezifikation vom World Wide Web Consortium (W3C) zum offiziellen Webstandard gekürt wurde, nimmt auch die Akzeptanz weiter zu.

Aus Container-Orchestrierung wird Container-„Kubernetisierung“

Laut einer Voraussage des Forschungsinstituts Gartner solle der Markt für Dienstleistungen der Public-Clouds im laufenden Jahr 2020 um 17 Prozent zulegen. Laut den neuesten Zahlen von Canalys kommen die drei führenden Anbieter AWS, Azure und GCP auf derzeit rund 56 Prozent des Kuchens; 32,6 Prozent entfallen dabei auf den Marktführer AWS.

Was es für die betroffenen Entwickler bedeutet, liegt auf der Hand: Cloud-Orchestrierung der Infrastruktur- und Plattformdienste bleibt nach wie vor ein fruchtbarer Boden, der sich bei diesen drei Cloud-Giganten voraussichtlich weiterhin profitabel beackern lässt. Doch die Public-Cloud-Szene bleibt nicht stehen. Die Nachzügler möchten den Betrieb der Public-Cloud standardisieren, um Entwicklern das Hin-und-her mit dem Code zwischen verschiedenen Anbietern zu erleichtern (sprich: Sie wollen ein paar Krümel von dem Kuchen des Marktführers AWS auf den eigenen Teller übertragen).

Die Cloud Native Computing Foundation (CNCF), offizielles Heim von Projekten wie Kubernetes, Prometheus und Envoy, arbeitet fieberhaft dahingehend. Mit dem Verkauf von Docker Enterprise an Mirantis, ein Kubernetes-Technologiehaus mit Wurzeln in OpenStack, geht die Containerisierung von Cloud-Anwendungen gerade in die nächste Runde. Die Zukunft der Orchestrierung gehört demnach Kubernetes. Mesos und Docker Swarm dürften sich davon nie wieder erholen.

Viele Entwickler haben die Zeichen der Zeit erkannt und setzen nun verstärkt auf Kubernetes-nativen Code („Kubernetes-first“). Laut aktuellen Zahlen von Datadog, dem Überwachungsdienst für Cloud-Anwendungen, soll Kubernetes bei etwa vier von fünf Unternehmen im Einsatz sein, die Container auf Azure ausführen; noch vor einem Jahr waren es noch zwei Drittel. Da AWS dem Google-Sprössling Kubernetes gegenüber lange nicht allzu freundlich gesinnt war, sind es auf AWS „nur“ 45 Prozent der Container-Nutzer. Diese Zahl umfasst die Nutzer von AWS Fargate und damit sowohl Amazon Elastic Container Service (ECS) als auch Amazon Elastic Kubernetes Service (EKS).

Innerhalb Kubernetes-orchestrierter Container überwiegt Node.js als die Sprache der Wahl, gefolgt von Java, Python, PHP, Ruby und Go/golang (außerhalb von Containern hat Googles Java-Alternative Go bisher überhaupt keine Relevanz). Unter den Webservern containerisierter Web-Anwendungen hat NGINX mit einem erdrückenden Marktanteil von 70 Prozent der Kubernetes-Bereitstellungen die Nase vorne (in ECS kommt NGINX auf 30 Prozent und auf 40 Prozent in nicht-orchestrierten Laufzeitumgebungen). Für die Entwickler von Microservices ist damit vorerst Klarheit geschaffen.

Wie sich Kubernetes im Hinblick auf die Fähigkeiten zur föderierten Anwendungsausführung entwickeln wird, ist bisher noch ungewiss. Der zunehmenden Hybridisierung von Laufzeitumgebungen können sich auch Microservices nicht mehr entziehen. Federation soll helfen, mehrere Kubernetes-Cluster ausgehend von einer einzigen Konfiguration in einer einzigen Laufzeitumgebung über die Grenzen einzelner Clouds hinweg zu koordinieren. Bis dieses Ziel erreicht ist, kann von „verteilten“ Microservices wohl kaum die Rede sein.

Allgegenwärtiges IoT und Sprachen der Infrastruktur

Das Interesse an Infrastruktur- und Cloud-spezifischen Programmiersprachen für verteilte, selbstheilende Anwendungsarchitekturen wächst. Innovative DSLs und SDKs wie Ballerina (ballerina.io) und Pulumi versprechen einen wahren Paradigmenwechsel.

Konventionelle Programmiersprachen behandeln das Netzwerk einfach als eine Quelle der Ein- und Ausgabe. Ballerina führt grundlegend neue Abstraktionen von Clientobjekten, Diensten, Ressourcenfunktionen und Listenern ein, um die Konnektivität abzubilden. Das Ziel besteht darin, Programmierern Tools in die Hand zu legen, mit denen sie die täglichen Herausforderungen der verteilten Anwendungsausführung als Teil ihrer Anwendungslogik in den Griff bekommen können. Dieser neue Ansatz soll die Erstellung dezentraler Anwendungen „demokratisieren“. Er soll jedem Programmierer erlauben, robuste, sichere und leistungsfähige Netzwerkanwendungen ins Leben zu rufen.

Das quelloffene Projekt Pulumi befolgt einen anderen Ansatz. Pulumi erlaubt es Entwicklern, die zur Anwendungsausführung benötigte Cloud-Infrastruktur in realen Programmiersprachen zu deklarieren: JavaScript, TypeScript, Python, Go, in jeder .NET-Sprache einschließlich C#, F# und VB. Dadurch können Entwickler ihre aktuelle IDE beibehalten und ihre vertrauten Frameworks weiter zu nutzen.

„Ich brauchte [für mein Team] eine Lösung, die Silos-übergreifend greifen konnte und unseren Entwicklern ein Tool zur Verfügung stellte, mit dem sie die Infrastruktur entsprechend ihren unmittelbaren Anforderungen selbst bereitstellen konnten“, enthüllt Dinesh Ramamurthy, Technischer Leiter bei der Mercedes-Benz Research and Development North America. Die Art und Weise, wie Pulumi das Multi-Cloud-Problem löse, sei für sein Team genau die richtige Antwort gewesen. Zu den Vorzeigenutzern von Pulumi zählen neben Mercedes-Benz unter anderem der Analytics-Spezialist Tableau und der datengetriebene Versicherer Lemonade.

Cloud-Anbieter haben ja auch selbst schon die Vorteile von Infrastruktursprachen entdeckt. So bietet beispielsweise AWS mit dem Cloud Development Kit (CDK) eine Möglichkeit, die Infrastruktur einer Cloud-Anwendung auf AWS in einer Allzwecksprache wie TypeScript, JavaScript oder Python zu beschreiben.

Backends seien unnötig kompliziert, glauben Entwickler von Dark, einer neuen „holistischen Programmiersprache“ für die sichere Bereitstellung von Infrastruktur zur Entwicklung von Microservices und mobilen Apps (derzeit in Beta). Dark reduziert die Infrastruktur auf vier Konzepte: HTTP-Endpunkte, Datenspeicher, Hintergrund-Worker und geplante Jobs. Doch in der Realität steckt da ein Cloud-Reseller dahinter, der die Infrastruktur selbst hosten und skalieren möchte. Von einer hybriden Cloud kann also bei Dark wohl kaum die Rede sein.

Bis Sprachen der Infrastruktur den nötigen Reifegrad erreicht haben werden, vergeht noch einige Zeit. Diese Kategorie von Technologien ist derzeit noch was für die Vorreiter. In der Zwischenzeit gewinnen Service-Meshes an unmittelbarer Bedeutung.

Fazit

Wer ein gewisses Durchhaltevermögen an den Tag legen möchte, kann sich nicht von jedem neuen Hype ablenken und aufhalten lassen. Das eine oder andere „Next Big Thing“ kommt und geht wieder. Da niemand, auch nicht ein/e Softwareentwickler/in, auf allen Hochzeiten tanzen kann, gilt es, Prioritäten zu setzen. Bloß unbedingt die Richtigen.

(ID:46389955)