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.