Moderne Technologie als Business Enabler
Technologie ist aber an der Stelle kein Selbstzweck, sondern moderne Technologien erlauben es auch moderne und neue Geschäftsstellen zu erschliessen. Damit starte ich mit der Cloud.
Cloud wie Microsoft Azure oder Amazon AWS offerieren einen riesigen Fundus an Diensten und Technologien, die jetzt rein über Infrastruktur- und Plattform-Dienste wie Hosting und Datenbanken hinausgehen. Gerade Künstliche Intelligenz oder Machine Learning ermöglichen komplett neue Anwendungsfälle wie Bots und können damit Kunden noch individueller und schneller einbinden und abholen und eine bestmögliche Nutzererfahrung bieten. Das Ganze ist sehr flexibel und skalierbar in der Cloud, so dass Kosten minimal gehalten werden können und Lastspitzen sehr gut abgefangen werden.
Es war noch nie so einfach, eine Anwendung in mehrere geografischen Regionen zu deployen und trotz geringer Fehlertoleranz eine hohe Verfügbarkeit sicherzustellen. Das Ganze passiert mit geringeren Kosten, denn im Gegensatz zur eigenen Infrastruktur sind keine riesigen Investitionen in eigene Hardware notwendig. Die IT-Verantwortlichkeit teilen Sie sich mit dem Cloud-Anbieter: die Infrastruktur und die Netzwerktechnik übernimmt der Vertragspartner. So können Sie Ihre eigene IT-Abteilung entlasten und sich auf Ihre Anwendung und deren Mehrwert konzentrieren.
Applikationsmodernisierung mit Containern und Micro Services
Wenn am Ende des Tages Ihre Anwendung eher auf die Cloud ausgelegt ist, ist das Einzige, was Sie dann noch benötigen, eine Internetverbindung. Wer sich heute mit Softwareentwicklung beschäftigt, kommt um die Schlagwörter Microservices und Container gar nicht mehr drum herum. Container erlauben es Anwendungen zu verpacken, inklusive ihrer Laufzeitabhängigkeiten – ähnlich einer virtuellen Maschine sind diese unabhängig voneinander zur Verfügung gestellt und können isoliert betrieben werden. Das Besondere an containeriserten Applikationen ist, dass das darunterliegende Betriebssystem geteilt wird, was viel Speicherplatz spart: Container sind nur mehrere MB gross und nicht mehrere GB wie eine virtuelle Maschine. Durch diese hohe Portabilität sind Sie äußerst flexibel darin, wo Sie die Container ausführen. Das kann auf Dauer auf dem eigenen Windows Rechner, einem eigenen Server oder auch die Infrastruktur eines Cloud Providers sein. Mit dieser Flexibilität, wo Sie Ihre Anwendung ausführen und können an dieser Stelle frei entscheiden, ohne sich an einen einzelnen Anbieter binden zu müssen.
Die Anwendungen werden zu Microservices geclustert und lösen den «monolithischen» Ansatz der letzten 15 bis 20 Jahre immer mehr ab. Kleinere Einheiten, welche das Gesamtsystem bilden, sind gegenüber einem monolithischen Blog immer einfacher verständlich, pflegbar und testbar. Diese einzelnen isolierten Funktionseinheiten, die miteinander lose gekoppelt werden, haben noch einen anderen Vorteil. Denn jede einzelne Einheit wird nur da skaliert, wo sie benötigt wird. Sie kann ihre Arbeitslast maximal ausführen, ohne Ressourcen zu verschwenden, wie es bei monolithischen Systemen häufig der Fall ist. So fallen keine unnötigen Kosten an.
Das Besondere bei Microservices ist die Art und Weise wie diese Unterteilung gefunden wird. Denn dies erfolgt nicht nach einer technischen Betrachtung, wie es gerne in der monolithischen, drei-schichten Architektur sich wiederfindet: Nutzeroberfläche, «Verbindungslogik» und Daten. Die Einheit wird anhand der fachlichen Domäne gebildet. Und alles, was fachlich zusammengehört, wird in einem Service gebündelt und umfasst alle technischen Belange. Wenn so eine Einheit von einem einzelnen Team betreut und gewartet wird, kann sehr schnell auf Funktionsänderungen reagiert werden ohne sich mit anderen Teams abzustimmen.
Wichtigkeit von Daten: für Applikationen und Unternehmen
Ein Beispiel: LinkedIn hatte viele Datenbanken, verschiedene Logs und Metriken aus dem Betrieb, aber auch sehr viele Tracking-Informationen von den Anwenderinteraktionen auf der Plattform. All diese Daten wurden von verschiedenen Systemen verwendet: für die Suche, Empfehlungen für neue Kontakte oder lesenswerte Artikel, für Dataware-Hostzwecke oder einfach auch für den operativen Betrieb oder das Monitoring.
LinkedIn hatte allerdings ein Problem: wie ließen sich diese zahlreichen Systeme integrieren und die gesammelten Daten dann zur Verfügung stellen? Wenn jedes System interagierensoll, wird es sehr unübersichtlich und schwer zu pflegen. Von daher bestand der Wunsch, eine zentrale Datenpipeline aufzubauen, die flexibel skalierbar ist, die Daten dauerhaft speichern kann, einen hohen Durchsatz generiert sowie einfach integrierbar ist.
Es wurden verschiedene Lösungen am Markt angeschaut und evaluiert, die Erfolgsrate war jedoch eher auf niedrigem Niveau. Von daher wurde sehr schnell der Entschluss gefasst, dass eine Eigenentwicklung notwendig sei. Von Anfang an war klar, dass diese Lösung auch veröffentlicht und unter Open Source gestellt wird. Diese Lösung kennen wir heute unter dem Namen «Apache Kafka».
Apache Kafka von LinkedIn
Mit dieser Entwicklung konnte LinkedIn sein Problem lösen, die verschiedenen Daten integrieren und für jedes System entscheiden, welche Daten benötigt werden, in welcher Art und Weise weiterverarbeitet und zu welcher Zeit. Falls neue Systeme entwickelt werden, können diese auf den kompletten Datenfundus zugreifen. Soweit bekannt, betreibt LinkedIn die grösste Kafka-Installation weltweit, wo täglich 2.1 Billionen Nachrichten verarbeitet werden und Petabyte an Daten gespeichert sind.
Und diese Infrastruktur wird von sieben Vollzeit-Mitarbeitern betrieben und gepflegt. Das ist eine gute Skalierung, die in kleinerem Rahmen funktioniert. Und es ist eine der interessantesten Optionen im Bereich Datenstreaming, um nahezu in Echtzeit riesige Datenmengen verarbeiten zu können.
Entwicklerplattformen für Low-Code- und No-Code-Applikationen
Es haben sich in letzter Zeit sehr interessante No-Code- und Low-Code-Plattformen entwickelt, wie Power Apps / Power Platform von Microsoft oder Google AppSheet, um auch Fachanwendern zu ermöglichen, eigene Anwendungen für interne Prozesse entwickeln zu können. Das kann in bestimmten Fällen sogar ganze ohne Entwickler oder mit sehr begrenztem Zeitbudget erfolgen. Der grosse Vorteil dieser Plattformen besteht darin, dass eine riesige Bibliothek an Komponenten und Funktionalitäten zur Verfügung gestellt wird. Mit einfachem Drag & Drop kann man in wenigen Stunden grosse Fortschritte machen. Klassische Entwicklungsprojekte können da länger dauern. Durch diese schnelle Realisierung von Ergebnissen fallen nur geringe Kosten an.
Diese Vorteile haben auch eine Kehrseite. Die hohe Produktivität, die wahnsinnig schnellen Ergebnisse mit geringeren Kosten werden mit Einschränkungen erkauft. Die zur Verfügung gestellte Komponentenbibliothek gibt vor, was die Plattform ermöglicht und was nicht. Eine grosse Anpassungsfähigkeit wie bei einem klassischen Entwicklungsprojekt gibt es hier nicht. Ausserdem bindet man sich an eine gewählte Plattform, die Migration von einer Plattform zu einer anderen ist oft mit einem Neubau der Applikation verbunden. Bei einer eigenen Entwicklung kann man das Hosting und den operativen Betrieb selber gestalten und ist nicht auf eine einzige Option festgelegt.
Von daher empfehlen wir diese Plattformen für zwei Kategorien von Applikationen:
- Zum Prototyping: Wenn die Anforderungen noch sehr vage sind und gerade diese schnelle Generierung von Ergebnissen optimal ist. Wenn die finalen Anforderungen später bekannt sind, kann evaluiert werden, ob so eine No-Code-/Low-Code-Plattform weiterhin einen ausreichenden Funktionsumfang bietet.
- Um Lösungen mit wenig Anpassungsbedarf zu bauen: Dazu gehören sehr oft Workflows, aber auch kleine Hilfsanwendungen, wie z.B. um neue Mitarbeiter einarbeiten zu können.
In solchen Anwendungsfällen bieten No-Code-/Low-Code-Plattformen große Vorteile gegenüber einer klassischen Entwicklung, vor allem wegen des geringen Zeitaufwands und des Kostenrahmens.
Herausforderungen bei der Applikationsmodernisierung
Was gibt es für Herausforderungen im Bereich Application Modernization? Wir sehen bei unseren Kunden regelmässig fünf problematische Themenfelder:
- Das Unternehmen möchte agiler werden: z.B. bei E-Commerce, wenn das Kundeninteresse nicht groß genug ist und das volle Potenzial nicht ausgeschöpft werden kann. Der Grund kann sein, dass sich die Lösung gar nicht richtig skalieren lässt und Kunden entsprechend lange warten müssen. Das wiederrum bedeutet, dass die Kunden sich entscheiden irgendwo anders zu kaufen.
- Das Unternehmen will neue Funktionen schnell realisieren: Hier kommen die Probleme der gealterten Lösung zum Tragen – weshalb solche Änderungen nicht schnell zum Einsatz gebracht werden können.
- Die passende Expertise: Eine ältere Software mit allen Komponenten zu überblicken und auch auf einen neuen technologischen Stack zu heben, ist auch eine Herausforderung. Denn der Markt an Entwicklern ist angespannt, jeder sucht händeringend nach Fachleuten. Zum anderen wird das eigene Personal auch dafür benötigt, um die Anwendungen nach wie vor zu betreuen und operativ zu halten. Das Ganze mit Weiterbildung zu kombinieren ist sehr anspruchsvoll für die Mitarbeiter.
- Gewünschte Interoperabilität: In der Regel finden wir auch mehrere Anwendungen vor, die miteinander agieren und zusammen betrachtet werden müssen, um eine Modernisierungsroadmap zu generien. Da stellt sich häufig die Frage der finanziellen Sinnhaftigkeit. Lohnt der Invest oder nicht?
- Auch die Mitarbeiter sind ein wichtiger Faktor, diese wollen mitgenommen werden damit auch die neue Lösung angenommen wird und sie bestmöglich unterstütz werden.