Bevor Sie eine neue Anwendung entwickeln, stellen sich Unternehmen regelmäßig die Frage, auf welchen Plattformen die Applikation laufen soll. Es ist wichtig, diese Frage zu beantworten, da speziell auf die Leistungsmerkmale der jeweiligen Plattform abgestimmte Anwendungen leistungsstärker, widerstandsfähiger und einfacher zu administrieren sind als „Lösungen von der Stange“. Das gilt für die klassische Softwareentwicklung genauso wie für Public und Private Clouds. Wie aber gelingt es Unternehmen eine zuverlässige und nutzerfreundliche Anwendungsarchitektur für die Public oder Private Cloud zu entwickeln und zu implementieren? Und wie müssen sie die technischen Konzepte gestalten, damit die IT-Projekte erfolgreich laufen?
In 5 Schritten zur cloud-fähigen Anwendungsarchitektur:
- Anwendung als Auswahl von Services gestalten.
- Daten entkoppeln.
- Auf die Kommunikation zwischen den Anwendungskomponenten achten.
- Genaue Konzeption sorgt für mehr Leistung und Skalierung.
- Die Sicherheit innerhalb der Anwendung systematisieren.
Die Anwendung als Konstrukt einzelner Microservices gestalten
Die beste Lösung, um Cloud-Anwendungen bereitzustellen, ist sie als Architektur von einzelnen Cloud-Diensten, Microservices und APIs zu implementieren. Auf diese Weise entsteht eine servicebasierte und -orientierte Architektur. Ein solches Konzept entkoppelt die Daten und Backend-Anwendungen von der Benutzeroberfläche, sodass der Fokus auf den Funktionen liegt, die als Dienste bereitgestellt und unabhängig voneinander genutzt werden können.
Entwickler von Anwendungsarchitekturen für die Cloud müssen sich mit komplexen verteilten Systemen auseinandersetzen. Sie profitieren von lose gekoppelten Anwendungen. Denn diese basieren auf Diensten, die zusätzlich von den Daten entkoppelt werden können. Die Dienste können physisch getrennt und auf den passenden Serverinstanzen ausgeführt werden. Mithilfe von Service- und API-Managern sowie Governance-Technologien, welche die Dienstverzeichnisse bereitstellen, lassen sich alle Services einer Anwendung verwalten und überwachen.
Es ist sinnvoll, die Dienste aus anderen Applikationen und die granulare Services wieder zu verwenden. Die Software kann damit in hunderte Microservices geteilt werden, die anschließend für weitere Applikationen genutzt werden können. Bei der Entwicklung neuer Software kann man wieder auf diese Dienste zurückgreifen.
Daten entkoppeln
Die Datenspeicherung in einer Cloud eignet sich nicht, wenn Daten eng mit einer Anwendung gekoppelt werden sollen. Wie oben erläutert, sind sowohl die Private Cloud als auch die Public Cloud komplexe verteilte Systeme. Deshalb funktionieren sie am besten mit Anwendungsarchitekturen, bei denen Informationsverarbeitung und Datenspeicherung in separaten Komponenten stattfinden. Die Entkopplung der Daten bietet ähnliche Vorteile wie das Design einer Anwendung in Form einer Kombination verschiedener Dienste. Nach dem Entkoppeln können Daten entweder in einer öffentlichen oder einer privaten Cloud-Instanz gespeichert und verarbeitet werden. So halten viele Unternehmen sensible Daten auf lokalen Servern (Private Cloud) vor. Die allgemeinen Instanzen der virtuellen Maschinen werden hingegen in die Public Cloud ausgelagert.
Die Performance ist ein weiteres wichtiges und nicht zu unterschätzendes Thema bei der Entwicklung von cloudbasierten Anwendungsarchitekturen. Zum Beispiel führen internetbasierte Lese- und Schreibvorgänge in Datenbanken zeitweilig zu Wartezeiten. Durch den Einsatz von Cache-Systemen kann die Performance gesteigert werden. Denn Cache-Systeme erhöhen die Datenbankleistung durch die lokale Speicherung von Daten, auf die häufig zugegriffen wird.
Beim Einsatz von Containern muss dem Datenkonzept eine hohe Aufmerksamkeit gewidmet werden, da Container per Definition keine persistenten Daten vorhalten sollten.
Auf die Kommunikation zwischen den Anwendungskomponenten achten
Sind Daten und Dienste beziehungsweise Anwendungen entkoppelt, bedeutet das nicht, dass eine Software speziell für eine Cloud-Plattform entwickelt wurde (Cloud Native). Die Kommunikation zwischen den verschiedenen Services muss zusätzlich betrachtet werden. Komponenten von API-basierten Anwendungen, die permanent miteinander kommunizieren, reduzieren die Performance der Gesamtanwendung. Normalerweise werden diese über ein Netzwerk oder das Internet verteilt, wo die Toleranz für hohe Latenz gewünscht ist. Es lohnt sich daher, sich auf die Entwicklung von Anwendungen zu konzentrieren, welche die Kommunikation zwischen den einzelnen Komponenten optimiert. Beispielsweise indem die Kommunikation in einem einzigen Datenstrom oder einer Message Queue kanalisiert wird.
Erfolgreiche Konzeption für mehr Leistung und Skalierung
Die Betrachtung der Performance der Gesamtanwendung ist ein wichtiger Punkt bei der Applikationsentwicklung. Dazu gehört, ein Verständnis dafür zu entwickeln, wie sich eine Anwendung bei zunehmender Last skalieren lässt. Das Konzept für die Entwicklung einer Anwendung sollte das Verhalten der Anwendung bei steigender Last berücksichtigen.
Angenommen, es melden sich 1.000 oder mehr Nutzer gleichzeitig an. Wie reagiert dann die Anwendung auf den höheren Datenverkehr im Netzwerk, auf die stärkere Auslastung der Server und der Datenbanken? Diese Fragen gilt es zu beantworten, um ein aussagekräftiges Ergebnis im Hinblick auf die gewünschte Leistung zu erzielen.
In unserem Beispiel erhöht sich die Auslastung der Anwendungsserver möglicherweise um 80 Prozent, die des Netzwerks um zehn Prozent und die der Datenbank um 40 Prozent. Kommen 1.000 weitere Nutzer hinzu, werden die verfügbaren Anwendungsserver vermutlich ausgelastet sein. Die Folge: Weitere Serverinstanzen müssen hochgefahren werden. Vielleicht bleibt die Netzwerkkapazität gleich, aber die Anzahl der Datenbankinstanzen muss trotzdem erhöht werden, um die zusätzliche Belastung zu bewältigen.
Wie eine Anwendung skaliert werden muss, damit die benötigten Ressourcen automatisch hochgefahren werden können, beschreibt das technische Konzept. Cloud-Dienstleister wie AWS, Azure oder Google Platform bieten solche Funktionen zur automatischen Skalierung an. Der effizienteste Lösungsansatz besteht jedoch darin, ein Verständnis für das Workload-Profil der Anwendung zu entwickeln, den Skalierungspfad zu definieren sowie Mechanismen zu implementieren, die sicherstellen, dass die Software tatsächlich skaliert wird.
Die Sicherheit innerhalb der Anwendung systematisieren
Unabhängig von der Art der Applikation steht beim Hosting einer Anwendung in der Cloud das Thema Sicherheit an erster Stelle. Das bedeutet, dass die Sicherheits-Features für eine Anwendung in einer cloud-basierten Architektur systemisch direkt mit entwickelt und fest in die Architektur integriert werden.
Der für den jeweiligen Anwendungstyp geeigneten Sicherheitsansatz wird am besten vor dem Entwicklungsstart gewählt. In diesen Schritt fällt auch die Evaluation der passenden Technologie. Zusätzlich fließen die jeweiligen Compliance- sowie weitere Sicherheitsanforderungen in das Konzept ein. Unternehmen, die personenbezogene Daten erheben, verarbeiten und/oder speichern, müssen die EU-DSGVO beachten. Je nach Branche (Gesundheitswesen, Bank, Versicherung) schreiben weitere spezielle Richtlinien vor, wie und wo die Daten gelagert werden dürfen – und wo nicht. Außerdem muss die Anwendung vertrauliche Daten mit den erforderlichen Sicherheitsstufen (zum Beispiel Verschlüsselungsmechanismen) auf bestimmte Art und Weise verarbeiten.
Für cloudbasierte Anwendungen empfiehlt sich der Einsatz eines Identitäts- und Zugriffsmanagement (IAM = Identity and Access Management). Damit werden sicherheitsbezogene Konfigurationen von Anwendungen flexibel gestaltet. Die Anwendungen erreichen einen hohen Sicherheitsstandard, da die nativen Funktionen der Cloud und des eingesetzten IAM-Systems genutzt werden.
Fazit: Geduld zahlt sich aus
Eine cloud-fähige Anwendungsarchitektur aufzubauen, bedeutet sich auf neue Prozesse einzulassen ohne traditionelle Verfahren komplett über Bord zu werfen. Testphasen und ein kontinuierliches Lernen aus Fehlern, die während des Entwicklungsprozesses gemacht werden, sind wichtige Bestandteile des Cloud-Anwendungsdesigns. Früh erkannt und rechtzeitig korrigiert, schaden Entwicklungsfehler nicht, sondern helfen Anwendungen für die Cloud erfolgreich zu realisieren und zu implementieren.
Die Orientierung am konkreten Bedarf eines Unternehmens hat bei der Anwendungsentwicklung Vorrang – selbst wenn das anfänglich zu längeren Entwicklungszyklen und höheren Kosten führt. Auch wenn die Anwendungsentwicklung in der Cloud am Anfang höhere Kosten verursacht als ein herkömmliches Development, die Investition in eine moderne Anwendungsarchitektur zahlt sich später Jahr für Jahr in Form schneller Entwicklungszyklen und einer wartbaren modularen Architektur aus.