Der Begriff Cloud-native setzt sich aus den englischen Wörtern „cloud“ („Wolke“) und „native“ („gebürtig“) zusammen. Daraus geht hervor, dass die Daten-Cloud den „Geburtsort“, also die Grundlage für alle Dienste und Prozesse einer Anwendung darstellt – im Gegensatz zu lokalen Umgebungen, also Servern vor Ort (On-Premises).
Die sogenannte Cloud-native-Landscape hilft dabei, eine Übersicht der damit verbundenen Technologien zu generieren. Dabei handelt es sich um eine interaktive Übersichtskarte der „Cloud Native Computing Foundation“, einem Zusammenschluss zahlreicher Unternehmen. Sie führt auf, welche Firmen Microservices für die unterschiedlichen Teilbereiche von NCAs anbieten.
Cloud-native-Definition der „Cloud Native Computing Foundation“
„Cloud-native-Technologien ermöglichen es Unternehmen, skalierbare Anwendungen in modernen, dynamischen Umgebungen zu implementieren und zu betreiben. Dies können öffentliche, private und hybride Clouds sein. Best Practices wie Container, Service-Meshs,
Microservices
, immutable Infrastruktur und deklarative APIs unterstützen diesen Ansatz (siehe unten). Die zugrundeliegenden Techniken ermöglichen die Umsetzung von entkoppelten Systemen, die belastbar, handhabbar und beobachtbar sind. Kombiniert mit einer robusten Automatisierung können Softwareentwickler mit geringem Aufwand flexibel und schnell auf Änderungen reagieren.”
(Quelle: Cloud Native Computing Foundation)
NCAs bieten also innerhalb ihrer Architektur neben flexiblen Lösungen wie Microservices und Containern auch die Möglichkeit, deklarative Programmiersprachen an entsprechenden Programmierschnittstellen (APIs) einzusetzen. Bei diesen steht die Problembeschreibung im Fokus. Die Applikation ermittelt darauf aufbauend automatisch einen Lösungsweg, und Service-Meshs organisieren den Datenaustausch zwischen den einzelnen Teilen der Applikation (vor allem zwischen den Microservices).
Eine immutable (unveränderliche) Infrastruktur beschreibt den Grundriss, auf dem eine NCA aufgebaut ist: Diese wird bei Ereignissen oder Änderungen immer wieder neu mit den benötigten Funktionen bestückt. Die Vorteile eines solchen Aufbaus liegen in der geringen Komplexität, einfachen Wartung und hohen Sicherheit. Die Geschäftsprozesse eines Unternehmens müssen allerdings sehr ausgereift sein, um eine „unveränderliche” Infrastruktur zu nutzen.
Ortsunabhängig, nichtlinear, skalierbar – die Prämissen des Cloud-native-Konzepts
Wichtig für das Verständnis von Cloud-native-Entwicklung ist die Prämisse, in welcher Form Anwendungen erstellt und zur Verfügung gestellt werden. Der Ort ist zweitrangig – ein feststehender physischer Platz, beispielsweise in einem hauseigenen Rechenzentrum, ist nicht nötig. Deshalb ist Cloud-Computing die perfekte Umgebung, um derartige Dienste bereitzustellen und zu verwalten. Ein weiteres Kennzeichen von Cloud-native-Anwendungen ist der zeitliche Aspekt: Cloud-native-Entwickler:innen erschaffen Dienste und Anwendungen nicht auf lineare Weise wie bei herkömmlichen Programmen. Stattdessen zerlegen sie die Software in viele verschiedene Komponenten, die sie unabhängig voneinander entwickeln und updaten können. Diese zahlreichen Microservices ergeben am Ende das große Ganze einer kompletten Webanwendung.
Vor allem der Entwicklungsprozess profitiert vom Cloud-native-Konzept, da er wesentlich modularer und flexibler abläuft als bei On-Premises-Lösungen. Auch die Integration von Updates, Bugfixes und neuen Features geschieht ohne Eingriffe in die fundamentale Infrastruktur der Anwendungen. Aus diesem Grund stehen Veränderungen an der Applikation den Auftraggeber:innen und Anwender:innen in der Regel sehr schnell zur Verfügung.