Kapitel 1. Einführung: Warum Cloud Native?
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Auch wenn die Nutzung der Cloud eine Möglichkeit ist, Probleme mit der Skalierbarkeit, Verfügbarkeit und Zuverlässigkeit unserer Anwendungen zu lösen, ist sie kein Allheilmittel. Wir können unsere Anwendungen nicht einfach in die Cloud stellen und erwarten, dass sie ewig laufen. Auch können wir unsere Anwendungen nicht in Container verpacken, um sie in Microservices zu verwandeln, die reibungslos in der Cloud laufen können. Um die Vorteile der Cloud voll auszuschöpfen, müssen wir Infrastrukturen und Dienste entwickeln, bei denen die Cloud im Vordergrund steht.
Um die Entwicklung der Cloud Native und ihre Bedeutung wirklich zu verstehen, müssen wir zunächst einen Blick darauf werfen, wie die Welt der Infrastruktur und der Dienste in den frühen Tagen des Internets aussah. Begeben wir uns also auf diese Reise.
Die Reise in die Cloud
In den Anfängen des Internets wurde die gesamte Infrastruktur für Webanwendungen auf physischen Servern gehostet, die erst beschafft und vorbereitet werden mussten, bevor die Anwendungen von ihnen bereitgestellt werden konnten. Die IT-Teams mussten die Server kaufen und vor Ort aufstellen, die entsprechenden Server-Betriebssysteme installieren, die Umgebungen vorbereiten und dann die Anwendungen auf ihnen bereitstellen. Dieser Ansatz war mit vielen Problemen behaftet: Zum Beispiel waren die Server nicht ausgelastet (da sie nie vollständig genutzt wurden), es war schwierig, mehrere Anwendungen zu betreiben, und die Kosten für Einrichtung und Wartung waren hoch. Die Virtualisierung wurde entwickelt, um eine effizientere Nutzung der physischen Server zu ermöglichen. Virtualisierung schafft eine Abstraktionsebene über der physischen Hardware, die es ermöglicht, die zugrunde liegenden Ressourcen wie Prozessoren, Arbeitsspeicher und Speicherung zu teilen und gemeinsam zu nutzen.
Die Virtualisierung löste viele Probleme mit der Ressourcennutzung und der Mandantenfähigkeit, aber du musstest immer noch die Hardware besitzen, um deine Anwendung bereitzustellen, und du musstest immer noch alle Gemeinkosten für den Betrieb deines Rechenzentrums tragen. Daraus entstand der Bedarf an Infrastructure as a Service (IaaS), bei dem die Server im Besitz von Dritten sind, die für die zugrunde liegende Infrastruktur deiner Anwendungen verantwortlich sind. Dies war der Beginn der Cloud-Computing-Ära und ermöglichte es den Unternehmen, sich auf ihre Anwendungen und die zugrunde liegenden Umgebungen zu konzentrieren, ohne sich um Hardware, Overhead oder Konfigurationsfragen kümmern zu müssen. Auf IaaS folgte Platform as a Service (PaaS), das den Aufwand weiter reduzierte, indem es die zugrunde liegende Softwareumgebung und die Laufzeit trennte. Das bedeutete, dass sich die Entwickler nur noch auf das Schreiben ihrer Anwendungen und die Definition der Abhängigkeiten konzentrieren mussten, während die Serviceplattform vollständig für das Hosting, den Betrieb, die Verwaltung und die Bereitstellung der Anwendungen zuständig war. Mit dem Aufkommen von Software as a Service (SaaS), im Volksmund auch als "On-Demand-Software" bekannt, wurde PaaS zum Wegbereiter für vollständig verwaltete Cloud-Dienste, bei denen die Verbraucher die Anwendung als Service auf einer Pay-as-you-go-Basis erhalten.
Mit der zunehmenden Beliebtheit von Cloud Computing wuchs auch die Idee, Cloud Native-Technologien einzusetzen, die die Cloud effizienter nutzen und gleichzeitig das volle Potenzial der Cloud-Infrastruktur und ihrer verschiedenen Angebote ausschöpfen. Dies führte zur Entwicklung von Cloud Native Infrastructure und Cloud Native Application Development. Die Cloud-Native-Infrastruktur schafft eine Abstraktion von der zugrunde liegenden Infrastruktur des Cloud-Providers und macht die Infrastruktur über APIs zugänglich. Diese Philosophie der Infrastrukturverwaltung erleichtert die Skalierung und reduziert die zugrunde liegende Komplexität, was indirekt die Verfügbarkeit, Ausfallsicherheit und Wartbarkeit verbessert. Ebenso stärken Cloud-native Anwendungen die Brücke zwischen der Anwendung und der Infrastruktur, indem sie unterstützende Funktionen wie Zustandsprüfungen, Telemetrie und Metriken, Ausfallsicherheit, eine Microservices-Umgebung und Selbstheilung integrieren.
Werfen wir nun einen Blick auf die Herausforderungen in der Cloud-Computing-Umgebung.
Herausforderungen in der Cloud
Public Cloud-Provider haben sich zu einer dominierenden Unternehmenslösung für viele wachsende Branchenbedürfnisse und Geschäftsanforderungen entwickelt. Sie bieten dir Vorteile wie höhere Verfügbarkeit und Skalierbarkeit sowie die Flexibilität, deine Anwendungen so zu gestalten, dass sie die Cloud-Dienste nutzen. Bei der Einführung von Cloud-Lösungen standen potenzielle Kunden vor zahlreichen Herausforderungen wie Sicherheit, effektives Kostenmanagement, Compliance und Leistung. Diese frühen Herausforderungen gehören für die meisten Cloud-Kunden heute der Vergangenheit an, da sie durch Fortschritte bei den Technologien der Cloud-Provider und der Art und Weise, wie Unternehmen Lösungen in der Cloud einsetzen, überwunden wurden.
Auch wenn wir einen langen Weg zurückgelegt haben, heißt das nicht, dass die Cloud perfekt ist. Es gibt immer noch Herausforderungen in der Cloud-Landschaft, aber sie sehen ganz anders aus als die, mit denen wir konfrontiert waren, als die Cloud noch neu war. Die Kunden müssen heute die folgenden Herausforderungen berücksichtigen:
- Zu viele Auswahlmöglichkeiten
- Es gibt viele Cloud-Provider mit einem umfangreichen Angebot an Diensten, aus denen du wählen kannst. Das bedeutet, dass du fachkundige Architekten und Ingenieurteams einstellen musst, die wissen, wie die Dienste zu bedienen sind und wie du sie entsprechend deinem Geschäftszweck nutzen kannst. Es ist nicht nur schwierig, diese Ingenieure einzustellen, sondern es erfordert auch einen erheblichen Zeitaufwand, Ingenieure zu finden, die Experten auf einem bestimmten Gebiet sind.
- Schnelles Wachstum und Entwicklung von Cloud-Diensten und -Technologien
- Cloud-Provider-Giganten wie Amazon, Microsoft und Google bringen eine große Anzahl neuer Cloud-Dienste auf den Markt. Daraus ergibt sich ein größerer Bedarf, Ingenieure für diese neuen Dienste auszubilden, und ein größerer Bedarf, diese Dienste in Zukunft zu pflegen, wenn die Anwendungen wachsen. Oft führt die Höhe der Investitionen in diese Dienste auch indirekt zu einer Bindung an einen Anbieter, was zu einer Spirale zukünftiger Einschränkungen bei der Anwendungsentwicklung führt.
- Mehrere Generationen von Technologie
- Mit dem Übergang in die Cloud-Ära haben wir auch unsere Anwendungsstacks von verschiedenen Generationen von Infrastrukturlösungen, von virtuellen Maschinen über Container bis hin zu serverlosen Technologien, abgehoben und umgestellt. Diese Migration von Anwendungen erfordert einen erheblichen Aufwand, um die zugrunde liegenden Technologien zu verstehen und sie in Zukunft zu unterstützen.
- Wachsende betriebliche Komplexität
- Diese schnell wachsenden Technologien in Verbindung mit der beschleunigten Migration von Arbeitslasten auf die Cloud haben zu betrieblicher Komplexität und einer immer länger werdenden Liste von Faktoren geführt, auf die man achten muss, wie z.B. Speichersysteme, Sicherheitsmodelle, Governance-Modelle und Verwaltungsplattformen.
- Entwicklung von Geschäftsanforderungen und Technologien
- Neue technologische Bereiche und kulturelle Veränderungen haben auch die Unternehmensarchitektur schnell weiterentwickelt. Mit dem Aufkommen der DevOps-Kultur kann eine neue Anwendung, deren Entwicklung früher Wochen oder Monate dauerte, heute in wenigen Minuten eingeführt werden. Fortgeschrittenere Bereiche wie Data Science und maschinelles Lernen sind ebenfalls ins Spiel gekommen und haben die Anforderungen der Unternehmen und die Reife der Technik insgesamt erhöht.
Trotz der Leistungsfähigkeit des Cloud Computing mussten sich die Unternehmen also durch zahlreiche Komplexitäten kämpfen. Schließlich wurde klar, dass die Unternehmen die Geschwindigkeit, die Skalierbarkeit und die Marge der Cloud nutzen wollten, aber ohne den Overhead. Um dies zu erreichen, war es notwendig, den Cloud Native-Ansatz für die Anwendungsentwicklung zu übernehmen, mit dem Unternehmen die Vorteile der Cloud voll ausschöpfen können.
Cloud Native Computing Stiftung
Immer mehr Unternehmen setzen auf Cloud-Native-Technologien, entwickeln Software im eigenen Haus und arbeiten eng mit anderen Unternehmen zusammen, um Produkte schnell auf den Markt zu bringen. Eine Organisation, die bei diesen Bemühungen eine Vorreiterrolle spielt, ist die Cloud Native Computing Foundation (CNCF). Ihr Auftrag lautet wie folgt:
Cloud-native Technologien ermöglichen es Unternehmen, skalierbare Anwendungen in modernen, dynamischen Umgebungen wie öffentlichen, privaten und hybriden Clouds zu entwickeln und zu betreiben. Container, Service Meshes, Microservices, unveränderliche Infrastruktur und deklarative APIs sind Beispiele für diesen Ansatz.
Diese Techniken ermöglichen lose gekoppelte Systeme, die widerstandsfähig, verwaltbar und beobachtbar sind. In Kombination mit einer robusten Automatisierung ermöglichen sie es den Ingenieuren, mit minimalem Aufwand häufig und vorhersehbar Änderungen vorzunehmen, die große Auswirkungen haben.
Die Cloud Native Computing Foundation will die Einführung dieses Paradigmas vorantreiben, indem sie ein Ökosystem aus anbieterneutralen Open-Source-Projekten fördert und unterstützt. Wir demokratisieren moderne Muster, um diese Innovationen für alle zugänglich zu machen.
Die CNCF hat eine interaktive Cloud-Native-Landschaft zusammengestellt, die das ganze Ausmaß der heutigen Cloud-Native-Lösungen zeigt. Die CNCF-Landschaft ist wie eine Landkarte der Cloud-Native-Technologien und bietet Richtlinien für die Entwicklung erfolgreicher Cloud-Native-Anwendungen. Obwohl die Cloud-Native-Landschaft viele Informationen über die Erstellung von Diensten liefert, kann es vor allem für Anfänger/innen eine Herausforderung sein, sich durch sie hindurchzuarbeiten, da sie eine Reihe von Diensten enthält, die gemeinsam genutzt werden. In diesem Buch haben wir die besten der verfügbaren Technologien ausgewählt und uns dabei an die CNCF-Richtlinien gehalten, um uns in der Cloud Native-Welt besser zurechtzufinden.
Einführung einer Cloud Native Infrastructure mit Azure
Nachdem du nun die Ursprünge des Cloud Computing, die Herausforderungen beim Betrieb in der Cloud und die Veränderung der Art und Weise, wie Dienste entwickelt und bereitgestellt werden, verstanden hast, wollen wir nun besprechen, wie dieses Buch dir helfen kann, weiterzukommen.
Wenn du einen Blick auf die Cloud Native-Bewegung wirfst und ihre Geschichte von Anfang an aufzeichnest, ist die erste Technologie, die auftaucht, Kubernetes, und du wirst viele Leute finden, die sie übernommen haben. Oberflächlich betrachtet, wirst du feststellen, dass viele Unternehmen Kubernetes in der Mitte ihres Stacks haben. Das erweckt den Eindruck, dass Kubernetes ein unverzichtbares Werkzeug ist, das all deine Probleme lösen kann und deine Umgebung auf magische Weise selbstheilend und fehlertolerant macht. Dieser Irrglaube hat viele Leute dazu gebracht, Kubernetes als Allheilmittel zu betrachten, ohne die tiefere Bedeutung zu verstehen. Es ist wichtig, den Bedarf an solchen Lösungen zu verstehen und einen Einblick in das gesamte Ökosystem zu bekommen, während man das Gesamtbild betrachtet.
In den folgenden Kapiteln geben wir Anleitungen, wie man Cloud-Native-Umgebungen nach den von der CNCF vorgeschlagenen Richtlinien erstellt. Wir haben dieses Buch als Fibel für Ingenieure und Enthusiasten geschrieben, die gerade erst mit Cloud Native Transformationen beginnen und den allgemeinen Bedarf an Cloud Native Architekturen erkunden wollen. Du lernst praktische Wege kennen, um Cloud Native-Infrastrukturen über Microsoft Azure zu erstellen, indem du dich in der CNCF-Landschaft zurechtfindest. Außerdem lernst du die Prinzipien der Cloud Native Infrastructure aus der Perspektive eines Anfängers kennen und wirst ausgereifte Lösungen über Azure bereitstellen.1 Da Azure einer der Hauptakteure im Ökosystem der öffentlichen Cloud ist, bietet es ein ausgereiftes Verständnis des Infrastruktur-Stacks. Wir führen dich durch die Grundlagen der Cloud-Infrastruktur und erklären dir, wie du mit Hilfe verschiedener Technologien Cloud Native wirst und warum diese Technologien notwendig sind. Anhand einer praktischen Anwendung geben wir einen umfassenden Überblick über Cloud Native-Technologien und Azure-Dienste und zeigen die Vorteile von Cloud Based (mit Azure) gegenüber Cloud Native auf. Unser Ziel ist es, dir ein Buch an die Hand zu geben, das alle wichtigen cloudbasierten Technologien und ihre Bedeutung aufzeigt, damit du die logischen Gründe für die Vorteile dieser Technologien verstehen kannst.
Zusammenfassung
In diesem Einführungskapitel haben wir die Grundlagen dafür gelegt, was Cloud Computing ist und wie Cloud-Native-Technologien dazu beitragen, die Cloud-Einführung zu verbessern. Du hast erfahren, wie die Cloud populär wurde und wie sich Cloud Computing von physischer Hardware zu einer serverlosen Umgebung entwickelt hat. Du hast auch erfahren, welche Herausforderungen Cloud Computing mit sich bringt und dass es immer wichtiger wird, sich an Cloud Native Technologien anzupassen. Wir haben erklärt, was Cloud Native bedeutet und wie der Rest des Buches den Weg zu Cloud Native auf Azure verfolgt. Wir hoffen, dass du die Reise, die vor dir liegt, interessant findest und dass diese Arbeit dir helfen wird, cloud-native Technologien effektiver anzupassen.
1 Azure stellt auch zahlreiche Architekturrichtlinien zur Verfügung, die bewährte Methoden für die Erstellung von Diensten auf Azure aufzeigen: siehe https://docs.microsoft.com/en-us/azure/architecture und https://azure.microsoft.com/pt-br/blog/azure-application-architecture-guide.
Get Cloud Native Infrastruktur mit Azure now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.