Verwenden von Azure Batch zum Ausführen von FSI-Workloads (Financial Service Industry)

In der Finanzdienstleistungsbranche (Financial Services Industry, FSI) ist die effiziente und sichere Ausführung rechenintensiver Workloads von entscheidender Bedeutung. Azure Batch bietet eine skalierbare und kostengünstige Lösung für die Verwaltung dieser Workloads in der Cloud. Dieser Artikel enthält ein umfassendes Handbuch zur Verwendung von Azure Batch zum Ausführen von FSI-Workloads auf Azure. Es behandelt die Architektur, den Workflow, die Komponenten und Best Practices, um eine optimale Leistungs-, Sicherheits- und Kostenverwaltung zu gewährleisten.

Architektur

Das folgende Diagramm zeigt die Architektur für die Ausführung von FSI-Workloads auf Azure mit Azure Batch.

Diagramm mit einer Architektur für die Ausführung von FSI-Workloads auf Azure unter Verwendung von Azure Batch.

Laden Sie eine Visio-Datei herunter, die dieses Architekturdiagramm enthält.

Workflow

In diesem Beispielszenario wird veranschaulicht, wie FSI-Workloads mithilfe von Azure Batch auf Azure ausgeführt werden. Im Folgenden finden Sie einen typischen Workflow, dem Sie folgen können:

  1. Stellen Sie mithilfe von VPN Gateway eine Verbindung mit dem privaten Netzwerk her. Stellen Sie alternativ eine Verbindung zu den virtuellen Jumpbox-Computern (VMs) her, indem Sie das Remotedesktopprotokoll (RDP) oder das Secure Shell (SSH) mit Azure Bastion verwenden. Beide Ansätze können für die Verbindung zum privaten Netz verwendet werden.
  2. Laden Sie alle Datasets zur Verarbeitung in das Speicherkonto mithilfe der Azure CLI, Azure Storage-Explorer oder azcopy hoch.
  3. Senden Von Aufträgen zum Verarbeiten der Daten an den Batchdienst mithilfe der Azure CLI, des Batch-Explorers oder anderer Tools. Für diese Beispielbereitstellung haben wir ein benutzerdefiniertes Befehlszeilentool entwickelt, das Sie auch zum Übermitteln von Aufträgen verwenden können.
  4. Ändern Sie die Größe des Pools, um dem Pool Computeknoten hinzuzufügen. Standardmäßig erstellt die Implementierung einen Pool ohne Computeknoten.
  5. Laden Sie Ergebnisse aus dem Speicherkonto herunter. Nach Abschluss des Auftrags werden die Ergebnisse im Speicherkonto gespeichert. Diese Ergebnisse können dann mithilfe der Azure CLI, Azure Storage-Explorer oder azcopy heruntergeladen werden.

Komponenten

Diese Architektur umfasst mehrere Azure Dienste und ist in zwei Kategorien von Ressourcen unterteilt: Hubressourcen und Speichenressourcen. Weitere Informationen zur Hub- und Spoke-Netzwerktopologie finden Sie weiter unten in diesem Artikel. Die jeweiligen Dienste und ihre Rollen werden in den folgenden Abschnitten beschrieben.

Hub-Ressourcen

Bei den im Hubnetzwerk bereitgestellten Ressourcen handelt es sich um freigegebene Ressourcen, die die Kommunikation zwischen dem Spoke-Netzwerk und der Außenwelt ermöglichen, filtern und überwachen.

Die folgenden Ressourcen werden im Hubnetzwerk bereitgestellt:

  • Azure Firewall bietet Schutz auf Netzwerkebene für das Netzwerk. Die Firewall ist so konfiguriert, dass nur bestimmter eingehender und ausgehender Netzwerkdatenverkehr zugelassen wird. Diese Konfiguration trägt dazu bei, das Netzwerk vor böswilligen Angriffen zu schützen und den ein- und ausgehenden Datenverkehr zu überwachen. Die Regeln sollten basierend auf Ihren geschäftsspezifischen Regeln und Vorschriften aktualisiert werden.

  • Azure VPN Gateway ermöglicht eine von zwei Möglichkeiten, eine Verbindung mit dem Hubnetzwerk über das öffentliche Internet herzustellen. Die andere Möglichkeit besteht darin, Azure Bastion Dienst zu verwenden. Dem VPN-Gateway wird eine öffentliche IP-Adresse zugewiesen, damit VPN-Clients über das öffentliche Internet eine Verbindung herstellen können.

  • Azure Bastion ermöglicht eine von zwei Möglichkeiten, eine Verbindung mit Jumpboxen aus dem öffentlichen Internet herzustellen. Die andere Möglichkeit besteht darin, VPN Gateway zu verwenden. Azure Bastion wird im Hubnetzwerk bereitgestellt und erhält eine öffentliche IP-Adresse, sodass Benutzer über das öffentliche Internet eine Verbindung damit herstellen können.

  • Linux Jumpbox ist eine Linux-VM mit vorinstallierten Tools für den Zugriff auf die bereitgestellten Ressourcen, die Übermittlung von Aufträgen und die Überwachung ihres Fortschritts. Der Jumpbox wird im Hubnetzwerk bereitgestellt und kann über das lokale Netzwerk über das VPN-Gateway oder Azure Bastion darauf zugegriffen werden.

  • Windows Jumpbox ist eine Windows VM mit vorinstallierten Tools, um auf die bereitgestellten Ressourcen zuzugreifen, Aufträge zu übermitteln und den Fortschritt zu überwachen. Der Jumpbox wird im Hubnetzwerk bereitgestellt und kann über das lokale Netzwerk über das VPN-Gateway oder Azure Bastion darauf zugegriffen werden.

  • Log Analytics Workspace ermöglicht die Sammlung von Protokollen. Wenn möglich, werden die bereitgestellten Ressourcen so konfiguriert, dass Protokolle im Arbeitsbereich gespeichert werden. Die Protokolle werden verwendet, um die Ressourcen zu überwachen und Probleme zu beheben. In Kombination mit Azure-Anwendung Insights bietet es Leistungsüberwachungs- und Problembehandlungsfunktionen für die bereitgestellten Ressourcen.

  • Azure DNS Private Resolver stellt einen eingehenden Endpunkt bereit, um IPs privater Endpunkte aufzulösen, wenn sie außerhalb des bereitgestellten virtuellen Netzwerks abgefragt werden, z. B. von lokalen Ressourcen. DNS Private Resolver wird bereitgestellt, wenn das Azure VPN-Gateway bereitgestellt wird.

Spoke-Ressourcen

Die im Spoke-Netzwerk bereitgestellten Ressourcen helfen bei der Ausführung der Berechnungsworkloads und aller unterstützenden Ressourcen.

Die folgenden Ressourcen werden im Spoke-Netzwerk bereitgestellt:

  • Azure Batch ist der Kerndienst, den unsere Architektur für die Planung und Ausführung von Cloud-nativen Auftragen nutzt. Azure Batch verwaltet die erforderlichen Rechenressourcen, plant die Aufgaben auf den Rechenressourcen und überwacht die Aufgaben bis zu deren Abschluss. Der Batchdienst wird mit zwei Pools bereitgestellt: einem Pool mit dem Namen linux mit Linux-Computeknoten und einem Pool mit dem Namen windows mit Windows Computeknoten. Die Pools sind für die Durchführung der folgenden Aufgaben konfiguriert:

    • Verwenden Sie den Zuordnungsmodus für den Benutzerabonnementpool. Alle Ressourcen, die intern vom Batch-Dienst verwendet werden, werden unter demselben Abonnement wie das Batch-Konto zugeordnet und verwenden die abonnementspezifischen Kontingente und Richtlinien.
    • Verwenden Sie die entsprechenden Subnetze im Spoke-Netzwerk. Daher wird ihnen ein Adressbereich aus dem Adressbereich des Subnetzes zugewiesen. Dies bedeutet außerdem, dass alle Regeln für Netzwerksicherheitsgruppen (NSG) und Weiterleitungsregeln für den Datenverkehr, die in diesen Subnetzen eingerichtet wurden, auch auf die Computeknoten angewendet werden.
    • Vermeiden Sie das Zuweisen von öffentlichen IP-Adressen zu den Computeknoten, um sicherzustellen, dass die Computeknoten nicht direkt über das öffentliche Internet zugänglich sind.
    • Erleichtern Sie Workloads, die auf Computeknoten ausgeführt werden, den Zugriff auf freigegebene Speicherressourcen, indem Sie die unterstützten Speicherressourcen während der Initialisierung auf den Computeknoten mounten.
    • Verwenden Sie eine benutzerseitig zugewiesene verwaltete Identität, um die Computeknoten mit dem Speicherkonto, der Container Registry und anderen Ressourcen zu authentifizieren, wenn sie dem Batchpool beitreten. Dadurch wird sichergestellt, dass die Computeknoten mit Zertifikaten statt mit Kennwörtern oder Schlüsseln authentifiziert werden.
  • Azure Key Vault speichert Bereitstellungsgeheimnisse wie Batchkontozertifikate. Diese Zertifikate werden verwendet, um Computer-Knoten-Ressourcen zu authentifizieren, wenn sie sich dem Batch-Pool anschließen. Der Schlüsseltresor wird im Spoke-Netzwerk bereitgestellt und ist so konfiguriert, dass er nur den Zugriff über den Batch-Dienst zulässt. Diese Konfiguration stellt sicher, dass über das öffentliche Internet nicht auf die Zertifikate zugegriffen werden kann.

  • Azure Storage speichert Eingabe- und Ausgabedaten. Bei der Bereitstellung werden zwei Speicherkonten erstellt: eines für Blob Storage und eines für die Dateispeicherung. Das Blob Storage-Konto wird mithilfe von NFS (Network File System) in den Linux-Pool eingebunden. Das Dateispeicherkonto wird sowohl auf dem Linux- als auch auf dem Windows-Pool mithilfe des Servernachrichtenblocks (SMB) eingebunden.

  • Azure Container Registry speichert Container-Abbilder, die von den Batch-Rechenknoten verwendet werden. Die Verwendung einer privaten Bereitstellung der Containerregistrierung hilft bei der Steuerung des Zugriffs auf Containerimages und bietet außerdem eine sicherere Möglichkeit, Containerimages zu speichern. Die Containerregistrierung wird im Spoke-Netzwerk bereitgestellt und ist so konfiguriert, dass nur der Batch-Dienst Zugriff hat. Diese Konfiguration stellt sicher, dass über das öffentliche Internet nicht auf die Containerimages zugegriffen werden kann.

  • Azure Managed Identity wird verwendet, um die Computeknoten, die Pools hinzugefügt werden, automatisch mit der Containerregistrierung, Speicherkonten und anderen Ressourcen zu authentifizieren.

Alternativen

  • Azure Kubernetes Service (AKS) kann anstelle von Azure Batch Dienst für eine ähnliche Konfiguration für containerisierte Anwendungen verwendet werden.

  • Azure CycleCloud können zum Verwalten von HPC-Clustern (High-Performance Computing) auf Azure verwendet werden. Solche HPC-Cluster können so eingerichtet werden, dass sie Workloads ausführen, die denen in diesem Artikel ähneln.

Einzelheiten zum Szenario

Ein gängiges Rechenmuster in FSI besteht darin, eine große Anzahl rechenintensiver Simulationen für einen Eingabedatensatz auszuführen, der ein Finanzinstrument oder ein Portfolio von Finanzinstrumenten charakterisiert. Die Simulationen werden in der Regel parallel durchgeführt und die Ergebnisse werden aggregiert, um eine Zusammenfassung des Risikoprofils des Portfolios zu erstellen.

Diese Architektur ist nicht auf eine bestimmte Workload ausgerichtet. Stattdessen konzentrieren sie sich auf Anwendungen, die Azure Batch verwenden möchten, um rechenintensive Simulationen auszuführen. Jede Produktionsbereitstellungsarchitektur muss an die spezifischen Anforderungen der Workload und der Geschäftsumgebung angepasst werden. Diese Architektur soll als Ausgangspunkt für solche Anpassungen für Vorproduktions- und Produktionsbereitstellungen verwendet werden.

Potenzielle Anwendungsfälle

Diese Architektur kann zum Ausführen einer Vielzahl von FSI-Workloads verwendet werden. Einige Beispiele beinhalten:

  • Risikoanalyse eines Portfolios von Finanzinstrumenten
  • Monte-Carlo-Simulationen zur Schätzung des Wertes eines Finanzinstruments
  • Backtesting von Handelsstrategien
  • Stresstesting eines Portfolios von Finanzinstrumenten

Netzwerktopologie

Diese Architektur verwendet eine Hub-and-Spoke-Netzwerktopologie. Die Hub- und Spoke-Ressourcen werden in getrennten virtuellen Netzwerken bereitgestellt, die über das Peering virtueller Netzwerke verbunden sind. Das Hubnetzwerk enthält freigegebene Ressourcen wie Firewalls, VPN-Gateways und Jumpboxen. Das Spoke-Netzwerk enthält den Batch-Dienst und die Batch-Computeknoten. Es umfasst außerdem andere Dienstendpunkte, die vom Workload benötigt werden, z. B. Speicherkonten, Containerregistrierung usw. Das Spoke-Netzwerk ist vom öffentlichen Internet isoliert und kann nur über das Hubnetzwerk aufgerufen werden.

Im Folgenden finden Sie einige Highlights der Netzwerktopologie:

  • Ressourcen auf Spoke sind vom öffentlichen Internet isoliert und können nur über das Hubnetzwerk aufgerufen werden, wodurch die direkte Exposition der Ressourcen gegenüber dem öffentlichen Internet minimiert wird.
  • Der gesamte ausgehende Datenverkehr, einschließlich des Datenverkehrs von den Pool-Computeknoten, wird durch eine Firewall geleitet, die sicherstellt, dass der gesamte ausgehende Datenverkehr gefiltert, protokolliert und nachverfolgt wird.
  • Die Firewall ist so konfiguriert, dass nur der Datenverkehr auf der Zulassungsliste zugelassen wird, wodurch sichergestellt wird, dass nur dieser das virtuelle Netzwerk verlassen kann.
  • Der Zugriff auf Ressourcen im Spoke-Netzwerk wird über ein optional bereitgestelltes VPN-Gateway oder Azure Bastion aktiviert. Beide bieten sichere Möglichkeiten, eine Verbindung mit dem Hubnetzwerk über das öffentliche Internet herzustellen.
  • Windows und Linux-Jumpboxen werden mit vorinstallierten Tools bereitgestellt, um auf die bereitgestellten Ressourcen zuzugreifen, Aufträge zu übermitteln und ihren Fortschritt zu überwachen. Diese Jumpboxen werden im Hubnetzwerk bereitgestellt und können vom lokalen Netzwerk aus über das VPN-Gateway oder Azure Bastion darauf zugegriffen werden.
  • Alle Azure Dienste verwenden private Endpunkte, um sicherzustellen, dass sie über ein privates Netzwerk zugreifen, anstatt über öffentliche Endpunkte darauf zuzugreifen. Diese Konfiguration stellt außerdem sicher, dass über das öffentliche Internet nicht auf die Dienste zugegriffen werden kann.
  • NSG-Regeln sind so eingerichtet, dass nur der erforderliche Datenverkehr in und aus dem virtuellen Netzwerk zugelassen wird. Diese Konfiguration trägt dazu bei, das Netzwerk vor böswilligen Angriffen zu schützen und den ein- und ausgehenden Datenverkehr zu überwachen. Diese Regeln schränken sogar den Datenverkehr zwischen den Ressourcen im virtuellen Netzwerk ein.

Virtuelles Hubnetzwerk

Das virtuelle Hubnetzwerk enthält Ressourcen, die den Datenverkehr in und aus dem Spoke-Netzwerk zulassen oder überwachen. Das virtuelle Netzwerk definiert die folgenden Subnetze in der Bereitstellungsvorlage:

  1. GatewaySubnet: Subnetz für das VPN-Gateway, falls bereitgestellt
  2. AzureBastionSubnet: Subnetz für den Azure Bastion-Dienst, falls bereitgestellt
  3. AzureFirewallSubnet: Subnetz für den Azure Firewall-Dienst
  4. sn-jumpbox: Subnetz für die Jumpboxes
  5. sn-dnspr: Subnetz an Azure DNS Resolver delegiert

Virtuelles Spoke-Netzwerk

Das virtuelle Spoke-Netzwerk enthält den Batch-Dienst, Batch-Computeknoten und andere Dienstendpunkte, die von der Workload benötigt werden. Das virtuelle Netzwerk definiert die folgenden Subnetze in der Bereitstellungsvorlage:

  1. pool-linux: Subnetz für den Linux-Pool
  2. pool-windows: Subnetz für den Windows-Pool
  3. private-endpoints: Subnetz, das für private Endpunkte für Azure Dienste verwendet wird, die im Speichennetzwerk bereitgestellt werden

Das Spoke-Netzwerk wird per Peering mit dem Hubnetzwerk verbunden, wodurch die Ressourcen im Spoke-Netzwerk auf die Ressourcen im Hubnetzwerk zugreifen können. Routingtabellen werden eingerichtet, um sicherzustellen, dass der Datenverkehr zwischen den Spoke-Netzwerken über die Firewall weitergeleitet wird.

Zugriff auf die Ressourcen

Um Berechnungsaufträge an den Batch-Dienst zu übermitteln, stellen Sie eine Verbindung mit dem Batch-Dienstendpunkt her, um Aufträge zu übermitteln und deren Fortschritt zu überwachen. Da der Batch-Dienst für die Verwendung privater Endpunkte eingerichtet ist, kann nur innerhalb des Netzwerks darauf zugegriffen werden.

Die Architektur bietet zwei Optionen zum Herstellen einer Verbindung mit dem Netzwerk, damit Sie Aufträge an den Batch-Dienst übermitteln können:

  • VPN Gateway verwenden. Stellen Sie über ein VPN-Gateway eine Verbindung mit dem Hub-Netzwerk her. Nachdem Sie mit dem VPN verbunden sind, können Sie Aufträge direkt vom lokalen Computer aus an den Batch-Dienst übermitteln, was auch das Überwachen von Aufträgen mithilfe des auf dem lokalen Computer installierten Batch-Explorers erleichtert. Diese Konfiguration erfordert, dass die Azure CLI, der Batch-Explorer und andere Tools auf dem lokalen Computer installiert sind. Alternativ können Sie nach der Verbindung mit dem VPN die Linux- oder Windows Jumpboxes verwenden, um Aufträge an den Batchdienst zu übermitteln. Dazu müssen Sie einen SSH-Client oder RDP-Client auf dem lokalen Computer installiert haben.

  • Azure Bastion verwenden. Statt VPN zu verwenden, können Sie Azure Bastion verwenden, um sich bei Linux oder Windows Jumpboxes anzumelden. Melden Sie sich beim Azure-Portal an, und verwenden Sie dann Azure Bastion, um sich direkt über den Webbrowser bei der Jumpbox-VM anzumelden. Nachdem Sie sich beim Jumpbox angemeldet haben, können Sie Aufträge mithilfe der Azure CLI, des Batch-Explorers und anderer Tools, die auf dem Jumpbox installiert sind, an den Batchdienst übermitteln.

Überlegungen

Diese Überlegungen implementieren die Säulen des Azure Well-Architected Frameworks, bei dem es sich um eine Reihe von Leitsätzen handelt, die verwendet werden können, um die Qualität einer Arbeitsauslastung zu verbessern. Weitere Informationen finden Sie unter Well-Architected Framework.

In diesem Beispielworkflow verwenden wir die manuelle Datenübertragung und Übermittlung von Aufträgen als guten Ausgangspunkt für Workloads, die noch nicht für die Automatisierung bereit sind. Für Produktionsworkloads wird jedoch empfohlen, die Datenübertragung und Auftragsübermittlung zu automatisieren, die mit Azure Data Factory oder anderen Workflow-Orchestrierungstools durchgeführt werden kann.

Batchpools können so eingerichtet werden, dass sie basierend auf der Anzahl der an den Pool übermittelten Aufträge automatisch hoch- und herunterskaliert werden. Diese Konfiguration trägt dazu bei, die Kosten für den Betrieb des Pools zu senken, wenn keine Aufträge ausgeführt werden müssen. Weitere Informationen finden Sie unter Automatisches Skalieren von Computeknoten in einem Azure Batch-Pool.

Sicherheit

Sicherheit bietet Sicherheitsmaßnahmen gegen bewusste Angriffe und den Missbrauch Ihrer wertvollen Daten und Systeme. Weitere Informationen finden Sie unter Entwurfsprüfliste für die Sicherheit.

Um die gemeinsame Nutzung von Geheimnissen wie Kennwörtern und Schlüsseln zu minimieren, verwendet die Architektur verwaltete Identitäten, um die Computeknoten mit dem Speicherkonto, der Containerregistrierung und anderen Ressourcen zu authentifizieren, wenn sie dem Batchpool beitreten. Diese Authentifizierung erfolgt, indem den Batchpools verwaltete Identitäten zugewiesen und anschließend Zugriff auf die Ressourcen durch die verwalteten Identitäten gewährt wird. Den verwalteten Identitäten können über die rollenbasierte Zugriffssteuerung die Berechtigungen gewährt werden, die mindestens für den Zugriff auf die Ressourcen erforderlich sind.

Die Architektur verwendet auch private Endpunkte, um sicherzustellen, dass die Dienste nicht über das öffentliche Internet zugänglich sind. Diese Konfiguration trägt dazu bei, die Angriffsfläche zu minimieren und sicherzustellen, dass der Zugriff auf die Dienste über ein privates Netzwerk erfolgt, anstatt über öffentliche Endpunkte.

Die Architektur verwendet auch Azure Firewall zum Filtern und Überwachen des Datenverkehrs in und aus dem Netzwerk. Die Firewall ist so konfiguriert, dass nur der Datenverkehr auf der Zulassungsliste zugelassen wird, wodurch sichergestellt wird, dass nur dieser das virtuelle Netzwerk verlassen kann. Diese Konfiguration trägt dazu bei, das Netzwerk vor böswilligen Angriffen zu schützen und den ein- und ausgehenden Datenverkehr zu überwachen.

Die Computeknoten selbst sind nicht über das öffentliche Internet zugänglich, da ihnen keine öffentliche IP-Adressen zugewiesen sind.

Kostenoptimierung

Die Kostenoptimierung konzentriert sich auf Möglichkeiten, unnötige Ausgaben zu reduzieren und die betriebliche Effizienz zu verbessern. Weitere Informationen finden Sie unter Design Review-Checkliste für die Kostenoptimierung.

Azure Batch selbst ist ein kostenloser Dienst, und Kunden zahlen nur für den zugrunde liegenden virtuellen Computer, Speicher und Netzwerkkosten. In dieser Workload sind neben den Computeknoten das Speicherkonto, Jumpboxes, VPN Gateway und Azure Bastion die anderen Ressourcen, die Kosten verursachen. Da der Workload darauf ausgelegt ist, Alternativen für den Zugriff auf die Ressourcen zu unterstützen, können die Ausführungskosten durch Auswahl eines dieser Pfade optimiert werden. Wenn z. B. VPN Gateway für den Zugriff auf Ressourcen bevorzugt wird, können Azure Bastion und Jumpbox-VMs während der Bereitstellung deaktiviert werden, um die Kosten zu reduzieren.

Um die mit den Computeressourcen verbundenen Kosten zu senken, verwenden Sie VM-Bestandshaltungseinheiten (SKUs), die für die Workload kostengünstiger sind. Darüber hinaus kann die Verwendung von Spot-Instances oder der automatischen Poolskalierung dazu beitragen, die mit Computeknoten verbundenen Kosten zu senken.

Informationen zum Ermitteln der Kosten für die Ausführung dieser Workload finden Sie unter Azure Preisrechner.

Leistungseffizienz

Die Leistungseffizienz ist die Fähigkeit Ihrer Workload, sich auf effiziente Weise an die Anforderungen der Benutzer anzupassen. Weitere Informationen finden Sie in der Checkliste zur Entwurfsüberprüfung für die Leistungseffizienz.

Mit Batch wird Leistungseffizienz mithilfe der richtigen VM-SKUs für die Workload erreicht. Weitere Informationen zum Auswählen der richtigen VM-SKUs für die Workload finden Sie unter Azure compute unit. Unter Auswählen der VM-Größe für Computeknoten finden Sie weitere Informationen zur Auswahl der richtigen VM-SKUs basierend auf der Bereitstellungsregion.

Dieses Szenario bereitstellen

Der IaC-Quellcode (Infrastructure-as-Code) für diese Referenzarchitektur ist im Azure Batch Accelerator-Repository verfügbar. Die enthaltenen Tutorials veranschaulichen, wie diese Referenzarchitektur bereitgestellt und zum Ausführen einer beispielhaften FSI-Workload namens azfinsim verwendet wird. Sie können auch die folgende Schaltfläche verwenden, um die Ressourcen unter Ihrem Abonnement über Azure Portal bereitzustellen:

In Azure bereitstellen

Nächste Schritte,

Lernmodule