Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Lösungsmöglichkeiten
In diesem Artikel wird eine Lösungsidee beschrieben. Ihr Cloudarchitekt kann diesen Leitfaden verwenden, um die Hauptkomponenten einer typischen Implementierung dieser Architektur zu visualisieren. Verwenden Sie diesen Artikel als Ausgangspunkt, um eine gut durchdachte Lösung zu entwerfen, die den spezifischen Anforderungen Ihrer Workload entspricht.
Portabilität ist eine Beschaffungs- und Betriebsanforderung für moderne Anwendungen. Teams muss Anwendungen entwerfen, die umkehrbar sind und zu verschiedenen Zielen portiert werden können, darunter souveräne Clouds, lokale Infrastruktur und zeitweise verbundene Edgeumgebungen. Die folgenden Bedingungen fördern die Notwendigkeit der Portabilität:
- Vorgaben zu Datenresidenz und Datensouveränität
- Branchenspezifische Compliance-Mandate
- Intermittierende Konnektivitätsumgebungen
- Geschäftskontinuitätsanforderungen
Arc-fähige Kubernetes-, Radius- und Edge-KI-Muster schaffen eine praktische Grundlage für ein Architekturmodell, das die Portabilitätsanforderungen erfüllen kann. Dieses Architekturmodell ist die Lösung für adaptive Apps .
Adaptive Apps trennen anwendungsspezifische Absichten von der umgebungsspezifischen Implementierung. Entwickler beschreiben Workloads und erforderliche Funktionen einmal, und Plattformbetreiber binden diese tragbaren Ressourcen an lokale Dienstrezepte, Richtlinien, Identität, Netzwerke, Observierbarkeit und Infrastruktur, die für jede Umgebung geeignet sind. Dieser Artikel beschreibt die Lösung für adaptive Anwendungen und zeigt, wie Fähigkeitsportfolios, offene Protokolle und Radius-basierte Bereitstellungsworkflows es Anwendungen ermöglichen, konsistent, verwaltbar und betriebsfähig zu bleiben, unabhängig davon, wo sie ausgeführt werden.
Architecture
Eine mit Radius modellierte Anwendung besteht aus einer Reihe von Ressourcen. Sie können diese Ressourcen in Anwendungskomponenten und Ressourcen auf Plattformebene kategorisieren, die die Anwendung unterstützen. Die Sammlung dieser Ressourcen auf Plattformebene wird als Funktionsportfolio bezeichnet.
Eine Radius-Ressource definiert eine abstrakte Schnittstelle zu einer Plattformebenenfunktion. Wenn Sie eine Radius-Ressource in einer Zielumgebung bereitstellen, kann ein zielspezifisches Rezept diesen Ressourcentyp einer konkreten plattformspezifischen Implementierung zuordnen. Sie projizieren das Funktionsportfolio in verschiedene Zielumgebungen über entsprechende Rezepte.
Diese Architektur bietet der Anwendung die erforderlichen Funktionen, ohne dass der Anwendungscode für jede bestimmte Plattform neu geschrieben werden muss.
Laden Sie eine Visio-Datei dieser Architektur herunter.
Die Architektur ermöglicht die Portabilität durch zwei komplementäre Abstraktionsebenen.
Zunächst bietet Radius eine Abstraktion des Anwendungsmodells, die Anwendungsanforderungen von plattformspezifischen Implementierungen trennt. Abstrakte Ressourcentypen stellen Ressourcen wie Datenbanken, Caches oder Messagingsysteme dar, die verschiedenen Implementierungen über umgebungsspezifische Rezepte zugeordnet werden können. Mit diesem Ansatz können Sie dieselbe Anwendungsdefinition in mehreren Umgebungen bereitstellen, ohne Bereitstellungsartefakte zu ändern.
Zweitens können Anwendungen eine Programmiermodellstraktion übernehmen. Anwendungen können mit Abhängigkeiten über weit verbreitete Standards und Protokolle oder über eine optionale Sidecar-basierte Abstraktionsebene wie Dapr interagieren. Diese Ansätze reduzieren die Anwendungskopplung mit plattformspezifischen Dienst-APIs und verbessern die Portabilität in allen Umgebungen.
Diese Abstraktionen bieten eine überzeugende "einmal geschriebene, in vielen Umgebungen ausgeführte" Erfahrung, aber sie führen auch Kompromisse ein. Um portabel zu bleiben, müssen Anwendungen möglicherweise die direkte Verwendung plattformspezifischer Features und Optimierungen einschränken, die nicht in allen Zielumgebungen verfügbar sind. Wenn Sie ein Sidecar oder eine allgemeine Programmierabstraktion verwenden, um Portabilität zu gewährleisten, müssen Sie die durch diese Abstraktionsebene vorgegebenen Einschränkungen akzeptieren.
Teams müssen sich dazu verpflichten, das Anwendungsverhalten für alle unterstützten Bereitstellungsziele zu validieren, was die Test- und Betriebskomplexität erhöht. Betrachten Sie Portabilität als eine bewusste architektonische Entscheidung, bei der eine engere Plattformintegration zugunsten von Bereitstellungsflexibilität, geringerer Herstellerbindung und mehr Konsistenz über heterogene Umgebungen hinweg geopfert wird.
Arbeitsablauf
Der folgende Workflow entspricht dem vorhergehenden Diagramm. Der Workflow beschreibt eine Beispiel-App, die typische Komponenten wie Front-End, Back-End, AI-Agent, Nachrichtenbroker und OpenID Connect (OIDC)-Identitätsanbieter enthält.
Ein Anwendungsentwickler verwendet eine Radius-Anwendungsdefinition, um die Workload einmal zu beschreiben.
Die Anwendungsdefinition besteht aus einer Liste von Ressourcen, z. B. einer
Applications.Core/containersRessource, die ein containerisiertes Nutzlast-Front-End und back-End beschreibt. Das Muster für adaptive Apps definiert auch einige Ressourcentyperweiterungen, die allgemeine Plattformfunktionen abstrahieren, um die Anwendung von einer bestimmten Plattform zu entkoppeln.Statt neue Datenebenenabstraktionen zu definieren, verwenden adaptive Apps weit verbreitete Open-Source-Komponenten und offene Protokolle wie OIDC für die Authentifizierung und Message Queuing Telemetry Transport (MQTT) für Messaging. Dieser Ansatz verhindert, dass die Anwendung durch eine abstrakte Schnittstelle eingeschränkt wird und ermöglicht es, die vollständigen Funktionen der entsprechenden Protokolle direkt zu verwenden.
Ressourcentyp Purpose Radius.Resources/agentGuardrailsAgentspezifische Governancerichtlinien Radius.Resources/aiModelsKI-Modelle, die KI-Rückschlüsse unterstützen Radius.Resources/governanceRichtlinien für die Unternehmensführung Radius.Resources/mqttBrokersNachrichtenbroker basierend auf MQTT Radius.Resources/workloadIdentitiesWorkloadidentitäten, die zur Identifizierung einer Workload oder eines Agenten innerhalb einer Anwendung verwendet werden Der Entwickler kann Anwendungscode mithilfe einer portablen API erstellen oder aktualisieren.
Auf der Ebene des Programmiermodells kann eine Anwendung zusätzlich Sidecar-Technologien wie Dapr einsetzen, das plattformagnostische APIs für gängige Aufgaben wie Pub/Sub, Zustandsverwaltung und die Verwaltung von Geheimnissen bereitstellt. Radius hat native Unterstützung für Dapr Sidecars.
Brownfield-Dienste, die bereits Azure SDKs verwenden, können weiterhin in Zielen funktionieren, wenn die erforderlichen Azure Endpunkte, Identitätsflüsse und Netzwerkkonnektivität verfügbar sind. Dienste, die allgemeine Protokolle verwenden, können weiterhin funktionieren, wenn kompatible Implementierungen bereitgestellt werden. Für eine breitere Portabilität können neue Dienste Dapr-APIs einführen, um Anwendungen bei der Anpassung an mehr Plattformvariationen zu unterstützen.
Ein Plattformoperator initialisiert für jedes Ziel ein Fähigkeitsportfolio.
Der Betreiber wählt eines der sechs vordefinierten Portfolios aus:
min, ,core,ent,min-ai,core-ai, oderent-ai, basierend auf den Anforderungen der Umgebung für Fußabdruck und Compliance. Der Betreiber installiert das Portfolio mithilfe eines Helm-Charts. Die folgende Tabelle zeigt, ob die vordefinierten Portfolios verschiedene Protokolle unterstützen.Portefeuille Identität (OIDC) Dienstgitter (Istio) Beobachtbarkeit (OTel) Steuerung (OPA) On-Cluster AI (Kaito) Agentenschutzschiene min✓ ✗ ✗ ✗ ✗ ✗ core✓ ✓ ✓ ✗ ✗ ✗ ent✓ ✓ ✓ ✓ ✗ ✗ min-ai✓ ✗ ✗ ✗ ✓ ✗ core-ai✓ ✓ ✓ ✗ ✓ ✓ ent-ai✓ ✓ ✓ ✓ ✓ ✓ Adaptive Apps bieten auch ein Befehlszeilentool, um Infrastrukturkonfigurationsschritte über die Helm-Installation hinaus zu erleichtern und Infrastrukturinformationen für die Anwendungsbereitstellung zur Verfügung zu stellen.
Radius bindet die Anwendung an umgebungsspezifische Rezepte.
Wenn
rad deploygegen den Ziel-Arbeitsbereich ausgeführt wird, stellt ein mit der Umgebung registriertes Rezept jede portierbare Ressource in der adaptiven App bereit. Beispielsweise wird bei der Bereitstellung der App in einer lokalen Kubernetes-Umgebung einem vonRadius.Resources/aiModelsverwalteten lokalen Small Language Model (SLM) zugeordnet. Die gleiche Ressource wird bei bereitstellung in einer Cloudumgebung in einen OpenAI- oder Azure OpenAI-Endpunkt aufgelöst. Radius fügt Verbindungsinformationen für Abhängigkeiten ein, die von der Anwendungsdefinition explizit deklariert werden.Laden Sie eine Visio-Datei dieses Diagramms herunter.
Komponenten
Radius ist ein Open-Source-Anwendungsmodell, das einen Workload als Graph tragbarer Ressourcentypen beschreibt und jeden Typ bei der Bereitstellung in ein umgebungsspezifisches Rezept auflöst. In dieser Architektur ist Radius der primäre Vertrag zwischen Anwendungsteams und Plattformbetreibern. Adaptive Apps verwenden auch Radius-Tools, um Anwendungen in Zielumgebungen bereitzustellen.
Funktionsportfolios sind Verträge zwischen Anwendungen und ihren Hostingplattformen. Diese Architektur umfasst sechs vordefinierte Portfolios für Fähigkeitsstufen, die von einer grundlegenden Edge-Bereitstellung bis hin zu einer vollständigen Unternehmensbereitstellung mit Richtliniendurchsetzung und KI im Cluster reichen. Plattformbetreiber installieren Funktionsportfolios als Helm-Diagramme.
KI-basierte Tools bieten eine CLI für die Infrastrukturkonfiguration und KI-unterstützte Migration von Brownfield-Anwendungen. In dieser Architektur helfen die Tools beim Migrieren von Brownfield-Anwendungen, einschließlich Microservices-Anwendungen, älteren Anwendungen und Großrechneranwendungen, zum Radius-Anwendungsmodell.
Details zum Szenario
Ein Workloadteam muss möglicherweise dieselbe Anwendung in einer heterogenen Umgebung ausführen, die die folgenden Umgebungen umfassen kann:
- Eine Public-Cloud-Region für elastische Workloads
- Eine souveräne Region zur Erfüllung von Anforderungen an die Datenresidenz
- Ein lokales Rechenzentrum für latenzsensitive Verarbeitung
- Eine Flotte von Remote-Edgeclustern mit zeitweiliger Konnektivität
Jede Umgebung verfügt in der Regel über einen eigenen Identitätsanbieter, eine Dienstgitterüberlagerung, einen Observability-Stapel, ein Richtlinienmodul und eine KI-Strategie. Ohne einen einheitlichen Vertrag müssen Anwendungsteams entweder die Codebasis für jedes Ziel separat abspalten, sich an eine einzige Plattform binden oder jedes Mal Refaktorierungskosten in Kauf nehmen, wenn sie eine neue Umgebung hinzufügen.
Adaptive Apps beheben dieses Problem, indem sie die Plattform, nicht die Anwendung, verantwortlich für die Aufnahme von Umgebungsvariationen macht. Die Anwendung wird einmal für das Radius-Anwendungsmodell und optional das Dapr-Programmiermodell erstellt. Jede Zielumgebung installiert ein Funktionsportfolio, das die für die Anwendung erforderlichen Funktionen verfügbar macht. Eine Recipe-Layer verknüpft portable Ressourcen bei der Bereitstellung mit umgebungsspezifischen Implementierungen.
Die Architektur macht hinsichtlich der Kontrollebene bewusst keine Vorgaben. Anbieter von Funktionen können Portfolios über Helm, Arc-Erweiterungen, Bicep, Terraform oder benutzerdefinierte Installationsprogramme bereitstellen. Anwendungen bleiben portabel, solange die resultierende Umgebung dem Funktionsvertrag des Portfolios entspricht.
Potenzielle Anwendungsfälle
Souveräne und regulierte Cloudbereitstellungen
Eine regulierte Workload muss in einer souveränen Cloud oder auf kundenseitig kontrollierter Infrastruktur ausgeführt werden und gleichzeitig dieselbe Codebasis wie die Version der öffentlichen Cloud nutzen. Das Portfolio
core-aioderent-aibietet über verschiedene Bereitstellungsziele hinweg eine einheitliche Zusicherung von Funktionen und ermöglicht die Portierbarkeit von Anwendungen. Die Zielumgebung erzwingt die spezifische Implementierung von Funktionen und Kontrollen, einschließlich Datenhaltung, Verschlüsselung, Zugriffssteuerung, Überwachung und Compliance-Zertifizierungen, um souveränitäts- und behördliche Anforderungen zu erfüllen.Brownfield-Modernisierung ohne Replatforming
Ein Workloadteam modernisiert eine ältere Microservices-Anwendung inkrementell, indem Radius-Ressourcendefinitionen eingeführt werden, um seine Infrastrukturabhängigkeiten zu beschreiben und dapr-Funktionen selektiv zu übernehmen. KI-gestützte Umgestaltungstools helfen dabei, Teile der Migration zu beschleunigen. Mit diesem Ansatz können Teams Anwendungen modernisieren, um die Portabilität, Observierbarkeit und operative Konsistenz in einem Tempo zu verbessern, das den geschäftlichen und technischen Anforderungen entspricht.
Hybride KI-Ableitung am Rand
Eine Einzelhandels- oder Industrie-Workload führt denselben
aiModel-Dienst auf Azure in der Zentrale unter Verwendung von Azure OpenAI und auf Azure Local-Clustern in Geschäften oder Werken unter Verwendung eines von Kaito gehosteten Open-Source-Modells aus. Der Anwendungscode ist identisch, und nur dasaiModelRezept unterscheidet sich.Zeitweise verbundener Rahmen
Eine Bereitstellung für Verteidigungs-, maritime oder abgelegene Standorte betreibt das
min-ai-Portfolio auf einem einzelnen Cluster mit begrenzten Ressourcen, ohne von in der Cloud gehosteten Identitäts- oder KI-Diensten abhängig zu sein. Dieselbe Workload profitiert bei der erneuten Bereitstellung in AKS mit demcore-aiPortfolio automatisch von Service Mesh und Observability-Funktionen. Dasent-aiPortfolio umfasst auch die Durchsetzung von Governance-Richtlinien.Multicloud-Bereitstellung
Ein Workloadteam stellt modellierte Anwendungsressourcen mithilfe von
rad deployin einem anderen Arbeitsbereich bereit, sofern jedes Ziel denselben Capability-Vertrag implementiert. Sie behandeln Workload-Bursting und Notfallwiederherstellung als separate Bedenken. Eine nutzbare sekundäre Umgebung benötigt auch Kapazität, die Verfügbarkeit von Artefakten und Daten, Abhängigkeitssequenzierung, Identitäten, Netzwerkanbindung, Datenverkehrssteuerung, Zustandsprüfungen und getestete Failover-/Failback-Verfahren.
Beitragende
Microsoft verwaltet diesen Artikel. Die folgenden Mitwirkenden haben diesen Artikel geschrieben.
Hauptautoren:
- Haishi Bai | Principal Software Architect
- Boris Scholl | VP Engineering
- Will Tsai | Principal Product Manager
Um nicht öffentliche LinkedIn-Profile zu sehen, melden Sie sich bei LinkedIn an.
Nächster Schritt
- Entdecken Sie das Repository für adaptive Apps auf GitHub