Überprüfung grundlegender Konzepte: Cloud-native Anwendungsbereitstellung

Ursprünglicher Link: Basic Concepts Review: Cloud Native Application Delivery

Nachdruckquelle: NGINX Open Source Community

Die einzige offizielle chinesische Community von NGINX, alle unter nginx.org.cn


 

Obwohl die Entwicklung cloudnativer Anwendungen zu Beginn des 21. Jahrhunderts ihren Anfang nahm, herrscht immer noch große Verwirrung bei der Verwendung der Terminologie. Dieser Artikel führt Sie durch allgemeine Begriffe und Probleme.

Cloud-nativ

Die Cloud Native Computing Foundation (CNCF) definiert „Cloud Native“ wie folgt:

Cloud-native Technologien ermöglichen es Unternehmen, skalierbare Anwendungen in modernen, dynamischen Umgebungen wie öffentlichen, privaten und hybriden Clouds zu erstellen und auszuführen. Zu den repräsentativen Technologien von Cloud Native gehören Container, Service Mesh, Microservices, unveränderliche Infrastruktur und deklarative API.

Diese Techniken ermöglichen den Aufbau lose gekoppelter Systeme, die fehlertolerant, einfach zu verwalten und leicht zu beobachten sind. In Kombination mit zuverlässiger Automatisierung machen es Cloud-native Technologien für Ingenieure einfacher, häufige und vorhersehbare größere Änderungen an Systemen vorzunehmen.

Cloud-Lastausgleich

Unter Cloud-Lastausgleich versteht man die Verteilung von Client-Anfragen auf mehrere Anwendungsserver, die in einer Cloud-Umgebung ausgeführt werden. Wie andere Formen des Lastausgleichs maximiert der Cloud-Lastausgleich die Anwendungsleistung und -zuverlässigkeit; seine Vorteile gegenüber dem herkömmlichen Lastausgleich von Ressourcen vor Ort sind (normalerweise) geringere Kosten und die Möglichkeit, problemlos mit der Nachfrage zu skalieren oder Anwendungen zu verkleinern.

Heutzutage betreiben immer mehr Unternehmen, insbesondere kleine, eine Vielzahl von Anwendungen in der Cloud. Ein Unternehmen könnte ein cloudbasiertes CRM (z. B. Salesforce.com) zum Speichern von Kundeninformationen verwenden, ein cloudbasiertes ERP-System zum Verfolgen von Produktdaten verwenden, einen Webhosting-Anbieter (z. B. Google) zum Hosten der Website nutzen und … Amazon Elastic Compute Cloud (EC2) zum Ausführen einer kleinen Anzahl benutzerdefinierter Anwendungen.

Die empfohlene Vorgehensweise besteht darin, den Lastausgleichsserver in derselben Umgebung bereitzustellen wie die Ressourcen, für die der Lastausgleich erfolgt. Wenn der Großteil der Computerinfrastruktur eines Unternehmens in der Cloud gehostet wird, ist es daher notwendig, einen Load Balancer in der Cloud auszuführen.

Die Vorteile des Cloud-Lastausgleichs spiegeln sich hauptsächlich in der Skalierbarkeit und dem globalen Charakter der Cloud selbst wider.

  • Die einfache und schnelle Skalierung in der Cloud bedeutet, dass Unternehmen Verkehrsspitzen (z. B. Double-Eleven-Verkehr) problemlos bewältigen können, indem sie einfach einen Cloud-Load-Balancer vor einer Reihe von Anwendungsinstanzen platzieren, der je nach Bedarf schnell und automatisch skaliert werden kann. ohne Leistungseinbußen.

  • Die Möglichkeit, Anwendungen in mehreren Cloud-Zentren auf der ganzen Welt zu hosten, verbessert auch die Zuverlässigkeit. Kommt es beispielsweise im Nordosten der USA nach einem Schneesturm zu einem Stromausfall, kann ein Cloud-Load-Balancer den Datenverkehr von in dieser Region gehosteten Cloud-Ressourcen zu Ressourcen in anderen Teilen des Landes umleiten.

Multi-Cloud vs. Hybrid-Cloud

„Multi-Cloud“ und „Hybrid-Cloud“ werden oft synonym verwendet, tatsächlich gibt es jedoch einen Unterschied zwischen beiden.

Die Multicloud-Infrastruktur umfasst mehrere öffentliche Cloud-Umgebungen verschiedener Anbieter. In einer Multi-Cloud-Infrastruktur werden häufig verschiedene öffentliche Clouds zur Ausführung unterschiedlicher Aufgaben verwendet (z. B. eine für Programmlogik, eine zweite für Datenbanken, eine dritte für maschinelles Lernen), und die Verteilung über Clouds kann je nach Anwendung unterschiedlich sein. Unternehmen entscheiden sich für eine Multi-Cloud-Strategie, um die Flexibilität und Funktionen verschiedener Clouds zu nutzen. 

Die Hybrid-Cloud-Infrastruktur besteht aus zwei oder mehr verschiedenen Arten von Cloud-Umgebungen (lokal, private Cloud und öffentliche Cloud). In einer Hybrid-Cloud-Infrastruktur besteht die Rolle der Public Cloud darin, die Funktionen der Private Cloud oder der lokalen Umgebung zu erweitern. Dieser Ansatz wird häufig von Unternehmen gewählt, die Anwendungen in die Cloud migrieren oder zu hohe technische Schulden haben, um vollständig Cloud-nativ zu werden. Die Hybrid-Cloud-Infrastruktur umfasst typischerweise mehrere öffentliche Clouds und kombiniert daher Hybrid-Cloud und Multi-Cloud.

Container

Container sind eine Virtualisierungstechnologie, die darauf ausgelegt ist, die Portabilität von Anwendungen zu schaffen und zu unterstützen – mit anderen Worten, um die Bereitstellung von Anwendungen auf einer Vielzahl unterschiedlicher Plattformen zu vereinfachen. Container können alle Anforderungen einer Anwendung (den Anwendungscode selbst, die Abhängigkeiten der Anwendung (z. B. auszuführende Bibliotheken usw.) sowie die Laufzeitumgebung der Anwendung und ihre Abhängigkeiten) in ein Paket packen, das transportiert werden kann Plattformen und laufen unabhängig. Ein Container ist eine Abstraktion einer Anwendung aus ihrer typischen Betriebssystem-Laufzeitumgebung.

Docker ist das bekannteste Container-Implementierungsformat; es gibt auch andere Container-Technologien (wie rkt/CoreOS, Containerd, Hyper-V-Container) sowie untergeordnete Technologien (wie cgroups und Namespaces), die beide verwendet werden zur Anwendungsisolation, ähnlich einer Container-Engine, bietet jedoch keine isolierte Portabilität wie Container). Sie können Container direkt mit Plattform-Tools wie Docker oder rkt verwalten, aber die meisten Bereitstellungen verwenden Orchestrierungstools wie Kubernetes, um Container zu verwalten. Kubernetes hat sich nach und nach zum Standard- und Standardtool für die Containerbereitstellung in Produktionsqualität entwickelt.

Weitere Container und andere verwandte Inhalte finden Sie in der NGINX-Open-Source-Community .

Mikrodienste

Microservices sind ein Software-Architekturansatz zum Erstellen großer, komplexer Anwendungen unter Verwendung mehrerer kleiner Komponenten, die jeweils eine einzelne Funktion wie Authentifizierung, Benachrichtigungen oder Zahlungsprozesse ausführen, oder die kleinen Komponenten selbst. Jeder Microservice ist eine unabhängige Einheit in einem Softwareentwicklungsprojekt mit eigener Codebasis, Infrastruktur und Datenbank. Microservices arbeiten zusammen und kommunizieren über die Web-API oder Nachrichtenwarteschlangen, um auf eingehende Ereignisse zu reagieren.

In dem Buch „Building Microservices“ definiert Sam Newman Microservices prägnant als „kleine autonome Dienste, die zusammenarbeiten“ – eine Definition, die die drei Elemente von Microservices umfasst.

Die Codebasis eines Microservices ist „klein“, weil sie sich auf eine Funktion konzentriert; „klein“ bedeutet, dass ein einzelner Entwickler oder ein kleines Team den Code erstellen und verwalten kann.
„Autonom“ bedeutet, dass Microservices bei Bedarf bereitgestellt und skaliert werden können, ohne dass die für andere Microservices verantwortlichen Teams konsultiert werden müssen, wenn Änderungen innerhalb des Microservices auftreten.
Dies ist möglich, weil Microservices, wenn sie „zusammenarbeiten“, über klar definierte APIs oder ähnliche Mechanismen kommunizieren, die das Innenleben der Microservices nicht offenlegen.
Für grundlegendere Konzepte von „Microservices“ lesen Sie bitte unseren Artikel „Microservices in einem Artikel verstehen“ .

Eingangscontroller

Der Ingress-Controller ist ein dedizierter Lastenausgleich für Kubernetes-Umgebungen (und andere Container-Umgebungen). Kubernetes ist der De-facto-Standard für die Verwaltung von Containeranwendungen.

Für viele Unternehmen erhöht die Migration von Produktions-Workloads auf Kubernetes die Herausforderungen und die Komplexität der Verwaltung des Anwendungsverkehrs. Der Eingangscontroller abstrahiert die Komplexität des Kubernetes-Anwendungsverkehrsroutings und stellt eine Brücke zwischen Kubernetes-Diensten und externen Diensten her.

Die Funktionen des Kubernetes Ingress Controllers sind wie folgt:

  • Akzeptieren Sie Datenverkehr von außerhalb der Kubernetes-Plattform und verteilen Sie die Last auf Pods (Container), die innerhalb der Kubernetes-Plattform ausgeführt werden
  • Kann ausgehenden Datenverkehr für Dienste innerhalb des Clusters verwalten, die mit anderen Diensten außerhalb des Clusters kommunizieren müssen.
  • Konfigurieren Sie die Verwendung der Kubernetes-API, um ein Objekt mit dem Namen „Ingress Resource“ bereitzustellen.
  • Überwachen Sie Pods, die in Kubernetes ausgeführt werden, und aktualisieren Sie automatisch die Lastausgleichsregeln, nachdem Pods zum Dienst hinzugefügt oder daraus entfernt werden

Service-Mesh

Laut der Definition von The New Stack ist Service Mesh eine Technologie, die darauf abzielt, „die Sicherheit, Beobachtbarkeit und Flusskontrolle verteilter Systeme zu verbessern“. Genauer gesagt ist ein Service Mesh eine Komponente eines Container-Umgebungs-Orchestrierungstools wie Kubernetes.

Es ist in der Regel für eine Reihe von Funktionen verantwortlich, darunter die Weiterleitung des Datenverkehrs zwischen Containeranwendungen, die Funktion als Schnittstelle für die Definition automatischer Service-to-Service-Mutual-TLS-Richtlinien (mTLS) und die Durchsetzung dieser Richtlinien sowie die Bereitstellung von Einblicken in die Anwendungsverfügbarkeit und -sicherheit. Wie die Gesamtsituation von Kubernetes besteht auch das Service Mesh aus einer Kontrollebene, einer Verwaltungsebene und einer Datenebene.

Service Mesh verwaltet die Verkehrsverwaltung und -sicherheit normalerweise auf eine Weise, die für containerisierte Anwendungen transparent ist. Durch Funktionen wie SSL/TLS-Offloading und Lastausgleich entfällt bei Service Mesh die Notwendigkeit für Entwickler, Sicherheit oder Serviceverfügbarkeit in jeder Anwendung einzeln zu implementieren. Das Service Mesh auf Unternehmensebene bietet Lösungen für verschiedene „Probleme“:

  • Sicherer Datenverkehr mit Ende-zu-Ende-Verschlüsselung und mTLS
  • Orchestrierung mit Injektionsmanagement, Sidecar-Management und Kubernetes-API-Integration
  • Verwalten Sie den Dienstverkehr, einschließlich Lastausgleich, Verkehrskontrolle (Ratenbegrenzung und Leitungsunterbrechung) und Verkehrsgestaltung (Graustufenbereitstellung, A/B-Tests, Blau-Grün-Bereitstellung).
  • Verbessern Sie die Überwachung und Visualisierung des Service-zu-Service-Verkehrs mit beliebten Tools wie Prometheus und Grafana
  • Vereinfachen Sie die Verwaltung des eingehenden und ausgehenden Kubernetes-Verkehrs durch den nativ integrierten Ingress-Controller.

Ein Service Mesh kann klein sein und sich auf eine bestimmte Funktion konzentrieren; es kann groß sein und einen umfassenden Satz an Netzwerk- und Cluster-Management-Tools (wie Istio) umfassen; oder es kann alles dazwischen sein. Je größer und komplexer das Service Mesh ist, desto sinnvoller ist eine separate Managementebene.


Die einzige offizielle chinesische Community von NGINX, alle unter nginx.org.cn

Weitere technische Informationen zu NGINX, interaktive Fragen und Antworten, Kursreihen und Veranstaltungsressourcen: Offizielle Website der Open Source Community | Offizielles WeChat-Konto

 

IntelliJ IDEA 2023.3 & JetBrains Family Bucket jährliches Hauptversions-Update neues Konzept „defensive Programmierung“: Machen Sie sich einen stabilen Job GitHub.com betreibt mehr als 1.200 MySQL-Hosts, wie kann man nahtlos auf 8.0 aktualisieren? Das Web3-Team von Stephen Chow wird nächsten Monat eine unabhängige App starten. Wird Firefox eliminiert? Visual Studio Code 1.85 veröffentlicht, schwebendes Fenster Die US-amerikanische CISA empfiehlt den Verzicht auf C/C++, um Schwachstellen in der Speichersicherheit zu beseitigen. Yu Chengdong: Huawei wird nächstes Jahr bahnbrechende Produkte auf den Markt bringen und die Branchengeschichte neu schreiben. TIOBE Dezember: C# wird voraussichtlich die Programmiersprache des Jahres. Ein Artikel geschrieben von Lei Jun vor 30 Jahren: „Prinzip und Design des Expertensystems zur Computervirenbestimmung“
{{o.name}}
{{m.name}}

Supongo que te gusta

Origin my.oschina.net/u/5246775/blog/10112278
Recomendado
Clasificación