Cloud-Entwicklung: 9 Fallstricke, die Sie wissen müssen, bevor Sie einsteigen

Die Entwicklung und das Testen von Anwendungen in der Cloud werden immer beliebter, da immer mehr Unternehmen öffentliche und private Cloud-Computing-Initiativen starten. Die Cloud-Entwicklung umfasst in der Regel integrierte Entwicklungsumgebungen, Komponenten für das Application Lifecycle Management (z. B. Test- und Qualitätsmanagement, Quellcode- und Konfigurationsmanagement, Tools für die kontinuierliche Bereitstellung) und Komponenten für die Anwendungssicherheitstests.

Obwohl Technologiemanager und Entwickler mit Erfahrung in der Cloud-basierten Entwicklung sagen, dass die Entwicklung in diesen Umgebungen klare Vorteile bietet - wie Kosteneinsparungen und eine schnellere Markteinführung -, warnen sie auch davor, dass es Herausforderungen und Überraschungen gibt, auf die man achten muss.

[Im 21-seitigen Cloud Computing Deep Dive PDF-Sonderbericht der Redaktion erhalten Sie die sachlichen Erklärungen und Ratschläge, die Sie benötigen, um Cloud Computing wirklich nutzen zu können. | Bleiben Sie mit dem Cloud Computing Report-Newsletter auf dem Laufenden. ]]

Wie häufig sich die Entwicklung in der Cloud entwickeln wird, ist nicht klar. Die Branchenanalyse zeigt jedoch, dass sie auf dem Vormarsch ist. In einem Research Note vom Februar 2011 sagte Gartner, dass Kunden, die 2010 an den Symposien des Unternehmens teilnahmen, ein "stark erhöhtes Interesse" an Cloud Computing bekundeten, um die Entwicklung und Wartung bestehender benutzerdefinierter Webanwendungen zu verbessern.

"Ich sehe es am meisten im Prototyping und in der Entwicklung paralleler Niederlassungen, aber es gibt auch ein enormes Wachstum im Bereich Last- und Leistungstests", sagt Eric Knipp, Principal Research Analyst bei Gartner.

Wenn Sie sich zum ersten Mal in die Cloud-Entwicklung wagen möchten, finden Sie hier neun Arten von Hürden und Vorschläge, wie Sie diese von Entwicklern angehen können, die die Arbeit tatsächlich erledigt haben.

Cloud-Entwicklung gotcha 1: Die Cloud funktioniert nicht immer wie die "reale Welt"

Entwickler stellen möglicherweise fest, dass die Konfiguration, die sie in der Produktion verwenden, auf Cloud-Diensten nur schwer zu replizieren ist. Bei einer Anwendung, die Sie in der Cloud entwickeln, bevor Sie sie wieder lokal ausführen, müssen Sie möglicherweise einen Test mit einem Legacy-System durchführen, das Sie nicht einfach auf einen Cloud-Dienst kopieren können. Knipp sagt: "Das bedeutet, dass möglicherweise viel vorhanden ist Weitere Dinge, die Entwickler herausarbeiten müssen, um eine Test-App zum Laufen zu bringen. "

Service-Virtualisierungstechnologie kann helfen, sagt Knipp, und Entwickler können Marktangebote nutzen, die die Entwicklung mehrerer / paralleler Niederlassungen ermöglichen. Nehmen wir den Fall von iTKO, das eine Software-Suite namens Lisa anbietet, mit der Unternehmen Unternehmensanwendungen in die Cloud verschieben können.

Entwickler, die an die Entwicklung ohne Clouds gewöhnt sind, können auch beim Erstellen von Webanwendungen in der Cloud auf Überraschungen stoßen. Zum Beispiel hatte Greg Taylor, der eine Online-Registrierungsanwendung für die Ohio Music Education Association erstellt hatte, nicht erwartet, dass er ein so gründliches Verständnis der Datenbankstruktur und der Interaktion der Benutzer mit ihr benötigen würde, wenn er die Anwendung erstellte.

Die App, die die Registrierung von Schulmusikdarstellern in landesweiten Musikinhalten übernimmt, verwendet eine MySQL-Datenbank als Backend und Alpha Five 10.5 von Alpha Software als Frontend. "Ich komme aus einem FileMaker Pro-Hintergrund [und] dieses Produkt ist in Bezug auf die Datenbankstruktur äußerst nachsichtig", sagt Taylor. "Ein schlechtes Design kann immer noch mit angemessenem Erfolg verwendet werden."

Die Entwicklung mit MySQL zwang Taylor jedoch dazu, äußerst gut organisiert zu sein, damit die Web-App die bestmögliche Leistung erbringt. Das Zurückkehren zur Tabellenstruktur, um weitere Felder hinzuzufügen, ist zeitaufwändig, da zwischen verschiedenen Entwicklungstools, Navicat für MySQL und Alpha Five für das eigentliche Webseiten-Design, gewechselt werden muss. Das erste Tool erstellt die Datenbankstruktur, während das zweite die Seiten erstellt, mit denen der Benutzer interagiert, um Informationen in die Datenbank einzugeben und zu bearbeiten.

"Dies ist möglicherweise kein Problem für Entwickler, die eine bereits erstellte Datenbank nutzen", sagt Taylor. "Sie würden einfach Alpha Five verwenden, um die Webseiten zu entwickeln, auf die ein Benutzer zugreifen würde. In meinem Fall habe ich gleichzeitig sowohl die Datenbank als auch die Webseiten entwickelt, was mich veranlasst hätte, zwischen den Entwicklungstools zu wechseln, wenn ich nicht geplant hätte vorsichtig."

Um dieses anhaltende Roundtripping zu vermeiden, musste Taylor seinen Datenbankentwicklungsansatz ändern: "Durch die Entwicklung eines klaren ERD [Entity Relationship Diagram] mit allen erforderlichen Feldern ist meine Web-App effizient und meine Gesamtentwicklungszeit wird erheblich verkürzt."

In einigen Fällen funktionieren Cloud-Entwicklungstools wie in der realen Welt - zumindest in der gestrigen Version der realen Welt. Jeff Hensley, HRIS Senior Analyst bei DaVita, einem auf Nierendialyse spezialisierten Gesundheitsunternehmen, war überrascht, dass Entwickler, die in der Cloud arbeiten, Befehlszeilentools, XML und SQL verwenden mussten, "was mich an die alten DOS-Tage erinnerte". Er erwartet, dass sich der Ansatz der alten Schule im Laufe der Zeit mit zunehmender Akzeptanz ändert.

DaVita verwendet sowohl Cloud-basierte Anwendungsbereitstellungsplattformen als auch gehostete Server, um Data Warehouse- und Business Intelligence-Anwendungen für die Personalabteilung zu entwickeln und bereitzustellen.

Cloud-Entwicklung Gotcha 2: Einige Apps sind nicht ideal für die Entwicklung in der Cloud

Dan Stueck, Vizepräsident für IT bei Faith Educational Ministries, vermeidet beispielsweise die Entwicklung von High-End-Anwendungen in der Cloud, die extreme Datensicherheits- oder behördliche Einschränkungen aufweisen, oder stützt sich auf ältere Codierungsprojekte wie die in Cobol. "Diese beiden werden wahrscheinlich am besten im Haus gehalten", sagt er, "die erste wegen der offensichtlichen Sicherheitsbedenken und die zweite wegen des 'toten' Sprachproblems."

Wenn Stueck die Cloud verwendet hat, wird ein Entwicklungsserver im öffentlichen Cloud-Dienst von Amazon.com ausgeführt und ein Schülerinformationssystem, ein Transkriptionsarchiv für Schüler und eine Anwendung zum Verkauf von Schulbüchern in der Cloud erstellt.

Cloud-Entwicklung Gotcha 3: Entwickler mögen das unbekannte Cloud-Gebiet oft nicht

"Das wahrscheinlich Unerwartetste war, wie gut das gesamte [Cloud-Entwicklungs-] Projekt von den Management- und Verkaufsteams und allen, die das System verwenden, aufgenommen wurde und wie schlecht es von der IT-Organisation und insbesondere von Entwicklern aufgenommen wurde. "sagt Mark Warren, Chefarchitekt bei 20/20.

Die IT-Mitarbeiter waren es gewohnt, mit Microsoft .NET, SQL Server, Java und anderen traditionellen Entwicklungsplattformen zu arbeiten, sagt Warren, und Force.com war ein völlig anderes Modell. "Wenn Sie SQL und Java kennen, ist dies Ihre Toolbox, und Sie werden nicht auf diese völlig fremde Plattform zugreifen wollen, die hereinkommt", sagt Warren.

Infolgedessen wurde die Vertriebsanwendung hauptsächlich von Geschäftsmitarbeitern und nicht von IT-Entwicklern entwickelt. Das brachte laut Warren seine eigenen Herausforderungen mit sich. Die größte Herausforderung war das mangelnde Verständnis der Geschäftsleute für Change Management und IT-Governance. "Die IT verfügt über ein Maß an Disziplin, das Geschäftsleute nicht gewohnt sind, sie durchzusetzen", sagt Warren. "Wir mussten sie in Fragen des Änderungsmanagements auf den neuesten Stand bringen."

Um der Zurückhaltung von Technikern bei der Entwicklung in einer Cloud-Umgebung entgegenzuwirken, gibt es Programme, die die IT implementieren kann, um die interne Einführung von Cloud Computing zu unterstützen, sagt Warren. "Training ist sicherlich eine gute Methode, um zu erleichtern", sagt er. "Sofern die IT-Kultur nicht offen für neue Methoden und Technologien ist, kann eine organisatorische Änderung [neue Entwickler gewinnen] die einzige Option sein."

Cloud-Entwicklung Gotcha 4: Mangelnde Dokumentation behindert Cloud-Entwickler

"Ich würde definitiv erwarten, dass sich dies ändert, wenn die Nachfrage steigt und immer mehr Unternehmen beginnen, das Cloud-Konzept anzupassen", sagt Hensley. "Wir konnten dem entgegenwirken, indem wir mit einem Beratungsunternehmen zusammengearbeitet haben."

Cloud-Entwicklung Gotcha 5: Netzwerkprobleme können private Cloud-Umgebungen gefährden

Embarcadero verwendet sein virtualisiertes Rechenzentrum zum Erstellen und Testen von Anwendungen. "Für interne private Clouds haben wir mehrere Optionen: Auswahl des geplanten Datums / der geplanten Uhrzeit und Bereitstellung der Server, die in einer bestimmten Reihenfolge ausgeführt werden", sagt Intersimone. "Es gibt automatisierte Build- und automatisierte Rauchtestprozesse, die ständig in unserer privaten Haupt-Cloud und auch in regionalen Entwicklungsbüros ausgeführt werden."

Um eine verfügbarere Umgebung zu erhalten, prüft Intersimone einen Cloud-Container und ein virtuelles privates Netzwerk von CohesiveFT, die in öffentlichen und privaten Clouds installiert werden können, um On-Demand-Skalierung, Failover, Disaster Recovery und Disaster Readiness bereitzustellen.

Andere Probleme, die sich auf die Entwicklung und das Testen auswirken können, sind Netzwerkverzögerungen und -latenz sowie die Größe der Netzwerkleitungen, insbesondere in bestimmten Teilen der Welt. Embarcadero verfügt über Forschungs- und Entwicklungszentren in Scotts Valley (Kalifornien), Monterey (Kalifornien), Toronto, St. Petersburg (Florida) und Iasi (Rumänien) sowie über kleinere Teams und Einzelpersonen auf der ganzen Welt.

Die geografisch unterschiedliche Entwicklungsumgebung von Embarcadero "erschwert das Synchronisieren von Check-Ins, Builds und automatisierten Tests", so Intersimone. Um einige dieser Probleme zu lösen, führen Entwickler lokale und regionale Builds sowie das Einchecken von Code auf den virtuellen Servern durch, die allen zur Verfügung stehen. Entwickler erstellen lokale Builds auch auf ihren eigenen Computern. Embarcadero stellt mithilfe von Subversion, einem Open-Source-Tool zur Quellcodeverwaltung, sicher, dass diese nicht mit den Master-Versionen in der privaten Cloud nicht synchron sind.

"Wenn ein Build auftritt, wird ein automatisierter Test ausgeführt, um den Build zu validieren", sagt Intersimone. "Dann gehen Benachrichtigungen an alle Entwicklungsteams und der Build wird automatisch über eine chinesische Mauer zu einer großen Anzahl automatisierter virtueller Testmaschinen in unseren Entwicklungszentren gezogen." An dem resultierenden Build werden automatisierte und manuelle Tests durchgeführt, um den Status zu überprüfen. Nach Abschluss dieses Vorgangs werden E-Mails an andere Teammitglieder gesendet. "All dies geschieht kontinuierlich während der Entwicklungsdauer eines Projekts", sagt er.

Cloud-Entwicklung Gotcha 6: Es ist einfach, das Messgerät unnötig in der Cloud laufen zu lassen

Ein weiteres potenzielles Problem ist die Verschwendung von Geld für Cloud-Gebühren. Entwickler können leicht vergessen oder vernachlässigen, virtuelle Maschinen auszuschalten, die sie nicht verwenden. "Ich habe von einigen Kunden gehört, die es Entwicklern ermöglichen, mit Ressourcen für virtuelle Maschinen wild zu werden, dass die Entwickler manchmal einfach Dinge zum Laufen bringen, etwa über ein Wochenende", sagt Knipp von Gartner. "Wenn es sich um einen internen Server mit Kapitalisierung handelte, war dies keine große Sache. Wenn es sich jedoch um nutzungsabhängige, geleaste Ressourcen wie beim öffentlichen Cloud-Computing handelt, ist dies eine Geldverschwendung."

Knipp geht davon aus, dass dies eine neue Herausforderung für Unternehmen sein wird, wenn sie Private Cloud-Initiativen einführen.

Während es kaum ein Risiko gibt, eine große, unerwartete Rechnung für die Nutzung virtueller Entwicklermaschinen in einer privaten Cloud zu erhalten, "kann ein Entwickler in einer privaten IaaS-Self-Service-Umgebung VMs hochfahren und niemals ausschalten", sagt Knipp. "Diese verbrauchen effektiv Ressourcen von Maschinen, die nicht effektiv genutzt werden, und können dazu führen, dass das Unternehmen zu viel Kapazität kauft, wenn die Planung verzerrt wird."

Cloud-Entwicklung Gotcha 7: Cloud-Lizenzen können überraschende Bereitstellungsbeschränkungen enthalten

Zu den nichttechnischen Problemen mit der Cloud, die sich auf die Entwicklung auswirken können, gehören Lizenzbeschränkungen. Vor zwei Jahren entschied sich Kelly Services, eine nationale Zeitarbeitsagentur, für viele ihrer eigenen Anwendungen die Cloud-basierte Entwicklung zu verwenden, wobei die Force.com-Plattform von Salesforce.com als Lieferfahrzeug fungierte.

Die Cloud-Entwicklung hat Vorteile wie eine schnellere Bearbeitungszeit für die App-Entwicklung und niedrigere Kosten gebracht, sagt Joe Drouin, CIO bei Kelly Services. Das Unternehmen stieß jedoch auch auf einige unerwartete Probleme bei der Lizenzierung, insbesondere hinsichtlich der Art der Benutzersitze und der damit verbundenen Einschränkungen. Beispielsweise kann ein Sitz eine festgelegte Anzahl von Objekten haben, auf die ein Benutzer zugreifen kann. Infolgedessen "waren wir an einigen Stellen überrascht, was wir mit der Entwicklung tun oder nicht tun konnten", sagt Drouin.

Cloud-Entwicklung Gotcha 8: Die Integration kann schwieriger zu beheben sein