Limitationen beim Cloud Computing

Cloud Computing erregt immer mehr Aufmerksamkeit bei den Entscheidern großer Firmen. Ständige Erreichbarkeit aus allen Teilen der Welt und eine Kostenersparnis durch den unnötig gewordenen Betrieb von Rechenzentren sind nur einige Argumente für Cloud Computing und „Platform as a Service“ im Besonderen. Die Nutzung von PAAS-Anbietern hat in der Anwendungsentwicklung seine Tücken. Anbieter wie Force.com, Google App Engine, Windows Azure und Amazon WS reglementieren sowohl den Speicherverbrauch als auch die Rechenleistung bei der Programmierung in der Cloud Plattform. Auf diese Limitationen in der Cloud Plattform möchte ich eingehen und erklären,

    - warum es sie gibt, 
    - warum sie nützlich sind und
    - welche Limitationen existieren.
 

Cloud Computing und PAAS – ein Überblick

Cloud Computing bedeutet, dass „Software und Daten […] nicht mehr lokal bearbeitet bzw. gespeichert [werden] (z.B. auf einem Tischrechner), sondern auf einer externen Infrastruktur. Grundprinzip ist das [„virtuelle“] Auslagern von Software- oder sogar Hardwarefunktionen der Anwender, so dass in vielen Fällen gar nicht mehr genau feststellbar ist, wo sich die ausgelagerten Informationen oder Anwendungen ‚in der Wolke‘ befinden.“ (Wissenschaftliche Dienste, Deutscher Bundestag, 2012) Cloud Computing Angebote lassen sich in drei Kategorien einteilen:

  • Infrastructure as a Service - IAAS: Bereitstellung von Infrastructure z.B. Online Speicher in der Cloud
  • Platform as a Service – PAAS: Bereitstellung einer Entwicklungsplattform zur Entwicklung eigener Anwendungen
  • Software as a Service – SAAS: Nutzung von Cloud-Applikationen

Kompromisse – der Grund für Limiationen

Ich möchte PAAS-Angebote genauer beschreiben. Viele unterschiedliche Nutzer greifen hierbei auf dieselbe Plattform zu. Die Cloud-Plattform besteht aus vielen Rechnern, die die auflaufenden Requests verarbeiten müssen. Die Requests aller Nutzer werden auf diese Rechner im Warteschlangenmodus verteil. Rechenintensive oder zeitintensive Anfragen binden entsprechend viele Ressourcen und blockieren so die Ausführung von Requests anderer Nutzer. Folglich verzögert sich die Ausführung dieser anderen Anfragen in der Warteschlange. Zyklen im Code, der in der Cloud ausgeführt werden soll, könnten somit die Wolke lahmlegen und ein „Gewitter“ heraufbeschwören.
Die Einhaltung von Regeln bei der Entwicklung eigener Anwendungen auf der Cloud-Plattform ermöglicht es, die Rechenzeit einigermaßen vorherzusehen. Die Regeln oder Limits müssen einen Kompromiss zwischen Rechenleistung und möglichst geringer Wartezeit für andere Jobs aus der Warteschlange darstellen. Die aufgestellten Limits dürfen einerseits nicht zu locker sein, andererseits aber die Entwicklung nicht zu stark reglementieren.

Limitationen der verschiedenen PAAS-Anbieter

Im Folgenden stelle ich eine Übersicht der Limitationen zweier PAAS-Anbieter gegenüber. Wie die Tabelle zeigt, sind vor allem Datenbankzugriffe und die Datenbankgröße beschränkt. Die Beschränkung der Speicherkapazität kann aber meist gegen einen Aufpreis aufgeweicht werden. Die Begrenzung der Datenbankqueries zwingt uns hingegen unseren Code gründlich zu designen und vorauszudenken. Bei der Salesforce-Entwicklung mit Apex versucht man z.B. alle Methoden, die Zugriff auf den Datenbestand benötigen, „BULK“-fähig zu machen also mehrere Queries zu einem zusammenzufassen. Die Tabelle zeigt auch, dass ausgehende und eingehende Nachrichten begrenzt werden. Dieser Umstand macht die Implementierung von Schnittstellen zwischen der Cloud und anderen Systemen im Firmennetz komplexer und kann eine Änderung der Architektur nötig machen.

Obwohl die Anwendungsentwicklung auf Cloudplattformen die Komplexität in die Höhe treibt, sind die Vorteile für die Geschäftsführer dieser Welt nicht von der Hand zu weisen. Und seien wir mal ehrlich, als Entwickler freuen wir uns doch, wenn wir vor Herausforderungen gestellt werden - zumindest, wenn wir die Probleme irgendwann auch lösen können.