Softwareentwicklung in der Cloud

10 Cloud-Development-Tücken

02.04.2024 von Bob Violino
Bevor Sie Ihre Anwendungen in der Cloud entwickeln, testen oder bereitstellen, sollten Sie diesen Artikel lesen.
Den Kopf voreilig in die Cloud zu stecken, ist keine Lösung.
Foto: MikyR | shutterstock.com

Eine Cloud-basierte Softwareentwicklung kann diverse Vorteile realisieren. Zum Beispiel:

Doch Cloud Development birgt auch eine ganze Reihe nicht zu unterschätzender Herausforderungen und Risiken. Wir haben zehn für Sie zusammengestellt, die deutlich machen: Es lohnt sich, (mindestens) zweimal zu überlegen, bevor Sie Ihre Software in der Cloud entwickeln.

1. Performance- und Latenzprobleme

Cloud Services sind mit Blick auf Verfügbarkeit und Leistung im Großen und Ganzen zuverlässig. Dennoch sind Outages oder Performance-Probleme, die die Development-Prozesse beeinträchtigen, nicht ausgeschlossen - eher im Gegenteil. Erik Gaston, CIO beim Sicherheitsanbieter Tanium, warnt: "Netzwerküberlastung, gemeinsam genutzte Ressourcen in mandantenfähigen Umgebungen und die geografische Entfernung zwischen Nutzern und Cloud-Rechenzentren sind Faktoren, die bei Cloud-Anwendungen zu Leistungsproblemen beitragen können. Um an dieser Stelle Abhilfe zu schaffen, müssen Entwickler optimierten Applikations-Code sicherstellen und Content Delivery Networks einsetzen, um die Inhalte näher an den Endbenutzer zu bekommen."

Andere Optionen, um die Leistung zu optimieren, könnten laut dem CIO darin bestehen, sich für Cloud-Dienste mit niedriger Latenz zu entscheiden - etwa Edge Computing. "Unabhängig davon hängt die Anwendungsleistung in der Cloud von diversen Faktoren ab, die weit über Design und Aufbau hinausgehen", ergänzt Gaston.

Um Latenzprobleme zu verhindern, empfiehlt Aleksa Krstic, CTO beim SaaS-Anbieter Localizely: "Ziehen Sie Services in Betracht, die über mehrere Cloud-Rechenzentren oder -Regionen verteilt sind."

2. Security- und Datenschutzrisiken

Security und Datenschutz sind - wie bei praktisch allen IT-Aspekten - auch im Rahmen von Cloud-Development-Initiativen zentrale Anliegen. Angesichts der Threat-Vielfalt und -Häufigkeit in Cloud-Umgebungen eine zunehmend diffizile Herausforderung. Prabhsharan Singh, Softwareentwickler beim Healthcare-Unternehmen Clinicspots, erklärt: "Stringente Security-Protokolle sind bei der Softwareentwicklung in der Cloud das A und O, um sensible Daten und Applikationen vor unberechtigtem Zugriff zu schützen. Weil Cloud-Dienste oft 'On Demand' zur Verfügung stehen müssen und gemeinsam genutzt werden, kommen diverse Komplexitäts-Layer hinzu, die das deutlich erschweren."

Um Security-Risiken zu minimieren empfiehlt Localizely-CTO Krstic:

"Darüber hinaus sollten Sie Ihre Cloud-Service-Anbieter gründlich unter die Lupe nehmen, um Compliance sicherzustellen", mahnt der Manager.

Matt Aird, CTO beim LED-Spezialisten Custom Neon, weist an dieser Stelle auf das Shared-Responsibility-Modell im Cloud-Umfeld hin: "Auf Anwendungsebene sind Unternehmen in der Regel selbst für die Sicherheit verantwortlich - auch wenn der Anbieter die Infrastruktur absichert."

3. Vendor Lock-in

Ganz allgemein bietet Cloud Computing eine bislang nicht dagewesene Flexibilität. Was im Umkehrschluss jedoch nicht bedeutet, dass die Möglichkeiten in Sachen Development- und Testing-Umgebung unbegrenzt sind.

CIO Gaston bringt das Problem - und seine Lösung - auf den Punkt: "Es besteht die Gefahr, sich an einen bestimmten Anbieter zu binden und anschließend nur unter erheblichem monetären Aufwand aussteigen oder migrieren zu können. Dieses Problem lässt sich zumindest abschwächen, indem Cloud-agnostische Architekturen eingeführt und klare Standards definiert werden, wann immer das möglich ist." Als Beispiel führt Gaston Container-Technologien wie Docker und Kubernetes an. Diese könnten dazu beitragen, Applikationen und Workloads portabel zu gestalten und ihre Migration zu vereinfachen.

Krstic weist außerdem darauf hin, dass Abstraktionsschichten und standardisierte Interfaces ebenfalls helfen können, um das Risiko eines Vendor Lock-in zu umgehen.

4. Ausufernde Kosten

Cloud Services zu nutzen, kann versteckte Kosten aufwerfen - dabei machen Softwareentwicklung und Testing keine Ausnahme. "Die Cloud-Nutzungskosten können schnell außer Kontrolle geraten, wenn die Verträge nicht ordnungsgemäß überwacht und gemanagt werden", gibt Gaston zu bedenken.

Dabei stehen laut dem Manager insbesondere drei Aspekte in Zusammengang mit unerwarteten Cloud-Kosten:

"Um dieser Herausforderung zu begegnen, sollten die Entwickler mit den finanziellen Aspekten der Cloud-basierten Entwicklung bestens vertraut sein", empfiehlt Gaston. Um die Kosten unter Kontrolle zu halten, schlägt er vor, die Ressourcennutzung mit Monitoring Tools zu tracken, automatisierte Skalierungslösungen einzusetzen und die Konfigurationen auf regelmäßiger Basis zu überprüfen.

5. Compliance-Anforderungen

Mit der Cloud zu arbeiten, wirft das Problem auf, dass die Daten dabei in beliebigen Regionen und Ländern gespeichert sein können - je nachdem, wo sich die Cloud-Infrastruktur befindet. Mit Blick auf die Compliance ist das problematisch. Deswegen sind die Development-Teams gefordert, sich über Änderungen in diesem Bereich auf dem Laufenden zu halten und erforderliche Kontrollmaßnahmen einzuziehen.

Localizely-Manager Krstic weiß, was hilft: "Einerseits kann es helfen, einen Cloud-Service-Provider auszuwählen, der integrierte Compliance-Zertifizierungen anbietet. Andererseits trägt eine enge Kollaboration mit Rechtsexperten und Compliance-Beauftragten dazu bei, relevante Regularien einzuhalten."

Auch Softwareentwickler Singh weist auf drohende Probleme mit der Datenhoheit hin. Sein Lösungsansatz für das Problem: "Essenziell ist es, Data-Management-Richtlinien zu befolgen und sicherzustellen, dass die gewählten Anbieter compliant sind. Daüber hinaus kann auch eine Hybrid- oder Multi-Cloud-Strategie mehr Kontrolle darüber geben, wo die Daten gespeichert werden."

6. Kompatibilitäts- und Integrationsprobleme

Softwareentwicklung in der Cloud könne darüber hinaus laut Singh auch zu Kompatibilitätsproblemen führen, weil Software, die für bestimmte Cloud-Umgebungen entwickelt wurde, wegen Infrastrukturunterschieden möglicherweise nicht gleichermaßen effektiv mit unterschiedlichen Cloud Services funktioniere: "Plattformübergreifende Kompatibilität zu gewährleisten, kann zusätzliche Development-Arbeit aufwerfen", konstatiert der Entwickler. Als mögliche Lösungen für Probleme dieser Art empfiehlt Singh, Container einzuführen und Orchestrierungs-Tools einzusetzen.

Ein weiteres mögliches Problemfeld: Die Integration. Singh erlärt: "Cloud-basierte Anwendungen mit bestehenden On-Premises-Systemen zu integrieren, stellt eine Challenge dar, weil das oft erfordert, mit Legacy-Infrastruktur und -Software umzugehen." Ansätze, um diese Herausforderung zu bewältigen, sieht der Entwickler beispielsweise darin, Middleware und API-Management-Tools einzusetzen, die eine nahtlose Kommunikation zwischen Cloud- und On-Premises-Systemen gewährleisten.

Custom-Neon-CTO Aird kann davon ebenfalls ein Lied singen und offenbart, wie sein Arbeitgeber verfährt, um diesbezüglich Abhilfe zu schaffen: "Daten in die Cloud zu migrieren und effektiv zu managen, kann besonders bei großen Datenmengen schwierig sein. Wir stellen deshalb sicher, dass unsere Mitarbeiter mit den Techniken des Cloud-nativen Datenmanagements vertraut sind. Zudem nutzen wir die Datenmigrations-Tools und -Services, die die Cloud-Anbieter zur Verfügung stellen."

7. Scalability-Erfordernisse

Die Möglichkeit, die Kapazität je nach Bedarf hoch oder herunter zu skalieren, ist ein wesentlicher Benefit von Cloud Services. Allerdings können Entwicklungs-Teams in Sachen Skalierbarkeit auch Probleme ereilen, wenn Software in der Cloud erstellt, gestestet und bereitgestellt wird. Maria-Diandra Opre, Cybersicherheitsexpertin und Senior Analyst bei Earthweb, verfügt über einschlägige Erfahrungen, wenn es darum geht, skalierbare Systeme in der Cloud zu entwickeln. Sie empfiehlt: "Meiner Erfahrung nach ist es am wichtigsten, die Architektur von Anfang an auf Skalierbarkeit auszurichten. Dazu tragen eine lose Kopplung, unabhängige Komponenten und ein modularer Ansatz bei. Eine Microservices-Architektur, die diesen Prinzipien folgt, ist äußerst effektiv: Jeder einzelne Service kann unabhängig vom Bedarf skaliert werden, während Ausfälle isoliert werden. Das ermöglicht, die Software automatisch und reibungslos nach oben und unten zu skalieren."

Unveränderliche Infrastrukturen und Automatisierung seien weitere Methoden, deren Einsatz sich lohne, so Opre: "Die Infrastruktur deklarativ und verfügbar zu machen, vereinfacht den Skalierungsprozess. Essenziell ist es, sowohl Performance als auch Nutzung effektiv zu überwachen, um proaktiv zu skalieren bevor Engpässe auftreten - statt reaktiv, wenn Probleme auftauchen."

8. Verteilte Zusammenarbeit und Kommunikation

Auch für Softwareentwickler ist es unerlässlich, effektiv zu kommunizieren und zu kollaborieren. Anderenfalls wird es schwierig, zu gewährleisten, dass alle Teammitglieder mit Blick auf den Development-Prozess auf dem aktuellen Stand der Dinge sind.

Wenn es sich um verteilt arbeitende Teams handelt, könne es jedoch herausfordernd sein, eine effektive Zusammenarbeit sicherzustellen, wie Phil Portman, CEO beim Softwareunternehmen Textdrip, zu bedenken gibt. Gut, dass der Manager auch weiß, was an dieser Stelle hilft: "Nutzen Sie Collaboration Tools, implementieren Sie agile Methode und fördern Sie eine klare Kommunikation durch regelmäßige Stand-Up-Meetings und Dokumentationen."

9. Testing- und Deployment-Hürden

Testing und Deployment können bei Cloud-basierter Softwareentwicklung eine Reihe individueller Problemstellungen begünstigen. Juan Nassif, Solution Architect bei der IT-Beratung BairesDev, gibt Einblicke und Lösungstipps: "Wenn es sich um komplexe und verteilte Cloud-basierte Systeme handelt, wird Testing zur Herausforderung. Testing- und Automatisierungs-Tools sowie entsprechende Prozesse können Teams dabei unterstützen, diese zu bewältigen."

Clinicspots-Dev Singh hat bei diesem Aspekt noch einen Ratschlag für Dev-Teams: "Pipelines für Continuous Integration und Continuous Delivery können Testing- und Deployment-Prozesse rationalisieren und dabei unterstützen, Konsistenz über verschiedene Cloud-Umgebungen zu wahren."

10. Globale Marktzwänge

Cloud-Applikationen für den globalen Markt zu entwickeln, setzt voraus, dass die dafür notwendigen Skills im Team vorhanden sind. Das ist laut Rebecca Ray, Director bei CSA Research, allerdings oft nicht der Fall: "Designer, Produktmanager und Technologieexperten, die Cloud-Anwendungen für den Weltmarkt entwerfen sollen, mangelt es in vielen Fällen an den dafür nötigen Ressourcen - oder an Erfahrung auf internationalem Terrain."

Um dieses Problem aufzulösen, schlägt die Managerin vor, in den Phasen der Ideenfindung, sowie der Definition von Prioritäten und Produktanforderungen mit Lokalisierungs-Teams zusammenzuarbeiten: "Die Lokalisierungsverantwortlichen verfügen über das nötige Knowhow, um gewichtete Kriterien zu entwickeln, die auf internationalen Use Cases, lokalen Geschäftspraktiken und Märkten sowie den jeweils relevanten, rechtlichen Rahmenbedingungen basieren." (fm)

Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.