Was ist Cloud-native? Die moderne Art, Software zu entwickeln

Der Begriff „Cloud-native“ wird häufig verwendet, insbesondere von Cloud-Anbietern. Darüber hinaus hat es sogar eine eigene Grundlage: die Cloud Native Computing Foundation (CNCF), die 2015 von der Linux Foundation ins Leben gerufen wurde.

'Cloud-native' definiert

Im Allgemeinen ist „Cloud-native“ ein Ansatz zum Erstellen und Ausführen von Anwendungen, bei dem die Vorteile des Cloud-Computing-Bereitstellungsmodells genutzt werden. In „Cloud-native“ geht es darum, wie Anwendungen erstellt und bereitgestellt werden, nicht wo. Dies bedeutet, dass die Apps in der öffentlichen Cloud und nicht in einem lokalen Rechenzentrum gespeichert sind.

Die CNCF definiert "Cloud-native" etwas enger, dh die Verwendung eines Open-Source-Software-Stacks für die Containerisierung, bei dem jeder Teil der App in einem eigenen Container gepackt und dynamisch orchestriert wird, sodass jeder Teil aktiv geplant und verwaltet wird, um die Ressourcen zu optimieren Nutzung und Microservices-orientiert, um die allgemeine Agilität und Wartbarkeit von Anwendungen zu erhöhen.

„Eine Cloud-native App wurde speziell für die elastische und verteilte Natur entwickelt, die moderne Cloud-Computing-Plattformen benötigen“, sagt Mike Kavis, Geschäftsführer des Beratungsunternehmens Deloitte. „Diese Apps sind lose miteinander verbunden, was bedeutet, dass der Code nicht fest mit einer der Infrastrukturkomponenten verbunden ist, sodass die App bei Bedarf vergrößert und verkleinert werden kann und die Konzepte einer unveränderlichen Infrastruktur unterstützt. Normalerweise werden diese Architekturen mithilfe von Microservices erstellt, dies ist jedoch keine zwingende Voraussetzung. “

Bei Cloud-nativen Anwendungen besteht der große Unterschied darin, wie die Anwendung erstellt, bereitgestellt und betrieben wird, sagt Andi Mann, Chief Technology Advocate bei Splunk, einem Cloud-Dienstleister. „Um Cloud-Services nutzen zu können, müssen agile und skalierbare Komponenten wie Container verwendet werden, um diskrete und wiederverwendbare Funktionen bereitzustellen, die sich auch über Technologiegrenzen wie Multicloud hinweg auf gut beschriebene Weise integrieren lassen. Dadurch können Bereitstellungsteams mithilfe wiederholbarer Automatisierung und Orchestrierung schnell iterieren.“

Die Cloud-native App-Entwicklung umfasst in der Regel Entwickler, agile Methoden, Microservices, Cloud-Plattformen, Container wie Kubernetes und Docker sowie die kontinuierliche Bereitstellung - kurz gesagt, jede neue und moderne Methode zur Anwendungsbereitstellung.

Aus diesem Grund möchten Sie unbedingt ein PaaS-Modell (Platform-as-a-Service) haben. Ein PaaS ist nicht erforderlich, aber es macht die Dinge viel einfacher. Die überwiegende Mehrheit der Cloud-Kunden beginnt mit Infrastructure-as-a-Service (IaaS), mit dessen Hilfe ihre Apps von der zugrunde liegenden Hardware abstrahiert werden können. PaaS fügt jedoch eine zusätzliche Ebene hinzu, um das zugrunde liegende Betriebssystem zu abstrahieren, sodass Sie sich ganz auf die Geschäftslogik Ihrer App konzentrieren können und sich nicht um Betriebssystemaufrufe kümmern müssen.

Zugehöriges Video: Was ist der Cloud-native Ansatz?

In diesem 60-Sekunden-Video erfahren Sie von Craig McLuckie, Gründer und CEO von Heptio, und einem der Erfinder von Open Source Kubernetes, wie der Cloud-native Ansatz die Art und Weise verändert, wie Unternehmen ihre Technologien strukturieren.

Unterschiede zwischen Cloud-nativen und lokalen Anwendungen

Die Entwicklung von Cloud-nativen Anwendungen erfordert eine ganz andere Architektur als die herkömmlichen Unternehmensanwendungen.

Sprachen

Lokale Apps, die für die Ausführung auf Unternehmensservern geschrieben wurden, werden in der Regel in traditionellen Sprachen wie C / C ++, C # oder einer anderen Visual Studio-Sprache geschrieben, wenn sie auf einer Windows Server-Plattform und Enterprise Java bereitgestellt werden. Und wenn es auf einem Mainframe ist, ist es wahrscheinlich in Cobol.

Cloud-native Apps werden eher in einer webzentrierten Sprache geschrieben, dh HTML, CSS, Java, JavaScript, .NET, Go, Node.js, PHP, Python und Ruby.

Aktualisierbarkeit

Cloud-native Apps sind immer aktuell und aktuell. Cloud-native Apps sind immer verfügbar.

Lokale Apps benötigen Updates und werden normalerweise vom Anbieter auf Abonnementbasis bereitgestellt. Während der Installation des Updates sind Ausfallzeiten erforderlich.

Elastizität

Cloud-native Apps nutzen die Elastizität der Cloud, indem sie während eines Nutzungsanstiegs mehr Ressourcen verbrauchen. Wenn in Ihrer Cloud-basierten E-Commerce-App ein Spitzenwert verwendet wird, können Sie festlegen, dass zusätzliche Rechenressourcen verwendet werden, bis der Spitzenwert nachlässt, und diese Ressourcen dann deaktivieren. Eine Cloud-native App kann sich an die erhöhten Ressourcen anpassen und nach Bedarf skalieren.

Eine lokale App kann nicht dynamisch skaliert werden.

Multitenancy

Eine Cloud-native App hat kein Problem damit, in einem virtualisierten Bereich zu arbeiten und Ressourcen mit anderen Apps zu teilen.

Viele lokale Apps funktionieren entweder nicht gut in einer virtuellen Umgebung oder überhaupt nicht und erfordern einen nicht virtualisierten Speicherplatz.

Verbundene Ressourcen

Eine lokale App ist in ihren Verbindungen zu den Netzwerkressourcen wie Netzwerken, Sicherheit, Berechtigungen und Speicher ziemlich starr. Viele dieser Ressourcen müssen fest codiert sein und brechen ab, wenn etwas verschoben oder geändert wird.

„Netzwerk und Speicher sind in der Cloud völlig unterschiedlich. Wenn Sie den Begriff "Re-Platforming" hören, ist dies in der Regel die Aufgabe, die Änderungen in den Netzwerk-, Speicher- und sogar Datenbanktechnologien zu berücksichtigen, damit die App in der Cloud ausgeführt werden kann ", sagt Kavis von Deloitte.

Ausfallzeit

In der Cloud gibt es eine größere Redundanz als vor Ort. Wenn also ein Cloud-Anbieter einen Ausfall erleidet, kann eine andere Region die Lücke schließen.

Für lokale Apps ist möglicherweise ein Failover bereit, aber es besteht eine gute Chance, dass die App mit einem Ausfall des Servers ausfällt.

Automatisierung

Ein Großteil der Cloud ist automatisiert, und dazu gehört auch das App-Management. „Die Vorteile der Cloud-nativen Bereitstellung, insbesondere Geschwindigkeit und Flexibilität, hängen maßgeblich von einem Substrat zuverlässiger, bewährter und geprüfter bekanntermaßen guter Prozesse ab, die bei Bedarf wiederholt von Automatisierungs- und Orchestrierungswerkzeugen ausgeführt werden und nicht durch manuelle Eingriffe“, so Splunk Mann. Ingenieure sollten versuchen, praktisch alles, was sie mehr als einmal tun, zu automatisieren, um Wiederholbarkeit, Self-Service, Agilität, Skalierbarkeit sowie Prüfung und Kontrolle zu ermöglichen.

Lokale Apps müssen manuell verwaltet werden.

Modulares Design

Lokale Apps sind in der Regel monolithisch gestaltet. Sie verlagern zwar einige Arbeiten in Bibliotheken, aber am Ende ist es eine große App mit vielen Unterprogrammen. Cloud-native Apps sind viel modularer und viele Funktionen sind in Microservices unterteilt. Auf diese Weise können sie ausgeschaltet werden, wenn sie nicht benötigt werden, und Updates können auf dieses eine Modul und nicht auf die gesamte App übertragen werden.

Staatenlosigkeit

Aufgrund der lockeren Kopplung der Cloud sind Apps nicht an die Infrastruktur gebunden, dh sie sind zustandslos. Eine native Cloud-App speichert ihren Status in einer Datenbank oder einer anderen externen Entität, sodass Instanzen kommen und gehen können und die App weiterhin verfolgen kann, wo sich die Anwendung in der Arbeitseinheit befindet. „Dies ist die Essenz von lose gekoppelt. Wenn die App nicht an die Infrastruktur gebunden ist, kann sie stark verteilt ausgeführt werden und ihren Status unabhängig von der Elastizität der zugrunde liegenden Infrastruktur beibehalten “, sagt Kavis.

Die meisten lokalen Apps sind statusbehaftet, dh sie speichern den Status der App in der Infrastruktur, auf der der Code ausgeführt wird. Aus diesem Grund kann die App beim Hinzufügen von Serverressourcen beschädigt werden.

Die Herausforderungen des Cloud-Native Computing

Einer der großen Fehler, den Kunden machen, ist der Versuch, ihre alten lokalen Apps zu heben und in die Cloud zu verlagern, sagt Mann. "Wenn Sie versuchen, vorhandene Anwendungen - insbesondere monolithische Legacy-Anwendungen - in eine Cloud-Infrastruktur zu verschieben, werden wesentliche Cloud-native Funktionen nicht genutzt."

Stattdessen sollten Sie versuchen, neue Dinge auf neue Weise zu tun, indem Sie entweder neue Cloud-native Anwendungen in eine neue Cloud-Infrastruktur einfügen oder vorhandene Monolithen auflösen, um sie mithilfe von Cloud-nativen Prinzipien von Grund auf neu zu gestalten.

Sie müssen auch auf Ihre alten Entwicklermethoden verzichten. Das Wasserfallmodell reicht sicherlich nicht aus, und selbst eine agile Entwicklung reicht möglicherweise nicht aus. Daher müssen Sie neue Cloud-native Ansätze wie MVP-Entwicklung (Minimum Viable Product), multivariate Tests, schnelle Iteration und enge Zusammenarbeit über Unternehmensgrenzen hinweg in einem Devops-Modell anwenden.

Cloud-native Funktionen haben viele Aspekte, darunter Infrastrukturdienste, Automatisierung / Orchestrierung, Virtualisierung und Containerisierung, Microservices-Architektur und Beobachtbarkeit. All dies bedeutet eine neue Art, Dinge zu tun, was bedeutet, alte Gewohnheiten zu brechen, wenn Sie die neuen Wege lernen. Also mach es in einem gemessenen Tempo.

Erfahren Sie mehr über verwandte Cloud-native Technologien

  • Platform-as-a-Service (PaaS) erklärt
  • Multicloud erklärt
  • Agile Methodik erklärt
  • Best Practices für die agile Entwicklung
  • Devops erklärt
  • Entwickelt Best Practices
  • Microservices erklärt
  • Microservices-Tutorial
  • Docker- und Linux-Container erklärt
  • Kubernetes Tutorial
  • CI / CD (kontinuierliche Integration und kontinuierliche Lieferung) erklärt
  • Best Practices für CI / CD