Plattformfreigaben in Zeiten von Cloud Computing
Tags: AWS, cloud computing, Docker, web20
Kategorie Software Engineering | 2 Kommentare »
Ein wesentlicher Wettbewerbsvorteil von reinen Software as a Service Anbietern (also Softwareanbietern, deren Produkt man nicht installieren sondern nur online nutzen kann) ist es, dass sie ihre Software nur für genau eine Plattform testen und warten müssen. Geschäftsanwendungen hingegen werden immer noch meist direkt beim Kunden installiert und man muss sie deshalb für alle gängigen Plattformen freigeben. Muss man?
Auch heute noch wollen viele Firmen ihre Software im eigenen Rechenzentrum installieren. Im Cloud Computing gibt es noch zu viele rechtliche Unklarheiten, als dass man bedenkenlos alles in die Wolke schieben kann. So verlangt zum Beispiel das Bundesdatenschutzgesetz einen besonders sensiblen Umgang der Mitarbeiterdaten. Ob das in der Wolke gewährleistet ist?
Deshalb werden auch heute noch viele Geschäftsanwendungen für mögliche Plattformen (Kombinationen aus Betriebssystemen plus benötigter Infrastruktur) explizit freigegeben. Ein kurzer Blick auf die von MySQL unterstützten Plattformen zeigt, dass das eine Menge Arbeit sein kann. Häufig dauert es deshalb Jahre, bis eine neue Betriebssystem- oder Datenbankgeneration von einer Software offiziell unterstützt wird. An den offiziellen Freigaben hängen auch die Qualitätsgarantien. Betrieb auf einer nicht freigegebenen Plattform heißt meist keine oder nur eingeschränkte Garantie.
Wie schön wäre es da, wenn man als Softwareanbieter auf die Freigabe von Plattformen verzichten könnte! Man könnte dadurch erhebliche Entwicklungskapazitäten für die strategische Weiterentwicklung des Produkts freimachen. Andererseits fragen Kunden auch heute noch in den ersten Vertriebsgesprächen die unterstützten Plattformen ab. Wird die auf Kundenseite präferierte Plattform nicht unterstützt, ist man meist schnell aus dem Rennen.
Schon vor ein paar Jahren hatte ich mich gefragt, ob nicht der Ausweg aus diesem Dilemma die Virtualisierung ist? Inzwischen glaube ich, dass dies mittelfristig die einzig vernünftige Lösung ist, will man gegen reine Cloud Anbieter bestehen! Doch was meine ich mit Virtualisierung?
Eine Software benötigt zum Betrieb ein Betriebssystem wie Windows oder Linux plus Infrastruktur wie Oracle Datenbank oder JBoss Applikationsserver. Heute kommen meist noch zusätzliche Komponenten wie verteilte Cachinglösungen und Load Balancer hinzu. Alle diese Komponenten würde ich in einem Image für eine virtuelle Maschine wie VMware oder VirtualBox bündeln und meine Software für nur genau diese Umgebung freigeben. Als Konsequenz erhält der Kunde nicht direkt die Software, sondern immer die fertige Umgebung in Form einer virtuellen Maschine. Diese virtuelle Maschine betreibt er dann auf einem VMware Cluster.
Die Vorteile dieses Vorgehens liegen klar auf der Hand:
- Man muss die eigene Software für genau eine Umgebung freigeben.
- Man kann diese Umgebung den Bedürfnissen der eigenen Anwendung anpassen.
- Jeder Entwickler erhält automatisiert die aktuelle Umgebung für seine tägliche Arbeit. Es wird dadurch immer in der späteren Laufzeitumgebung getestet und Fehler frühzeitig erkannt.
- Eine Vielzahl von Fehlerquellen wird ausgeschlossen (etwa unterschiedliche Patchlevel bei Betriebssystemen), was die Supportkosten senkt.
- Die gewonnen Kapazitäten können in die Weiterentwicklung gesteckt werden.
- Die Anwendung wird im Netz/Rechenzentrum des Kunden betrieben, was viele rechtliche Probleme des Cloud Computing vermeidet.
- Die Resourcen einer virtuellen Maschine können relativ einfach an die aktuelle Nutzung angepasst werden.
- …
Natürlich ist die Realisierung dieses Ansatzes nicht trivial. So muss zum Beispiel umfangreiches Wissen im Bereich Betriebssystem und Infrastruktur aufgebaut werden, um die eigene Umgebung aufzusetzen, zu pflegen und zu optimieren. Auch wird man sich einen cleveren Mechanismus überlegen müssen, wie der Kunde zum Beispiel mehrere Instanzen der eigenen Software betreiben kann, falls eine virtuelle Maschine die Last nicht bewältigen kann. Diese Instanzen müssen sich gegenseitig finden, um zum Beispiel die Daten zu verteilen. Und mit Sicherheit wird beim Kunden die Frage nach Datensicherung aufkommen, denn auch die gewählte Datenbank wäre Teil der Umgebung (oder einer zusätzlichen Datenumgebung).
Trotzdem glaube ich, dass das ein vielversprechender Ansatz ist. Kennt jemand schon Beispiele von Geschäftsanwendungen, die nur als virtuelle Maschinen ausgeliefert werden? Spontan fällt mir da der Marktplatz für Dienste aufbauend auf Amazon Web Services ein. Neben den üblichen OpenSource Anwendungen wie WordPress kann man dort zum Beispiel auch SAP HANA Instanzen direkt mieten.
Als Entwickler würde ich das begrüßen. Probleme sehe ich bei Toolketten, wo mehrere Programme von verschiedenen Firmen miteinander interagieren. Gut, die könnten sich VM-übergreifend via WebServices unterhalten :-).
Aber das ganze ist doch nur ein Hinweis darauf, dass der Gesetzgeber nicht seiner Normierungspflicht nachkommt. Der sollte endlich ein Betriebsystem für alle festschreiben, dann gäbe es diese Probleme garnicht ;-)
EU, fällt eindeutig in den Kompetenzbereich der EU :-)