Technologieaustausch

Cloud-nativ

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Cloud-nativ

eine Definition

Die maßgeblicheren Definitionen stammen derzeit hauptsächlich von Pivotal und der Cloud Native Computing Foundation (CNCF).

1.1 Zentral

  • 4 Kernpunkte:
    DevOps持续交付微服务容器化
  • Sechs Merkmale:
    模块化(Modularity)可观测性(Observability)可部署性(Deployability)
    可测试性(Testability)可处理性(Disposability)可替换性(Replaceability)
  • Cloud Native ist eine Sammlung von Ideen, die sowohl Technologie (Microservices, agile Infrastruktur) als auch Management (DevOps, Continuous Delivery, Conway's Law, Reorganisation usw.) umfassen.

1.2 CNCF

  • Cloud-native Technologie hilft Unternehmen, elastisch skalierbare Anwendungen in neuen dynamischen Umgebungen wie Public Cloud, Private Cloud und Hybrid Cloud 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 cloudnative Technologien für Ingenieure einfacher, häufige und vorhersehbare größere Änderungen an Systemen vorzunehmen.

2. Technische Eigenschaften

2.1 Microservice-Architektur:

Cloud Native befürwortet den Einsatz einer Microservices-Architektur zum Erstellen von Anwendungen und teilt Anwendungen in mehrere kleine, unabhängige und unabhängig voneinander bereitstellbare Dienste auf, die sich jeweils auf die Lösung spezifischer Geschäftsfunktionen konzentrieren. Dies verbessert die Skalierbarkeit, Flexibilität und Wartbarkeit der Anwendung.

2.2 Containerisierte Bereitstellung:

Cloud-native Anwendungen werden in der Regel mithilfe von Container-Technologie wie Docker bereitgestellt, die eine plattformübergreifende, portable und konsistente Bereitstellung ermöglicht, indem die Anwendung und ihre Abhängigkeiten in Container-Images verpackt werden. Die Containerisierung bietet außerdem die Vorteile der Isolation und Ressourcennutzung, wodurch Anwendungen effizienter ausgeführt werden können.

2.3 Dynamische Orchestrierung und automatisiertes Management:

Bei der Cloud-Nativeisierung steht der Einsatz automatisierter Tools und Plattformen (wie Kubernetes) im Vordergrund, um Anwendungen dynamisch zu orchestrieren und zu verwalten, Vorgänge wie Containerbereitstellung, Skalierung, Upgrades und Überwachung automatisch zu verwalten, die Anwendungsflexibilität und -zuverlässigkeit zu verbessern und die betriebliche Komplexität zu reduzieren .

2.4 Elastische Skalierung:

Cloud Native ermöglicht eine elastische Skalierung von Anwendungen entsprechend den Lastbedingungen. Durch automatisierte Container-Orchestrierung und Service-Erkennung können Containerinstanzen dynamisch hinzugefügt oder entfernt werden, um sich an unterschiedliche Laständerungen anzupassen und die Anwendungsleistung und Ressourcennutzung zu verbessern.

2.5 Kontinuierliche Bereitstellung und Bereitstellung:

Die Cloud-Nativeisierung befürwortet den Einsatz von Methoden der kontinuierlichen Integration und kontinuierlichen Bereitstellung (CI/CD), um eine schnelle Bereitstellung und Bereitstellung von Anwendungen zu erreichen. Durch automatisierte Build-, Test- und Bereitstellungsprozesse können Anwendungsaktualisierungen schnell und zuverlässig in die Produktionsumgebung übertragen werden Risiko und Zeitaufwand der Veröffentlichung.


Drei Technologie-Stacks

3.1 Containerisierung

  • Container-Engine: Docker ist beispielsweise eine Open-Source-Anwendungs-Container-Engine, die Anwendungen und ihre Abhängigkeiten in standardisierte Container-Images verpackt. Container-Images können in jeder Umgebung ausgeführt werden, die Docker unterstützt, wodurch die Anwendungskonsistenz in Entwicklungs-, Test- und Produktionsumgebungen gewährleistet wird.
  • Container-Laufzeit: Wie Containerd oder Runc ist sie für die Lebenszyklusverwaltung des Containers verantwortlich, einschließlich der Containererstellung, des Startens, Stoppens, Löschens und anderer Vorgänge sowie der Interaktion mit den Ressourcen des Hosts.
  • Container-Orchestrierung: Kubernetes (K8s) beispielsweise ist derzeit die beliebteste Container-Orchestrierungsplattform. Sie bietet einen leistungsstarken Satz von APIs und Toolsets für die automatisierte Container-Bereitstellung, Planung, Erweiterung und Kontraktion, Lastausgleich, fortlaufende Upgrades und Selbstheilung ., Diensterkennung, Konfigurationsverwaltung und andere Vorgänge.

3.2 Microservice-Architektur

  • Microservices: Zerlegen Sie eine große monolithische Anwendung in eine Reihe kleiner, unabhängiger Dienste. Jeder Dienst konzentriert sich auf eine einzelne Geschäftsfunktion und interagiert über APIs. Microservices arbeiten über einfache Kommunikationsmechanismen (wie RESTful API, gRPC usw.) zusammen, was dazu beiträgt, die Entwicklungsgeschwindigkeit zu erhöhen, die Kopplung zu reduzieren und die Skalierbarkeit und Fehlertoleranz des Systems zu verbessern.

3.3 Kommunikation zwischen Diensten

  • RESTful API:
    Basierend auf dem HTTP-Protokoll und seinen verschiedenen Methoden (GET, POST, PUT, DELETE usw.) ist die Schnittstelle in einem ressourcenorientierten Architekturstil konzipiert und wird häufig bei Interaktionen zwischen Microservices verwendet.
  • gRPC:
    Ein von Google entwickeltes, leistungsstarkes, universelles RPC-Framework (Remote Procedure Call), das auf dem HTTP/2-Protokoll und dem Protocol Buffers-Serialisierungsprotokoll basiert und für Szenarien mit hohen Leistungs- und Effizienzanforderungen geeignet ist.
  • Nachrichtenwarteschlange:
    Wie RabbitMQ, Apache Kafka, Amazon SQS usw. werden sie als asynchrone Kommunikations-Middleware verwendet, um Dienste zu entkoppeln, Spitzenlasten zu bewältigen und eine ereignisgesteuerte Architektur zu implementieren.

3.4 Servicenetz

  • Service-Mesh-Technologie:
    Wie Istio, Linkerd, Envoy usw. liegen sie zwischen Diensten. Als transparente Infrastrukturschicht sind sie für Netzwerkkommunikation, Routing, Sicherheit, Beobachtbarkeit und andere Funktionen zwischen Diensten verantwortlich. Ein Service Mesh abstrahiert die Komplexität der Kommunikation zwischen Diensten, sodass Entwickler diese Funktionen nicht mehr in Anwendungscode implementieren müssen.

3.5 Kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD)

  • CI/CD-Tools:
    Wie Jenkins, GitLab CI/CD, GitHub Actions, Azure DevOps usw., die zur Automatisierung des Build-, Test-, Verpackungs-, Veröffentlichungs- und Bereitstellungsprozesses der Softwareentwicklung verwendet werden. CI/CD-Praktiken tragen dazu bei, Iterationszyklen zu verkürzen, die Softwarequalität zu verbessern und Fehler durch manuelle Eingriffe zu reduzieren.

3.6 Deklarative Infrastruktur

  • Deklarative Konfiguration:
    Verwenden Sie Konfigurationsdateien im YAML- oder JSON-Format, um den Zielstatus der Anwendungsbereitstellung zu beschreiben, z. B. die YAML-Manifeste von Kubernetes. Entwickler müssen lediglich den gewünschten Zustand definieren und das System kümmert sich automatisch darum, wie dieser Zustand erreicht wird.
  • Infrastructure as Code (IaC)-Verwaltungstools:
    Wie Terraform, CloudFormation usw. werden für die Infrastrukturverwaltung über Cloud-Plattformen hinweg verwendet, um Versionskontrolle, automatisierte Bereitstellung und Konsistenzverwaltung der Infrastruktur zu erreichen.

3.7 DevOps-Toolkette

  • Protokollaggregation:
    Wie ELK Stack (Elasticsearch, Logstash, Kibana), Splunk, Datadog usw., die zum Sammeln, Analysieren, Speichern, Suchen, Analysieren und Visualisieren von Protokolldaten verwendet werden.
  • Monitor:
    Beispielsweise bieten Prometheus, Grafana, New Relic, Dynatrace usw. eine Überwachung der System- und Anwendungsleistung.
  • Fehlerverfolgung:
    Wie Sentry, Bugsnag, Rollbar usw., die zum Erfassen, Analysieren und Verwalten von Ausnahmen und Fehlern während der Anwendungslaufzeit verwendet werden.
  • Chaos-Engineering:
    Wie Chaos Monkey, Chaos Toolkit usw., indem Fehler proaktiv in die Produktionsumgebung eingeführt werden, um die Leistung und Wiederherstellungsfähigkeiten des Systems unter abnormalen Bedingungen zu testen.

3.8 Serverloses Computing (Serverlos)

  • Serverloser Dienst:
    Wie AWS Lambda, Google Cloud Functions, Azure Functions usw., die es Entwicklern ermöglichen, Codefragmente (Funktionen) zu schreiben und auszuführen, ohne sich um den Betrieb und die Wartung des zugrunde liegenden Servers zu kümmern. Sie werden nur bei Bedarf ausgeführt und in Rechnung gestellt ausgelöst wird.

Vier Anwendungsszenarien

Cloud-native Technologie hat in vielen Bereichen breite Anwendungsmöglichkeiten, unter anderem:

  • Umfangreiche Internetanwendungen: Erstellen Sie hochverfügbare, leistungsstarke und hoch skalierbare Internetanwendungen.
  • Finanzgeschäft: Bereitstellung sicherer, zuverlässiger und effizienter Methoden für die Anwendungsentwicklung und -bereitstellung, um die Zuverlässigkeit und Sicherheit von Finanzgeschäftsanwendungen zu verbessern.
  • Künstliche Intelligenz und Big Data: Bereitstellung effizienter, skalierbarer und elastischer Anwendungsentwicklungs- und Bereitstellungsmethoden für KI- und Big-Data-Anwendungen.
  • Internet der Dinge: Verarbeiten Sie riesige Sensordaten, erreichen Sie eine schnelle Bereitstellung und elastische Skalierung und verbessern Sie die Zuverlässigkeit und Wartbarkeit von Anwendungen für das Internet der Dinge.
  • Blockchain: Bereitstellung effizienter, skalierbarer und elastischer Anwendungsentwicklungs- und Bereitstellungsmethoden für Blockchain-Anwendungen.

Das ist alles über Cloud Native, vielen Dank fürs Lesen!