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.
- Amazon Web Services
Forrester attestiert AWS ein marktführendes Portfolio an Cloud-Services. Hybrid-Cloud-Szenarien aber deckten die Konkurrenten zum Teil besser ab. - Microsoft Azure
Im Azure-Portfolio loben die Forrester-Experten besonders die Services für Softwareentwickler. - IBM Bluemix
IBM kann die Vorteile seines Cloud-Angebots vor allem in Unternehmen mit etablierten IT-Strukturen ausspielen. - Google Cloud
Googles Cloud-Portfolio punktet vor allem mit Machine-Learning- und Data-Services. - Oracle Cloud
Die Oracle-Cloud ist in erster Linie für Bestandskunden des IT-Konzerns interessant, urteilt Forrester. - Interoute Virtual Data Center
Der britische Anbieter Interoute profitiert im Forrester-Vergleich von seiner starken lokalen Präsenz in Europa. - Salesforce App Cloud
Vor allem die Entwickler-Services der App Cloud von Salesforce finden das Lob der Forrester-Analysten. - CenturyLink
Die Stärken des Cloud-Portfolios von CenturyLink liegen in den ausgefeilten Konfigurations- und Automation-Features. - CloudSigma
Cloud-Services aus der Schweiz offeriert CloudSigma. Kunden profitieren von besonders flexiblen und feingranularen Konifgurationsoptionen, kommentiert Forrester.
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.
- Microsoft Machine Learning
Azure Machine Learning ist ein vollständig verwalteter Cloud-Dienst, mit dem Anwender Predictive Analytics-Lösungen generieren und bereitstellen können. - Microsoft Cognitive Services
Die Cognitive Services von Microsoft enthalten unter anderem Dienste für Bildanalyse und Gesichtserkennung. - Amazon ML
Amazon Machine Learning unterstützt den Anwender bei der Fehleranalyse von Vorhersagemodellen. - Amazon Bot
Mit Amazon Lex können Chatbots beispielsweise für Verbraucheranfragen erstellt werden. - Google API
Über APIs lassen sich Google AI-Services in eigene Anwendungen integrieren. - Google Tensorflow
Das von Google stammende Open-Source Framework Tensorflow ist die Basis von Cloud ML. - IBM Bluemix
IBM bietet auf der Cloud-Plattform Bluemix zahlreiche Watson-basierte AI-Anwendungen. - IBM ML
IBM Machine Learning ermöglicht die Entwicklung und den Einsatz selbstlernender Analysemodelle in der Private Cloud. - HPE Haven
Mithilfe der Gesichtserkennungs-API von HPE können Entwickler in Fotos gefundene Daten importieren, extrahieren und analysieren. - Salesforce Einstein
Salesforce Einstein: Predictive Content liefert Kunden auf Basis von maschinellem Lernen eine individuelle Empfehlung für das beste Produkt.
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.