Cloud-Services in der Softwareentwicklung Legacy-Applikationen in die Cloud migrieren

Autor / Redakteur: Dr. Veikko Krypczyk* / Elke Witmer-Goßner

Die Cloud bietet unbestreitbare Vorteile für eine Vielzahl von Use Cases der modernen Anwendungsentwicklung. Auch für klassische Business-Applikationen ist das Spektrum groß. Es reicht von der Nutzung einzelner Cloud-Services bis hin zur Verlagerung der gesamten Applikation in die Wolke.

Firmen zum Thema

Nicht alles muss für die Cloud neu entwickelt werden, auch bestehende Softwaresysteme können schrittweise in die Cloud migriert werden.
Nicht alles muss für die Cloud neu entwickelt werden, auch bestehende Softwaresysteme können schrittweise in die Cloud migriert werden.
(Bild: ©sdecoret - stock.adobe.com)

Die Hard- und Softwarestruktur von modernen Anwendungssystemen verlagern sich immer mehr in die Cloud. Auch für Business-Applikationen aus dem Enterprise-Umfeld ergeben sich in zunehmenden Maßen vermehrt Szenarien, indem die Nutzung der Cloud als Infrastruktur eine Reihe von Vorteilen bringt:

Reduktion der fixen Kosten: Es fallen keine Kosten für Investitionen in Hard- und Software an. Alle Kosten werden in die Nutzungsentgelte inkludiert. Das betrifft auch die anfallenden Kosten für die Stromversorgung, Wartung und die Administration durch IT-Experten. Gezahlt werden üblicherweise nur die bereitgestellten bzw. genutzten Ressourcen. Durch ein Sinken der Investitionskosten können geplante Vorhaben unmittelbar gestartet werden und die Hürden für die Umsetzung neuer Projekte sind geringer.

Einfache Skalierbarkeit: Zusätzliche IT-Ressourcen können in kürzester Zeit zur Nutzung bereitgestellt werden. Ebenso ist es möglich bei einem geringeren Bedarf die Infrastruktur wieder zurückzufahren.

Passende Leistung: Die Leistungsfähigkeit der Hardware kann nach Bedarf ausgesucht werden. Das Spektrum reicht von standardmäßig konfigurierten virtuellen Maschinen bis hin zu Hochleistungsrechnern. Cloud-Anbieter investieren in eine regelmäßige Wartung und in neue Technik, so dass sich hier i.d.R. gegenüber der lokalen IT-Infrastruktur Vorteile ergeben.

Hohes Datensicherheitsniveau: Zentral definierte Sicherheitsrichtlinien bieten meist einen höheren Level an Datensicherheit als ein lokales und eigenständig gewartetes Rechenzentrum. Dennoch ist auf die Einhaltung der Bestimmung der Datenschutzgrundverordnung bei einer Nutzung von Cloud-Services im Allgemeinen und einer Speicherung von personenbezogenen Daten im Speziellen zu achten.

Hohe Effizienz: Eine Vielzahl der Aufgaben, wie zum Beispiel die Einrichtung und Pflege der Hardware bzw. die Installation und Wartung der Software erfolgen durch den Cloud-Service-Anbieter. Die IT-Teams in den Unternehmen können sich auf ihre Use Cases aus dem Kerngeschäft konzentrieren.

Hohe Zuverlässigkeit: In Fragen der Ausfallsicherheit, der Wiederherstellung nach einem Fehler und der regelmäßigen Datensicherung bieten Cloud-Dienste meist ein höheres Niveau an Zuverlässigkeit als eine lokal gewartete Infrastruktur.

Je nachdem, welche Dienste über die Cloud vermittelt werden ist zwischen unterschiedlichen Arten zu differenzieren. Es führt zu der bekannten Einteilung in die Kategorien: Infrastructure-as-a-Service (Bereitstellung der Hardware), Platform-as-a-Service (Nutzung von Hardware und Systemsoftware) und Software-as-a-Service (Verwendung von Hardware, Systemsoftware und Anwendungssystemen). Eine besondere Anwendung des Cloud-Computings ist das so genannte Serverlose Computing. Hier werden die Dienste unmittelbar und ohne Verwaltungsaufgaben für die notwendige Infrastruktur angeboten. Ein Beispiel sind Serverlose API-Gateways, als vollständig verwalteter Einstiegspunkte für Dienste. Entwickler können diese APIs direkt nutzen, ohne sich um deren Administration zu kümmern.

Auswirkungen auf die Softwareentwicklung

In der Praxis geht es dabei sehr häufig darum, dass bestehende Applikationen migriert werden, d.h. das Ziel besteht darin sie schrittweise zu Cloud-nativen Applikationen umzubauen.

Hierzu existieren unterschiedliche Ansatzpunkte, d.h. Cloud-Computing kann für verschiedene Funktionen und in einem unterschiedlichen Umfang zum Einsatz kommen. Dazu zählen:

Nutzung von Services über REST: Eine Vielzahl von einzelnen Services, werden über ein standardisiertes REST-Interface bereitgestellt. Darüber ist es möglich kleinteilig und flexibel Funktionen unterschiedliche Dienste in der eigenen Applikation zu verwenden.

Bereitstellung von Anwendungsressourcen: Ebenso können für andere Softwaresysteme Anwendungs- und Datenbankfunktionen als REST-Service zur Verfügung gestellt werden. Die Dienste der Applikation können auf diese Weise geräte- und plattformübergreifend genutzt werden. Dazu wird die lokal implementierte Geschäftslogik in die Cloud verlagert und als REST-Service angeboten.

Einbindung von Backend-Diensten: Backend-Dienste (Backend-as-a-Service) stellen gebündelte Services für Mobile Apps zur Verfügung, dazu gehören Datenspeicherung, Benutzerverwaltung, Messaging, Push-Notfications usw.

Interaktion mit Cloud-Servicedienstleistern: Dazu zählen die universellen Angebote von Microsoft Azure oder Amazon AWS. Diese bieten ein umfassendes Angebot an Diensten wie zum Beispiel die Datenspeicherung in SQL- und NoSQL-Datenbanken und Benutzerregistrierung. Auch diese Services können vielfältig in der eigenen Applikation verwendet werden.

Eine weitere Option ist die Bereitstellung des kompletten Anwendungssystems über einem Cloud-Service Dienstanbieter, statt der Nutzung der IT-Infrastruktur im eigenen Rechenzentrum. Zusammenfassend kann an dieser Stelle gesagt werden: Durch die Nutzung der genannten Cloud-Services können Softwaresysteme deutlich flexibler gestaltet werden und von den eingangs genannten Vorteilen profitieren.

Cloud-Services können dabei bereits von zu Beginn an in neue Applikationen integriert oder schrittweise im Zuge einer Anwendungsmigration in bestehende Softwaresysteme aufgenommen werden. Da es sich um wiederkehrende Aufgaben handelt, ist der Einsatz von Bibliotheken und Komponenten sinnvoll. Dadurch kann die Anwendungserstellung beschleunigt und vereinfacht werden. Moderne Entwicklungsumgebungen bieten verschiedene Varianten, um Applikationen bzw. Services in die Cloud zu transformieren.

Entwicklungstools an einem Beispiel erklärt

Beispielhaft wird dazu das Ökosystem bestehend aus den Technologien der Entwicklungstools RAD Studio und RAD Server in Verbindung mit den Cloud-Services Microsoft Azure bzw. Amazon AWS vorgestellt.

Abb. 1. Optionen zur Nutzung von Cloud-Services mit Komponenten aus RAD Studio.
Abb. 1. Optionen zur Nutzung von Cloud-Services mit Komponenten aus RAD Studio.
(Bild: Autor)

Um aus einer auf einem Endgerät ausgeführten Anwendung Daten mit einem cloud-basierten REST-Dienst auszutauschen (siehe Abb. 1), stehen in RAD Studio fertige Komponenten zur Verfügung (1). Auf dem Wege der Konfiguration werden die Adresse, mögliche Parameter und die Angaben zur Authentifikation eingestellt. Für den Zugriff auf die Services der Cloud-Dienste Microsoft Azure und Amazon AWS gibt es ebenfalls konfigurierbare Komponenten (2). Damit können diese Services direkt aus der Applikation adressiert werden. Werden Apps für die mobilen Systeme entwickelt, dann hat sich häufig der Einsatz von Parse-basierten Backend-Providern etabliert (3). Dieses ehemals von Facebook entwickelte System wird von unterschiedlichen Backend-Diensten verwendet. Auch hier gibt es fertige Komponenten, zum Beispiel für die Datenspeicherung, die Arbeit mit Benutzerdaten oder das Senden von Push-Benachrichtigungen.

Besteht das Ziel darin die bestehende Geschäftslogik aus der lokalen Anwendung in die Cloud zu bringen, dann kann dafür der Einsatz des RAD Servers eine passende Infrastruktur bieten. Ein besonderes Leistungsmerkmal ist die Bereitstellung der Dienste direkt aus der integrierten Entwicklungsumgebung. Damit ist es auf einfachste Weise möglich, Geschäftslogik als RESTful API-Service zu hosten. Ebenso kann vorhandener Delphi- oder C++-Quellcode mit vertretbarem Aufwand zu einem universell nutzbaren Backend portiert werden. Der Aufwand für Migrationen von Legacy-Applikationen wird dadurch merklich reduziert.

Abb. 2. Klassische Client-Server-Anwendungsarchitektur.
Abb. 2. Klassische Client-Server-Anwendungsarchitektur.
(Bild: Autor)

Letztendlich bietet sich auch die Option einer direkten Anwendungsbereitstellung in der Cloud. Hier kann man die Applikation über den integrierten Bereitstellungs-Manager in RAD Studio auf Amazon EC2 oder Microsoft Windows Azure bereitstellen.

Veränderte Softwarearchitektur

Die Transformation von Komponenten eines Anwendungssystems in die Cloud führt zu einer veränderten Softwarearchitektur. Ausgangspunkt ist die klassische Client-Server-Architektur (siehe Abb. 2). Native Applikationen greifen dabei zum Beispiel auf eine Datenbank zu. Dabei können clientseitig unterschiedliche Technologien zum Einsatz kommen. Die gesamte Programmlogik muss jedoch auf den Clients – ggf. mehrfach für unterschiedliche Systeme – umgesetzt werden.

Abb. 3. REST-basierte Anwendungsarchitektur.
Abb. 3. REST-basierte Anwendungsarchitektur.
(Bild: Autor)

Bei einer Transformation der Businesslogik in die Cloud und die Bereitstellung über einen REST-Server wird das System deutlich flexibler. Die Datenbank wird zentral über den REST-Service vermittelt (Bild 3). Clientseitige Applikationen können den Service mit Hilfe standardisierter Abfragen nutzen. Im Zuge einer Anwendungsmigration kann dabei eine bestehende Businesslogik vom Client auf den Server verschoben werden und nunmehr als universelles REST-API system- und geräteunabhängig genutzt werden. Ausschlaggebend ist die Vereinfachung, dass die Geschäftslogik nur auf Seiten des Servers bereitgestellt und gewartet werden muss. Der Server kann wiederum innerhalb einer virtuellen Maschine ausgeführt werden.

Abb. 4. Serverless Anwendungsarchitektur.
Abb. 4. Serverless Anwendungsarchitektur.
(Bild: Autor)

Noch einen Schritt weiter geht es beim Szenario des Serverless-Computings. Hier wird ebenfalls die gesamte Businesslogik in die Cloud verlagert. Dabei werden jedoch die einzelnen Aufgaben der Businesslogik als isolierte Funktionen angeboten (siehe Abb. 4). Die Funktionen werden als losgelöste Dienste (Serverless) bereitgestellt, d.h. dem Entwickler obliegt hier die Entwicklung der Businesslogik mit Hilfe spezialisierter Cloud-Services, zum Beispiel mit Azure Functions und die Entwicklung der clientseitigen Applikationen, zum Beispiel mit RAD Studio. Vorteilhaft bei diesem Szenario ist, dass alle administrativen Aufgaben der Server-Installation und Wartung entfallen.

Fazit

Die Möglichkeiten der Cloud verändern existierende Softwarearchitekturen. Dabei können verschiedene Arten des Cloud-Computings gewählt werden. Der Nutzer arbeitet weiterhin an einer nativ, auf dem lokalen Endgerät ausgeführten Applikation. Entwickler müssen sinnvoll entscheiden, welche Teile des Softwaresystems in einem cloudbasierten Service verlagert werden.

* Der Autor Dr. Veikko Krypczyk ist begeisterter Entwickler und Fachautor. Weitere Informationen zu diesen und anderen Themen der IT finden Sie unter LARInet.

(ID:47762871)