Schaut man auf die etwas betagte, aber immer noch gültige Definition des NIST (National Institute of Standards and Technology), dann benötigt Cloud-Computing On-demand-Self-Service, breitbandigen Netzwerk-Zugang, dynamische Zuteilung gepoolter Ressourcen, Elastizität und Messung des Ressourcen-Verbrauchs, oftmals gepaart mit einem Pay-per-Use-Abrechnungsmodell. Schaut man auf die Definition der CNCF (Cloud Native Computing Foundation), dann reicht es, Kubernetes im vorhandenen Rechenzentrum zu installieren und darauf Anwendungen in Form containerisierter Microservices zu deployen.
Viel weiter könnten die Definitionen nicht auseinanderliegen. Und wirklich hilfreich ist es leider auch nicht. So betiteln sich heute alle "Cloud-native", die schon einmal irgendetwas mit Docker gemacht haben, so wie sich alle "agil" nennen, die schon einmal während eines Meetings gestanden haben. Wertstiftende Diskussionen sind damit nicht möglich.
Container haben einen Wert – zweifelsohne. Aber der hat nichts mit "Cloud" zu tun. Der große Wert von Containern ist, dass sie die Grenze zwischen Betriebssystem und Anwendungen wieder an die richtige Stelle geschoben haben: Das Betriebssystem (heute: Kubernetes) kümmert sich um die Verwaltung und Zuteilung der Ressourcen und alles andere ist Sache der Anwendung (also des Containers). Keine unendlichen Abhängigkeiten mehr zwischen Anwendung und Betriebssystem wegen Laufzeitumgebungen, Bibliotheken, Applikationsserver und Co. Keine Dependency und Update Hell mehr. Das ist großartig! Das macht vieles leichter. Aber das war es auch. Alles andere konnten vorher auch schon Virtualisierungslösungen wie VMware.
Cloud ist etwas ganz anderes. Das ist schon lange nicht mehr IaaS (Infrastructure as a Service). Das ist ein stetig wachsendes Ökosystem aus Managed Services. Das wird gerne auch mal "Serverless" genannt, weil man sich nicht mehr um Bereitstellung von Hardware, Installation von Betriebssystem, Entwicklung und Deployment von Software, Betrieb, Patchen von Sicherheitslücken, Updaten auf neue Versionen, Backup, Restore und all das kümmern muss, sondern die fertige Lösung einfach per Web- beziehungsweise Mobile-GUI oder besser noch per API nutzen kann – Elastizität, Self-Service und Pay-per-Use natürlich inklusive.
Nutzt man diese Managed Services konsequent, werden plötzlich jede Menge Kapazitäten für neue Formen der Wertschöpfung frei, für die Verprobung und Entwicklung neuer digitaler Geschäftsmodelle, für die man vorher keine Kapazitäten hatte, weil man sich um all die anderen eigentlich nicht wertschöpfenden, aber dennoch benötigten Anwendungen kümmern musste. Das ist aber etwas komplett anderes, als ein paar Services in Container zu packen.
Um es klar zu sagen: Ich denke, beides hat einen Wert. Es ergibt nur keinen Sinn, beides mit dem gleichen Namen zu belegen. Persönlich fände ich es gut, wenn die CNCF ihr erstes "C" in "Container" umbenennen und fortan "Container-native" propagieren würde. Das würde der Sache deutlich näher kommen. Aber das wird sie wohl nicht tun.
Also: Was ist Cloud-native?