PaaS evaluieren

von Christoph Huber

Im letzten Blogpost habe ich den Begriff “Platform as a Service” (PaaS) eingeführt und diskutiert, warum eine solche Plattform für Eigenentwicklungen Sinn macht. Eine PaaS hat zum Ziel, aus dem Source Code möglichst schnell eine produktive Applikation zu generieren, inklusive Routing, Load Balancing und der Möglichkeit, die Applikationsinstanzen bei Bedarf auf Mausklick zu skalieren. Der hohe Abstraktionsgrad und die homogene Systemlandschaft einer solchen Plattform vereinfacht die Verwaltung der Infrastruktur und lässt transparente Preisberechnungen für Laufzeiten zu.

Bevor nun einzelne PaaS Lösungen vorgestellt und verglichen werden, möchte ich zunächst diskutieren, auf Grund welcher Entscheidungsgrundlagen eine PaaS Lösung evaluiert und mit anderen verglichen werden kann. Insbesondere sollten Sie herausfinden können, welche Merkmale einer PaaS für Sie entscheidend sind, denn die Merkmale unterscheiden sich je nach Zielsetzung und Geschäftsmodell.

Um diesen und die nachfolgenden Beiträge verständlich zu machen, starte ich mit einer Übersicht der ambivalenten Verwendungen des Begriffs “Service”. Danach wird gezeigt, was die Vorteile von Open Source Technologien sind, und wie der oder die Standorte der Plattform und deren Abhängigkeiten zu beachten sind. Danach wenden wir uns dem Einfluss einer Plattform auf die Entwicklungsprozesse und eingesetzten Technologien in der Entwicklung zu, bevor zum Schluss mögliche Preismodelle einer PaaS diskutiert werden.

Plattform- und Persistenzservices

“Service” ist einer dieser überladenen Begriffe in der Informatik, der für fast alles stehen kann. In dieser Serie kann “Service” folgendes bedeuten:

  • PaaS selber ist eine Sammlung von Services, die wir Plattform Services nennen wollen.
  • Die Applikationen, die entwickelt und in der PaaS installiert werden, können wiederum Services für andere Applikationen sein. Der Einfachheit halber nennen wir diese deshalb strikt nur Applikationen.
  • Und dann gibt es noch Services, welche unsere Applikationen beziehen, damit sie überhaupt funktionieren können. Dies sind meist Datenbank-, Cache- oder Messaging-Services. Diese werden wir nachfolgend Persistenzservices nennen, obwohl diese auch andere Aufgaben als nur Persistierung übernehmen können.

Open Source Technologien

Im PaaS Bereich sind die wichtigsten Open Source Technologien Cloud Foundry und OpenShift. Im Gegensatz zu den proprietären Angeboten von Google oder Amazon, werden diese Technologien von verschiedenen Anbietern weiterentwickelt und angeboten. Man verpflichtet sich also nur der Technologie und bleibt unabhängig von einem einzelnen Anbieter und seinem proprietären Produkt.

On-premise Plattformen

Ich habe die Erfahrung gemacht, dass grosse Unternehmen eine Plattform selber on-premise betreiben wollen, was mit Open Source Technologien möglich ist. Sie tun dies, um die Kontrolle über die gesamte Infrastruktur, Datenhaltung und Konfigurationen zu behalten, was meist mit Security und Business Continuity begründet wird. Solche Begründungen sind kritisch zu untersuchen, da PaaS Betreiber genau in diesen Bereichen spezialisiert sind. Der Betrieb einer solchen Plattform ist komplex und benötigt ein erfahrenes DevOps Team. Ein klassischer Betrieb, welcher sich gewohnt ist, physische und virtuelle Maschinen sowie Netzwerkkonfiguration manuell zu verwalten, benötigt eine aufwändige Transformation, bis eine PaaS betrieben werden kann.

Portabilität

Mit Portabilität meine ich die Möglichkeit, bestehende Applikationen von einer Plattform auf eine andere zu migrieren. Neben dem Open Source Kriterium hängt die Portabilität auch von den eingesetzten Frameworks in den zu portierenden Applikationen ab. Es gibt Frameworks wie Spring Cloud, welche eine Abstraktion anbieten, so dass eine Applikation auf mehreren PaaS Lösungen funktionieren kann, ohne dass Code angepasst werden muss. So kann die Portabilität schon in der Entwicklung verbessert werden.

Ein wichtiges Merkmal der Portabilität sind auch die angebotenen Persistenzservices. Ein Wechsel zwischen Plattformen, welche unterschiedliche relationale Datenbanken anbieten, kann dazu führen, dass sämtliche SQL Abfragen untersucht und umgeschrieben werden müssen. Auch dies ist ein Beispiel, bei dem eine Abstrahierung, beispielsweise durch ORM Mapping, hilft. Ebenso helfen automatische Tests, welche Kompatibilitätsprobleme mit der neuen Datenbank schnell und ohne Aufwand aufdecken.

Lokalität

Werden Cloud Services eingesetzt, ist immer die Frage, wo die Services betrieben werden. Ist dies an einem Ort, der weit weg von den meisten Benutzern ist, dürfte die Performanz der Webapplikation auf Grund der Latenz leiden. Ebenso gilt es sicherzustellen, dass Gesetze und Standards erfüllt werden. In diesem Artikel werden wir nur Services behandeln, die entweder innerhalb Europa oder kompatibel zu EU Richtlinien betrieben werden (wie Amazon EC2 und Google).

Es ist wichtig, dass die Persistenzservices nahe bei den Applikationen liegen. Gibt es eine grosse Latenz zwischen Applikation und Datenbankservice, kann eine normale Applikation gar nicht performant laufen. Dies gilt es zu beachten, wenn PaaS mit externen Services kombiniert wird.

Unterstützte Technologien

Eine PaaS bietet nicht nur eine Laufzeitumgebung an, sondern eine Vielzahl von Kombinationen an, bestehend aus

  • Betriebssystemen
  • Programmiersprachen
  • Buildumgebungen
  • Webserver
  • Konfigurationsmöglichkeiten
  • Frameworks

Sie sollten also sicherstellen, dass ihr PaaS alles zur Verfügung stellt, was ihre Applikationen benötigen.

Prozesse

Die Entwicklungs- und vor allem Deploymentprozesse unterscheiden sich je nach Plattform. Für alle hier vorgestellten Plattformen gibt es gute Integrationen in gängige Entwicklungsumgebungen, auch Debugging und Monitoring Möglichkeiten sind bei allen ähnlich gut. Um den Deploymentprozess je nach Technologie aufzuzeigen, habe ich eine kleine Testapplikation entwickelt, die auf jedem PaaS installiert wurde. Untenstehend sind die Technologien meiner App und deren benötigten Persistenzservices dargestellt.

Architektur der Testapplikation
Architektur der Testapplikation

Preismodell

Jedes PaaS hat ein anderes Preismodell, was einen Vergleich der Kosten schwierig macht. Bei der Evaluierung sollten realistische Anforderungen an die Anzahl von Applikationsinstanzen, Memory und Persistenzservices geschätzt werden, so dass ein Preis so gut es geht, ausgerechnet werden kann. Ebenfalls evaluiert werden sollte das Modell selber. Setzt man auf Microservices, ist es wichtig, dass nicht die Anzahl Applikationsinstanzen, sondern die insgesamt benötigten Ressourcen verrechnet werden. Die grösseren Plattformen bieten Preisrechner an, mit deren Hilfe eine Kostenschätzung schnell gemacht ist.

PaaS Lösungen

Nachdem die Kriterien festgelegt wurden, nach denen einzelne PaaS evaluiert werden sollen, werden im nächsten Blog die Plattformen Cloud Foundry, OpenShift, Google App Engine und Heroku vorgestellt. Diese können zum Schluss verglichen werden, so dass Sie schon Lösungen ausschliessen können, ohne diese vorher evaluieren zu müssen.

Falls Sie bereits jetzt Fragen zu PaaS haben oder Unterstützung dazu brauchen, können Sie sich gerne bei mir melden.

Eine Antwort auf „PaaS evaluieren“

Kommentar verfassen