Die Cloud: Eine Komponentenbibliothek

Continuous Architecture Eberhard Wolff  –  0 Kommentare

Softwareentwicklung ist risikoreich und langsam. Wiederverwendung könnte diese
Probleme lösen. In der Praxis ist Code-Wiederverwendung aber problematisch. Hilft hier die Cloud?

Software aus Komponenten zusammenzustellen, ist eine sehr alte Idee. Leider sind die Erfolge sehr begrenzt. Generische Abstraktionen zu finden, ist alles andere als einfach. Das gilt vor allem für fachliche Abstraktionen.

Für die erfolgreiche Wiederverwendung technischer Artefakte sind Open-Source-Bibliotheken ein gutes Beispiel. Aber es gibt Ähnliches auch an einer ganz anderen Stelle: der Cloud. Ein mittlerweile altes Beispiel ist Instagram. Mit lediglich drei Entwicklern ein System zum Austausch von Fotos für 14 Millionen Benutzer und hunderte Millionen Fotos zu entwickeln, erscheint eigentlich unmöglich. Aber in der Amazon-Cloud gibt es alle wesentlichen Bestandteile schlüsselfertig zur Miete: Dienste um Fotos zu speichern, ein Content Delivery Network für die Bereitstellung weiterer Web-Ressourcen und verschiedene Rechenzentren in der gesamten Welt.

Mittlerweile bieten die Cloud-Hersteller eine unglaubliche Vielzahl von Services an: Datenbanken, Application Server, Big-Data-Werkzeuge, Data Warehouses, API Gateways, E-Mail, Suchserver, Workflows, Firewalls, Machine Learning – alles steht bereit. Dazu kommen noch Angebote anderer Hersteller, die ebenfalls beispielsweise Datenbanken oder andere Dienste in den Clouds zur Verfügung stellen.

Kostenreduktion ist nicht das Ziel

Statt den Fokus auf die Nutzung der Komponenten zu richten, wird die Cloud oft als Möglichkeit zur Kostenreduktion gesehen. Selbst Cloud-Anbieter sehen Kostenreduktion aber nicht als Ziel. Als Amazon in eine Cloud investiert hat, war ihr Aufbau alles andere als günstig. Amazon musste die gesamte Software selbst entwickeln. Das Unternehmen fokussiert stets auf Wachstum – und nicht auf Kosten oder Profit. Die Cloud war von Anfang an ein Werkzeug dafür. Dank ihr konnten sich die Entwickler um Features kümmern. Die Cloud als skalierbare Infrastruktur und immer mehr Services nehmen ihnen dabei die Arbeit ab

Das ist heute übrigens nicht anders. Kosten sind kein gutes Argument für die Cloud. Vergleichen Sie gerne die Kosten eines Rechners bei einem Hoster mit denen von virtuellen Rechnern in einer Cloud. Das ist aber eine Milchmädchenrechnung. Denn in der Cloud lassen sich die Rechner vollautomatisch neu starten, es gibt bereits ein umfangreiches Monitoring und mit den weiteren Diensten kann eine global verteilte, hochverfügbare Infrastruktur aufgebaut werden.

Wenn die Cloud also eigentlich Komponenten anbietet, dann erzielt man die besten Ergebnisse, wenn man die Möglichkeiten dieser Komponenten tatsächlich ausnutzt. Auf Knopfdruck eine Datenbank zu bekommen, die sofort verfügbar ist, skaliert werden kann und bei der Monitoring und Backups schon eingebaut ist, kann ein Projekt deutlich beschleunigen. Wenn man diese Dienste wegen der Angst vor einem Lock-in nicht nutzt, verzichtet man auf den entscheidenden Vorteil der Cloud für Softwareprojekte. Das Lock-in lässt sich auch abmildern, wenn man Dienste nutzt, die auch außerhalb der Cloud oder in anderen Clouds verfügbar sind – also beispielsweise eine MySQL- oder Oracle-Datenbank.

tl;dr

Die Cloud ist eine Sammlung von technischen Komponenten. Sie kann die Umsetzung von Projekten entscheidend beschleunigen. Auf diesen Vorteil sollte man nicht verzichten – selbst wenn es einen gewissen Lock-in bedeutet.

PS: Danke an die innoQ-Kollegen Andreas Krüger und Michael Vitz für die Diskussion über eine frühe Version des Blog-Posts!