Nicht-ITler haben in der Regel keine oder eine falsche Vorstellung davon, was Cloud-Computing ist. Für sie ist Cloud gleichbedeutend mit Facebook, Webmail oder Dropbox. Interessanterweise haben aber auch viele, die aus der IT kommen und noch keine praktische Erfahrung mit Cloud-Lösungen haben, ein falsches Verständnis davon.
Source: Rohdiamanten in der Cloud
Man hat immer noch das Bild vom klassischen Hostingprovider im Kopf. Wenige sind schon einen Schritt weiter und ihnen ist klar, dass PaaS und Serverless als Grundlage für den Betrieb von Anwendungen und Datenbanken den altbekannten IT-Betrieb komplett auf den Kopf stellen. Die vergleichsweise hohen Kosten von Servern bei den großen Cloud-Anbietern relativieren sich, wenn man die Gesamtkosten inklusive Wartung durch Administratorinnen und Administratoren mitrechnet.
Wie Cloud-Computing Dev-Teams produktiver macht
Was leider kaum jemand ohne Cloud-Erfahrung sieht, sind die Vorteile durch die vielen fertigen, begleitenden Cloud-Services. Sie nehmen Teams die Entwicklung von Lösungen für die unzähligen Cross-cutting Concerns ab, die man für professionelle Software heutzutage braucht: Logging und Telemetrie, Konfigurationsmanagement, leichtgewichtige VPN-Gateways, Vaults für Secrets, passwortlose Sicherheit für Machine-to-Machine-Kommunikation, Workflow-Engines, Sicherheitslösungen für Web-APIs und Web-Apps und vieles mehr. Die meisten dieser Dienste lassen sich wegen ihres Serverless-Charakters mit wenigen Klicks bzw. Zeilen Skriptcode aktivieren und laufen so gut wie wartungsfrei.
Wenn ich in Cloud-Workshops auf Managementebene auf die Produktivitätssteigerung und Professionalisierung durch diese ergänzenden Dienste hinweise, wird das nicht selten als Spieltrieb von Nerds abgetan. Klar, wir Softwarenerds fühlen uns in Cloud-Umgebungen wie Kinder im Spielzeugladen, die am liebsten alles haben wollen. Die Erwachsenen lassen sich durch solche Kleinigkeiten nicht blenden und philosophieren lieber über politische Differenzen zwischen den USA und Europa oder wichtige Dinge wie die Auswirkungen der variablen Cloud-Kosten auf den Budgetprozess. Früher war das so einfach. Man wusste, was die Anschaffung eines Servers im eigenen Rechenzentrum kostet. Mit Serverless wird alles so unplanbar. Mein Argument, dass das zwar stimmt, aber die unplanbaren Kosten durch die Cloud-Dienste massiv unter den planbaren Kosten der Entwicklung und des Betriebs der Software im eigenen Rechenzentrum liegen, wird oft nicht ernst genommen.
Um Nicht-ITlern Cloud-Vorteile aufzuzeigen, möchte ich diese Kolumne Beispielen aus Azure widmen, die man leicht übersieht, die jedoch ein echter Produktivitätsturbo für Entwicklungsteams sein können. Vielleicht hilft der Hinweis auf diese Dienste, das eine oder andere Cloud-skeptische Entscheidungsgremium zu überzeugen.
Application Insights: Logs spielen eine große Rolle. Azure bietet eine professionelle Lösung für die zentrale Speicherung und Auswertung von Logs (Azure Monitor). Auf Anwendungsebene gibt es jedoch einen Dienst, der einen viel genaueren Einblick in die Software, die in der Cloud läuft, ermöglicht: Application Insights, kurz AI. AI ist in kürzester Zeit in eine Anwendung eingebaut und verursacht geringe Kosten. Das AI API erlaubt es, im Lauf der Zeit zielgerichtet Ereignisse und Metriken zu ergänzen, die wichtig für die jeweilige Software sind. Die Auswertungs- und Analysemöglichkeiten, die man damit bekommt, verändern den Entwicklungsprozess grundlegend. Gezielte Performanceverbesserung, faktenbasierte Produktplanung und schnellere Identifizierung von Fehlerursachen sind nur drei Beispiele für die Auswirkungen eines konsequenten Einsatzes von AI, die konkrete Auswirkungen auf die Kundenzufriedenheit haben werden.
App Configuration: Jede größere SaaS-Lösung enthält eine große Anzahl an Einstellungsparametern. Simple Konfigurationsdateien reichen nicht aus. Es braucht eine Lösung zur zentralen Speicherung und Verwaltung von Einstellungen und Feature-Flags, auf die alle Systemkomponenten zugreifen, sonst geht der Überblick verloren und Konfigurationsfehlern wird Tür und Tor geöffnet. App Configuration ist schnell eingerichtet und bietet neben der Speicherung der Parameter auch ein gut bedienbares UI, Verschlüsselung von Einstellungen, historische Speicherung der Parameter und vieles mehr.
Azure Relay: In SaaS-Anwendungen für Geschäftskunden gibt es fast immer Use Cases, bei denen von der Cloud aus auf Software zugegriffen werden muss, die vor Ort beim Endkunden betrieben wird. Man kann einen eigenen Mechanismus entwickeln, wie ein dort installierter Dienst die Kommunikation mit der eigenen Cloud-Lösung übernimmt. Auch könnte man mit jedem Kunden Gespräche führen und eine Lösung mit VPN-Gateways erarbeiten. Beide Wege sind zeitraubend und teuer. Azure bietet mit Relay (aka Hybrid Connections) eine fertige, leichtgewichtige Lösung. Relay kann als Kommunikationsprotokoll mit zugehörigem C#-API eingesetzt werden. Wer noch weniger Arbeit haben will und auf Azure App Service setzt, kann die Variante Hybrid Connections einsetzen und muss für Integrationsszenarien mit der Kunden-IT überhaupt keinen Code schreiben.
Key Vault: Es wird so viel darüber gesprochen, wie unsicher Cloud-Lösungen sind. Das ist eine falsche Pauschalisierung. Richtig gemacht bieten sie bei gleichem Ressourceneinsatz in der Regel höhere Informationssicherheit. Der Key Vault ist ein gutes Beispiel dafür. Er ist ein fertiger, kostengünstiger Cloud-Dienst zur Speicherung und Verwaltung von Secrets (z. B. API Keys, DB-Zugangsdaten), Zertifikaten und Schlüsseln. Dahinter steckt speziell zertifizierte Hardware, die für starke Verschlüsselung der sicherheitskritischen Daten und verlässliche Audit-Logs sorgt. Kurz gesagt: Wenn sich Secrets nicht vermeiden lassen, gehören sie in der Azure-Cloud ohne Wenn und Aber in Key Vaults und keinesfalls in Konfigurationsdateien.
Managed Identity: Was ist besser als ein sicher gespeichertes Secret? Überhaupt kein Secret, dann kann nichts in falsche Hände geraten. Azure bietet mit Managed Identity eine passwortlose Lösung für Machine-to-Machine-Kommunikation. Wann immer die eigene Software auf Azure-Dienste wie Datenbanken, Key Vault, Messaging, App Configuration etc. zugreifen muss, kann sie das auf Basis von Managed Identity ohne Passwort tun. Dadurch wird im Entwicklungsteam eine Menge Energie frei, die man sonst in die Konzeption und Umsetzung der Verwaltung von Secrets stecken müsste.
Logic Apps: Jede größere Geschäftsanwendung beinhaltet Logik auf verschiedenen Abstraktionsebenen. Neben der Kerngeschäftslogik gibt es in vielen Fällen auch Geschäftsprozesse auf einer höheren Abstraktionsebene, bei denen verschiedene Dienste – selbst geschriebene und externe – koordiniert werden müssen, um einen größeren, komplexeren Geschäftsprozess abzubilden. Nicht selten muss man auch Menschen z. B. für Freigabeprozesse einbinden. Wenn Geschäftsprozessmanagement nicht das eigene Kerngeschäft ist, wird solchen Herausforderungen oft wenig Liebe geschenkt und provisorische Lösungen fallen einem irgendwann auf die Füße. Logic Apps kann hier Abhilfe schaffen kann. Damit lassen sich Prozesse über Servicegrenzen hinweg schnell und professionell umsetzen, ohne dass man Zeit in die Entwicklung einer eigenen Workflow-Engine investieren muss oder dafür eigene Server zu betreiben hat.
Private Endpoints: Nicht alle Web-APIs und Web-Apps einer größeren SaaS-Lösung müssen über das öffentliche Internet erreichbar sein. Manche APIs werden nur intern genutzt, manche Web-Apps dienen nur administrativen Zwecken und werden ausschließlich vom SaaS-Anbieter verwendet. Cloud-Plattformen wie Azure bieten schon seit langer Zeit virtuelle Netzwerke (VNets), die eine exakte Steuerung des Zugriffs auf Netzwerkebene erlauben. Leider widersprechen sich VNets und Serverless Computing. Die Kernidee von PaaS und Serverless ist, dass der Cloud-Anbieter einen zugrunde liegenden gemeinsamen Infrastrukturpool verwaltet, aus dem ad hoc Ressourcen den Anwendungen, die sie gerade brauchen, bereitgestellt werden. Es liegt in der Natur der Sache, dass ein von vielen Kunden genutzter Ressourcenpool und in VNets isolierte Ressourcen nicht kompatibel sind. Azure löst dieses Problem durch Private Endpoints. Sie anzulegen ist ein Kinderspiel. Private Endpoints blenden die jeweiligen PaaS-Dienste netzwerktechnisch in VNets ein und verhindern bei Bedarf den Zugriff aus dem öffentlichen Internet. Dadurch lassen sich eingeschränkter Zugriff und die Vorteile von PaaS oder Serverless vereinen.
Fazit
Professionelle Cloud-Umgebungen sind viel mehr als nur eine Alternative für das Hosting von Servern und Datenbanken. Der wesentliche Vorteil liegt in den vielen kleinen Diensten, die SaaS-Lösungen robuster und sicherer machen können. Sie erlauben es Entwicklungsteams, sich auf ihre Kernaufgabe, das Entwickeln von aus Kundensicht nützlichen Programmfunktionen, zu konzentrieren, statt sich mit Randthemen herumplagen zu müssen, die kein Kunde je zu Gesicht bekommt. Leider wird dieser Aspekt in der aktuellen Diskussion über Vor- und Nachteile der großen, meist von US-amerikanischen Unternehmen betriebenen Cloud-Plattformen zu wenig beachtet. Nicht selten werden Server- oder Containerhosting in Europa mit funktionsreichen Cloud-Umgebungen wie Microsoft Azure gleichgesetzt. Als Entwickler sehe ich einen riesigen Unterschied. Als Europäer würde ich gerne auf europäische Clouds setzen und hoffe, dass sich langfristig regionale Angebote entwickeln, die ein vergleichbares Portfolio an Serverless-Diensten anbieten, wie man sie heute bei Microsoft, Google und AWS findet.