Cloud-Native-Anwendungen sind Anwendungen, die für den Betrieb in der Cloud entwickelt wurden. Häufig kommt hierbei eine (micro)service-orientierte Architektur zum Einsatz und nicht selten wird die Applikation in Container gepackt. Ein weiteres typisches Merkmal ist der Einsatz von Continuous Software Delivery. Es kommt vor, dass Entwicklungsteams die Verantwortung für Entwicklung und Betrieb tragen.
Die Wahl des richtigen Cloudproviders ist nicht ganz einfach, denn es gilt eine Reihe von Fragen zu beantworten:
Gibt es Anforderungen bezüglich des Rechenzentrumsstandorts (z.B. Datenhaltung in Deutschland)?
Wird eine globale Infrastruktur benötigt (internationales Geschäft)?
Inwieweit kann ich die Provisionierung von Ressourcen automatisieren?
Wie geeignet ist das Cloud-Angebot für Cloud-Native-Anwendungen?
Welche Plattform-Services werden geboten, die für das Vorhaben interessant sind?
Welche Kosten entstehen durch den Betrieb der Anwendung in der Cloud?
Neben diesen Fragestellungen lohnt es sich auch zu betrachten inwieweit man auf sich allein gestellt ist und welche Möglichkeiten es gibt, den Einstieg leichter zu gestalten. Daher lohnt es sich zu prüfen wie hilfreich die Dokumentation des Angebots ist und welche weitergehenden Ressourcen für Entwickler (Whitepapers, Best Practices, etc.) verfügbar sind.
Darüberhinaus macht es Sinn zu schauen, ob es eine lebendige Community, wie zum Beispiel Meetup, gibt und wie diese organisiert ist. Denn ein Austausch mit anderen Anwendern kann eine wertvolle Hilfe darstellen. Ebenso sollte man die Frage nach den Support-Angeboten des Anbieters (z.B. Zugriff auf Solution Architects) und der Verfügbarkeit von externen Dienstleistern/Beratern betrachten, um sicherzustellen, dass man - falls benötigt - Unterstützung bekommen kann.
Eine allgemeingültige Antwort, welcher Anbieter der geeignetste ist, gibt es nicht. Je nachdem welche konkreten Anforderungen man hat und wie stark man auf Plattform-Services setzen möchte, fällt die Antwort anders aus. Wenn man beispielsweise einen Use Case mit Bilderkennung abbilden möchte, kann es Sinn machen auf einen passenden Plattform-Service zurückzugreifen und so Zeit und Entwicklungskosten zu sparen. Je nach Wichtigkeit kann das die Entscheidung für den einen oder anderen Cloudanbieter maßgeblich beeinflussen.
Optionen der Cloud-Plattform-Auswahl
Im Folgenden sollen kurz einige Optionen für die Anbieterwahl vorgestellt werden - ein Anspruch auf Vollständigkeit wird hierbei in keinster Weise erhoben. Neben den in Deutschland etablierten großen Namen aus den USA, befinden sich mit AliCloud und der Open Telekom Cloud zwei Newcomer, die relativ neu auf dem Deutschen Markt eine Cloud-Lösung anbieten, darunter.
Die Anbieter unterscheiden sich teils deutlich hinsichtlich der geografischen Ausdehnung der Infrastruktur, Größe und der Angebotsvielfalt (Platform Services), die über klassisches Infrastructure-as-a-Service (IaaS) hinausgeht. Auch ist das Mind-Set, mit dem das Cloud-Angebot aufgesetzt wurde, teils stark unterschiedlich, was sich bei intensiverer Beschäftigung mit den Anbietern zeigt. Das ist auch verständlich, denn alle Anbieter haben eine Historie in deren Verlauf sich das Cloud-Angebot entwickelt hat. Gerade die Historie der Unternehmen und der Challenges die man selbst in der Vergangenheit lösen musste, spiegeln sich in den Cloud-Angeboten wieder.
AliCloud | Amazon Web Services | Google Cloud Plattform | IBM Cloud | Microsoft Azure | Open Telekom Cloud | |
---|---|---|---|---|---|---|
Herkunft | China | USA | USA | USA | USA | Deutschland |
Infrastruktur | global | global | global | global | global | Deutschland |
Rechenzentrum in | Ja | Ja | Für 2017 angekündigt | Ja | Ja | Ja |
Anzahl Plattform | mittel | hoch | hoch | hoch | hoch | niedrig |
Das größte Angebot an Plattform-Services haben AWS, Google, Microsoft und IBM, welches auch die Anbieter sind, die eine globale Infrastruktur haben. Die Telekom kommt eher für den Einsatz in Europa infrage und Alibaba wird spannend, wenn man Infrastruktur in Asien benötigt. Als Besonderheit kann die AliCloud einen Rechenzentrumsstandort im Nahen Osten aufweisen. Globale Infrastruktur ist ein dehnbarer Begriff, daher macht es Sinn, bei der Auswahl genauer hinzuschauen, wie die Standorte der Rechenzentren auf dem Globus verteilt sind.
Eignung für Cloud-Native Applikationen und digitale Workloads
Cloud-Native-Anwendungen sind ganz allgemein Anwendungen, die gezielt für den Einsatz in der Cloud entwickelt werden. Das kann man auf unterschiedliche Weise tun. Häufig wird allerdings als Gemeinsamkeit einem service-orientierten Ansatz gefolgt. Hierbei werden Funktionalitäten in Services gekapselt, über die typischerweise mittels REST-API kommuniziert wird. Für ein einfaches Setup und leichten Betrieb kann man auf Plattform-as-a-Service (PaaS) Angebote zurückgreifen.
Sind die Services betont klein gehalten, spricht man von Microservice-Architekturen, wo die einzelnen Services gerne in Container gepackt werden. Wachsender Popularität erfreut sich auch “Function-as-a-Service” (FaaS), wo kleinste Code-Snippets als Funktionen implementiert und deployed werden. Hierbei spricht man von Serverless Computing, wenn ein Cloud Service genutzt wird, der Provisionierung und Management der Infrastruktur weg abstrahiert. Function-as-a-Service kommt häufig bei Event-Driven Architekturen zum Einsatz. Grundsätzlich kann man die populären Betriebsmodelle nach Belieben zusammenmixen und auch Plattform-Services und externe APIs mit einbeziehen.
Im Extremfall gibt es dann auch Services mit wenig eigener Logik, deren Zweck sich eher darauf beschränkt, APIs miteinander zu verbinden. Man spricht dann auch etwas scherzhaft von API-Plumbing. Das ist dann das, was früher Glue Code war, nur in der verteilten Service Welt.
AliCloud | Amazon Web | Google Plattform | IBM Cloud | Microsoft | Open | |
---|---|---|---|---|---|---|
Plattform-as-a-Service | Nein | Ja | Ja | Ja | Ja | Nein |
Docker-Cluster Eigenbetrieb | Möglich | Möglich | Möglich | Möglich | Möglich | Möglich |
Docker Management Service | Ja | Ja | Ja | Ja | Ja | Ja |
Function-as-a-Service | Möglich | Möglich | Möglich | Möglich | Möglich | Möglich |
Serverless Angebot | Nein | Ja | Ja | Ja | Ja | Nein |
Bei allen betrachteten Anbietern kann man sein Docker-Cluster selbst managen, während alle Anbieter zudem eine mehr oder weniger brauchbare Option anbieten, mit wenig Aufwand ein Cluster zum Laufen zu bekommen. PaaS-Angebote finden sich ebenso bei den bekannten US-Anbietern wie FaaS/Serverless-Angebote. Bei den anderen beiden Anbietern muss man sich entsprechend selbst darum kümmern, etwas Vergleichbares zu betreiben.
Häufige Building Blocks in Cloud-Native-Applikationen zum Speichern von Daten sind unter anderem ein Object Storage sowie Relationale oder NoSQL Datenbanken. Messaging ist in verteilten System ein ganz wichtiges Thema. Für das Bereitstellen von APIs kommen gerne Management Lösungen wie API Gateways zum Einsatz, über die sich idealerweise Authentifizierung und Monitoring sauber abbilden lassen. In der Tabelle wird die Verfügbarkeit dieser wichtigen Kernkomponenten als gemanagter Service, bei dem die Verantwortung für den Betrieb ausgelagert ist, pro Anbieter aufgetragen. Je nach persönlicher Präferenz bezüglich eines Vendor-Lock-In wird man auf derartige Services setzen oder darauf verzichten.
AliCloud | Amazon Web Services | Google Cloud Plattform | IBM Cloud | Microsoft Azure | Open Telekom Cloud | |
---|---|---|---|---|---|---|
Object Storage | Ja | Ja | Ja | Ja | Ja | Ja |
Relational Database | Ja | Ja | Ja | Ja | Ja | Ja |
NoSQL Database | Ja | Ja | Ja | Ja | Ja | Nein |
Messaging | Ja | Ja | Ja | Ja | Ja | Ja |
API Gateway | Nein | Ja | Ja | Ja | Ja | Nein |
Cloud-Native-Anwendungen können grundsätzlich auf allen Clouds betrieben werden. Der Unterschied liegt im Aufwand für Setup und Betrieb. Das betrifft sowohl die Environments für die Anwendungen, als auch die Basis Building-Blocks wie Queue-Services und Managed Databases bis hin zu umfangreicheren Mobile- oder IoT-Backend-Lösungen, die einem zur Verfügung stehen.
Zudem lohnt sich ein Blick auf die Entwicklertools und Angebote für Continuous Delivery sowie die APIs zur Provisionierung von Ressourcen bei der Wahl des passenden Anbieters.
Einstieg in die Cloud und Startup Programme
Der Einstieg geht bei allen Anbietern am einfachsten, wenn man eine Kreditkarte zur Hand hat. Die Open Telekom Cloud bietet standardmäßig auch die Zahlung per Lastschriftverfahren an, während man bei den anderen Anbietern nur in bestimmten Fällen und mit zusätzlichem Aufwand andere Zahlungsmittel als die Kreditkarte nutzen kann.
AliCloud | Amazon Web Services | Google Cloud Plattform | IBM Cloud | Microsoft Azure | Open Telekom Cloud | |
---|---|---|---|---|---|---|
Kreditkarte | Ja | Ja | Ja (pre-paid Karten explizit ausgeschlossen) | Ja | Ja | Ja |
Paypal | nur für pre-paid Produkte | Nein | Nein | Nein | Nein | Ja |
Zahlen auf Rechnung/ | Nein | In Einzelfällen auf Anfrage | In Einzelfällen auf Anfrage | Möglich | Ja, ab einer gewissen Größe (Enterprise Agreement) | Lastschriftverfahren oder Zahlung per Telekom Festnetzrechnung möglich |
Die Anbieter bieten teilweise ein kostenfreies Nutzungskontingent an. Auch wenn manche Anbieter zwar das Anlegen eines Accounts ohne Kreditkarte erlauben, so sind die Gratisressourcen doch begrenzt und eher nur für Experimente mit überschaubarer Größe ausreichend. Allerdings stehen die freien Ressourcen auch nach Hinterlegung der Kreditkarten zur Verfügung. Die Anbieter garantieren in der Regel nicht, dass die Gratisressourcen unbegrenzt so dimensioniert bleiben.
AliCloud | Bei Registrierung kann man Guthaben für verschiedene Services per Gutschein bekommen |
---|---|
Amazon Web Services | Pro Service begrenzte Ressourcennutzung gratis für 12 Monate oder dauerhaft |
Google Cloud Plattform | $300 Startguthaben + Pro Service begrenzte Ressourcennutzung dauerhaft gratis |
IBM Cloud | Begrenzte Ressourcen gratis für 30 Tage |
Microsoft Azure | 170€ Startguthaben + Pro Service begrenzte Ressourcennutzung dauerhaft gratis |
Open Telekom Cloud | 250€ Startguthaben |
Für Startups gibt es zusätzlich zu den freien Nutzungskontingenten spezielle Programme, für die man sich bewerben kann. Als grobe Orientierung was bei den Anbietern als Startup gilt: Unternehmen deren Gründung nicht länger als fünf Jahre her ist. Ein gängiges Modell der Cloud-Anbieter ist es, Startups mit zeitlich begrenztem Guthaben für Cloud-Ressourcen auszustatten und grundlegenden Support zu bieten.
AliCloud | $2.000-$50.000 Guthaben für 2 Jahre Support durch Solution Architects |
---|---|
Amazon Web Services | Portofolio Package |
Google Cloud Plattform | Spark Package |
IBM Cloud | $1.000 oder bis zu $10.000 Guthaben |
Microsoft Azure | BizSpark |
Open Telekom Cloud | 100.000€ Guthaben für 1 Jahr |
Für alle Programme muss man sich bewerben, dann wird eine individuelle Entscheidung seitens des Anbieters getroffen. Außer für Microsofts “BizSpark” und Telekoms “TechBoost” Programm wird eine Verbindung zu speziellen Startup-Institutionen wie Acceleratoren, Inkubatoren oder Investoren vorausgesetzt. Wie man sieht, kann sich der Aufwand für die Bewerbung allerdings lohnen.
Zusammenfassung & Empfehlungen
Die Wahl des richtigen Cloud-Anbieters ist eine sehr individuelle Entscheidung, die von vielen Parametern abhängt. Wer die Entscheidung sorgfältig trifft, kann sich Vorteile in Bezug auf Entwicklungsgeschwindigkeit, Agilität und Betriebskosten verschaffen. Eine ungünstige Wahl kann den gegenteiligen Effekt haben und muss später unter Umständen teuer repariert werden. Daher sollen hier noch ein paar Empfehlungen folgen:
Eine intensive Auseinandersetzung mit der Cloud-Anbieterwahl, insbesondere mit den eigenen Ansprüchen ist wichtig.
Eine Auseinandersetzung, ob Platform Services oder nur Infrastructure Services genutzt werden sollen, und wenn, in welchem Umfang, sollte frühzeitig passieren.
Damit Vorhaben für Cloud-Native-Anwendungen erfolgreich werden können, müssen neben der technischen Expertise auch eine passende Unternehmenskultur und Organisation vorhanden sein (DevOps, Innovations- und Startup-Kultur).
Ein hohes Kostenbewusstsein ist unerlässlich. Während des Systementwurfs sollten immer auch die späteren Betriebskosten berücksichtigt werden. Zudem sollte man die Kosten monitoren.
Es ist ratsam sich frühzeitig darum zu kümmern, wer einen unterstützen kann, vor allem wenn bisher wenig eigene Erfahrungen mit dem Thema vorhanden sind.