Architecting Distributed Cloud Applications

Cloud-Anwendungen erfolgreich aufbauen

Cloud-Anwendungen versprechen mehr Effizienz, geringere Kosten und höhere Produktivität. Doch wie gelingt es eigentlich, sie erfolgreich aufzubauen?

Auf lange Sicht kommt wohl niemand an der Cloud vorbei. Zu verlockend sind die offensichtlichen Vorteile, die Cloud Computing mit sich bringt: Effizientere Prozesse, geringere Kosten, höhere Produktivität. Cloud-Lösungen bieten eine Vielzahl von Benefits, da durch flexible Skalierung die Grundlage für die Agilität im Unternehmen geschaffen wird. In der Folge scheint es nur logisch, dass immer mehr Anwendungen für eine wachsende Cloudinfrastruktur entwickelt werden. Allerdings wachsen auch die an Applikationen in der Cloud gestellten Anforderungen wie etwa Skalierbarkeit, Benutzerfreundlichkeit, Zuverlässigkeit, Leistungsfähigkeit und Sicherheit. Für die Entwicklung entsprechender state-of-the-art Applikationen bedarf es folglich durchdachter Lösungswege und geeigneter Technologien.

Anzeige

Bekannte Herausforderungen

Wenn es darum geht, die Cloud von der Theorie in die Praxis zu überführen, fühlen sich viele Unternehmen stark gefordert. Ein wesentlicher Aspekt ist hier beispielsweise die Sicherstellung der Verfügbarkeit entsprechender Business-kritischer Anwendungen. Cloud Computing benötigt darum in erster Linie nicht nur eine stabile und funktionierende Internetverbindung, um 24/7 auf die eigenen Ressourcen zugreifen zu können, sondern auch einen vertrauenswürdigen Anbieter mit zugesicherten Service-Level-Agreements (SLAs). Gleichzeitig muss dieser auch in der Lage sein, mit seinem Angebot das zukünftige Wachstum der Organisation und die damit verbundenen Kundenanforderungen abbilden zu können. Das gilt selbstredend auch für den Support im Falle technischer Probleme.

Ein weiterer wichtiger Punkt ist die bewusste Übertragung von Verantwortung, die bei der Nutzung von Cloudangeboten unweigerlich eintritt. Durch die bewusste Kontrollverlagerung an den Dienstleister über den Betrieb der Infrastruktur und einiger wichtiger Systeme, verlieren die IT-Verantwortlichen die Überwachungshoheit über ihre eigene IT-Infrastuktur. Bei der Providerauswahl sollten dementsprechend ein erstklassiger Support, Integrität sowie Verfügbarkeit und Sicherheit im Vordergrund stehen.

Insbesondere die Sicherheit bereitet vielen Fachverantwortlichen Kopfzerbrechen. Darum gilt es darauf zu achten, dass der Cloud-Anbieter für geeignete Werkzeuge sorgt, um einen Basisschutz zu garantieren und IT-Risiken durch kriminelle Angreifer auf ein Minimum reduziert.

All dies macht deutlich, dass auch die Konzeption von Cloud-Anwendungen eine neue und andere Denkweise erfordert.

Cloud-Anwendungen zukunftsorientiert denken

Das primäre Ziel eines Unternehmens sollte darin bestehen, seinen Kunden hervorragende Produkte und Dienstleistungen bereitzustellen. Durch die digitale Transformation entsteht der Mehrwert für die Kunden zunehmend auf der Ebene der Applikationen. Aus diesem Grund sollte bei der Entwicklung der Applikationen besondere Sorgfalt Anwendung finden.

Auf lange Sicht kann es sich lohnen, Daten und Services zu entkoppeln, um die Skalierung, Fehlerbehebung und Aktualisierung von Anwendungen zu erleichtern. Private und öffentliche Clouds sind komplexe Systeme. Für eine Reduzierung der Abhängigkeiten zwischen den unterschiedlichen Systemen sollte bei der Erstellung von Anwendungsarchitekturen darauf geachtet werden, die Verarbeitungskomponenten und Daten sauber voneinander zu trennen. Wenn Unternehmen dieses Prinzip beachten, gestalten sie die Skalierung, Fehlerbehebung und Aktualisierung ihrer Anwendungen deutlich einfacher.

Splitting a monolith to microservices

Bild: Splitting a monolith to microservices (Quelle: APIIDA AG)

Während die IT-Welt lange Zeit von JAVA oder .NET dominiert wurde, hat sich dies im Laufe der Zeit stark geändert. Fast jährlich entstehen neue Programmiersprachen oder Kombinationen von Sprachen, Libraries und Lösungen. IT-Architekten und Entwickler können inzwischen aus einer Vielzahl von Programmiersprachen wählen. Was aber geschieht, wenn Anwendungen, die in verschiedenen Sprachen geschrieben wurden, miteinander interagieren müssen? Die Antwort auf diese Frage sind Application Programming Interfaces (APIs). Sich auf die Anwendung von APIs anstatt auf die Nutzung einer spezifischen Programmiersprache zu konzentrieren entwickelt sich zunehmend zu einem Muss. APIs sorgen künftig zudem dafür, dass einzelne Applikationen und Services entkoppelt von einander betrieben und skaliert werden können.

Der Umstieg auf Cloud-native Applikationen verlangt neben dem Überdenken der Anwendungsarchitektur auch eine Erweiterung der Sicherheitsvorkehrungen hinsichtlich der Cloudinfrastruktur und Applikationen. Jene sind schlussendlich nur dann wirklich sicher, wenn Lösungen eines geeigneten Anbieters für das Identity und Access Management (IAM) zum Einsatz kommen und einige andere Faktoren Beachtung finden: Dazu zählen unter anderem die Kommunikation mit anderen Systemen, APIs, SQL-Injection-Angriffe, Systemzuverlässigkeit und die Datenintegrität.

Newsletter
Newsletter Box

Mit Klick auf den Button "Jetzt Anmelden" stimme ich der Datenschutzerklärung zu.

Intelligente Helferlein für Cloud Applications

Im Sinne der Skalierung, des Kostenmanagements und der Fehleroffenheit, bewährt sich in der Praxis beispielsweise der Einsatz virtueller Maschinen und Container. Sie fungieren dabei im Grunde wie Services, die sofort bereitstehen, während sie unter anderem virtuelle Maschinen verwalten.
Auf die IT-Orchestrierung spezialisierte Unternehmen können zudem unter anderem Lebenszyklus und Management der Systeme, Services und Netzwerke automatisieren und so insgesamt für mehr Agilität und Performance sorgen.

Der Zugriff von außen oder auch intern auf die APIs lässt sich mit Hilfe geeigneter Werkzeuge wie etwa API-Gateways steuern und regeln, da sie üblicherweise zwischen den Backend-Systemen und der Außenwelt (in Form von Endnutzeranwendungen, Webclients usw.) angesiedelt sind. Ein Gateway kann als zusätzlicher Sicherheitspuffer für Cloud Applications dienen und übernimmt darüber hinaus Funktionen wie Lastausgleich, Routing, Throttling/Billing, Caching, Authentifizierung/Autorisierung, Überwachung und vieles mehr. Vorteilhaft erweist sich in der Praxis außerdem eine Microservice-Architektur, die lose miteinander gekoppelte Services umfassen kann. Anstelle einer einzigen, monolithischen Anwendung besteht sie aus vielen kleinen Servicemodulen, die individuell einsetzbar sind. Jeder dieser Microservices verfügt über eine eigene Codebasis, die von einem Entwicklerteam gepflegt und aktualisiert werden kann. Microservices kommunizieren über sorgfältig definierte APIs miteinander und können verschiedene Technologiestacks, Libraries oder Frameworks aufweisen. Dadurch wächst zwar die Komplexität, erfahrungsgemäß überwiegen allerdings die Vorteile, wie etwa eine außerordentlich hohe Flexibilität.

Schlussendlich erfreuen sich Anwendungsprogrammschnittstellen (Application Programming Interfaces, APIs) aus gutem Grund steigender Beliebtheit: Immerhin ermöglichen sie die Interaktion von Systemen unabhängig von der jeweiligen Programmiersprache. Auch beim Umstieg von monolithischen Designs zu Microservices spielen sie eine wichtige Rolle.

Fazit

Angesichts des rasanten technologischen Fortschritts lohnt sich die Entwicklung von Cloud-Anwendungen gerade für moderne, zukunftsorientierte Unternehmen. Schließlich schaffen sie schnell spürbare Mehrwerte – wenn sie sicher sowie resilient konzipiert sind und sich flexibel an die Erfordernisse eines Unternehmens anpassen lassen. Damit dies gelingt, sollten sich die Organisationen praxisbewährter Methoden und Technologien bedienen.

Dimitrios Pantouveris
Dimitrios Pantouveris, Services Consultant, APIIDA AG (Bildquelle: APIIDA AG)

apiida.com

 

Anzeige

Weitere Artikel

Newsletter
Newsletter Box

Mit Klick auf den Button "Jetzt Anmelden" stimme ich der Datenschutzerklärung zu.