Mehrinstanzenfähigkeit und Azure App Configuration

Azure App Configuration ermöglicht Ihnen das Speichern von Konfigurationseinstellungen für Ihre Anwendung. Mithilfe von Azure App Configuration können Sie das Muster mit externem Konfigurationsspeicher ganz einfach implementieren. In diesem Artikel werden einige Features von Azure App Configuration beschrieben, die bei der Arbeit mit mehrinstanzenfähigen Systemen nützlich sind. Zudem finden Sie hier Links zu Leitfäden und Beispielen für die Verwendung von Azure App Configuration in einer mehrinstanzenfähigen Lösung.

Isolationsmodelle

Ein Speicher verweist auf eine einzelne Instanz des Azure App Configuration-Diensts.

In einer Mehrinstanzenlösung ist es üblich, zwei Arten von Einstellungen zu verwenden:

  • Freigegebene Einstellungen sind diejenigen, die für mehrere Mandanten gelten, z. B. globale Einstellungen oder Einstellungen, die für alle Mandanten innerhalb eines Bereitstellungsstempels gelten. Bei globalen Einstellungen ist es oft am vorteilhaftesten, sie in einem freigegebenen App Configuration-Speicher zu speichern. Mit dem folgenden Ansatz minimieren Sie die Anzahl von Stellen, an denen eine Einstellung aktualisiert werden muss, wenn sich ihr Wert ändert. Dieser Ansatz minimiert auch das Risiko, dass Einstellungen nicht synchronisiert werden.

  • Mandantenspezifische Einstellungen, z. B. der Datenbankname jedes Mandanten oder interne Bezeichner. Es kann auch vorkommen, dass Sie unterschiedliche Protokolliergrade für jeden Mandanten angeben möchten, z. B. wenn Sie ein Problem diagnostizieren, das von einem bestimmten Mandanten gemeldet wurde, und Sie Diagnoseprotokolle von diesem betreffenden Mandanten sammeln müssen. Sie können wählen, ob Sie die mandantenspezifischen Einstellungen für mehrere Mandanten in einem einzigen Speicher kombinieren oder einen Speicher für jeden Mandanten bereitstellen. Treffen Sie diese Entscheidung basierend auf Ihren Anforderungen. Bei einer Lösung, die eine einzelne freigegebene Logikschicht für mehrere Mandanten verwendet, bieten mandantenspezifische Speicher wahrscheinlich nur geringe Vorteile. Wenn Sie mandantenspezifische Anwendungsinstanzen bereitstellen, können Sie jedoch den gleichen Ansatz spiegeln, indem Sie mandantenspezifische Konfigurationsspeicher bereitstellen.

In der folgenden Tabelle werden die Unterschiede der wichtigsten Mandantenisolationsmodelle für Azure App Configuration erläutert:

Aspekt Freigegebener Speicher Store pro Mandanten
Datenisolation Niedrig. Verwenden von Schlüsselpräfixen oder Bezeichnungen zum Identifizieren der Daten jedes Mandanten High
Leistungsisolation Niedrig High
Bereitstellungskomplexität Niedrig Mittelhoch
Komplexität des Betriebs Niedrig Mittelhoch
Ressourcenkosten Niedrig Mittelhoch
Beispielszenario Große Lösung mit mehreren Mandanten mit freigegebener Anwendungsebene Premiumebenenmandanten mit vollständig isolierten Bereitstellungen

Freigegebene Speicher

Sie können einen freigegebenen Azure App Configuration-Speicher für Ihre gesamte Lösung oder eine für jeden Stempel bereitstellen. Anschließend können Sie denselben Speicher für die Einstellungen aller Mandanten nutzen und zur Unterscheidung Schlüsselpräfixe oder Bezeichnungen verwenden.

Wenn Sie pro Mandanten eine große Menge von Daten speichern oder auf eine große Anzahl von Mandanten skalieren müssen, besteht die Gefahr, dass Sie die Ressourcengrenzwerte für einen einzigen Speicher überschreiten. In diesem Szenario sollten Sie die horizontale Partitionierung Ihrer Mandanten auf eine Gruppe freigegebener Speicher erwägen, um die Bereitstellungs- und Verwaltungskosten zu minimieren.

Dieser Ansatz setzt voraus, dass Sie die geltenden Ressourcenkontingente und -grenzwerte kennen. Beachten Sie insbesondere die Begrenzung des Gesamtspeichers für die von Ihnen verwendete Dienstebene, und stellen Sie sicher, dass Sie die maximale Anzahl von Anforderungen pro Stunde nicht überschreiten.

Speicher pro Mandanten

Sie können stattdessen einen Azure App Configuration-Speicher für jeden Mandanten bereitstellen. Mit der Standardebene von Azure App Configuration können Sie eine unbegrenzte Anzahl von Speichern in Ihrem Abonnement bereitstellen. Bei diesem Ansatz ist die Verwaltung jedoch oft schwieriger, da Sie mehr Ressourcen bereitstellen und konfigurieren müssen. Zudem fällt eine Gebühr für jede bereitgestellte Speicherressource an.

In den folgenden Fällen sollten Sie die Verwendung mandantenspezifischer Speicher in Erwägung ziehen:

  • Sie müssen kundenseitig verwaltete Verschlüsselungsschlüssel verwenden, die für jeden Mandanten getrennt bleiben.
  • Ihre Mandanten verlangen, dass ihre Konfigurationsdaten vollständig von den Daten anderer Mandanten isoliert werden. Die Zugriffsberechtigung für Azure App Configuration wird auf der Speicherebene gesteuert, sodass Sie durch die Bereitstellung getrennter Speicher separate Zugriffsberechtigungen konfigurieren können.

Features von Azure App Configuration, die Mehrinstanzenfähigkeit unterstützen

Wenn Sie Azure App Configuration in einer mehrinstanzenfähigen Anwendung verwenden, stehen Ihnen mehrere Features zum Speichern und Abrufen mandantenspezifischer Einstellungen zur Verfügung.

Schlüsselpräfixe

In Azure App Configuration arbeiten Sie mit Schlüssel-Wert-Paaren, die Anwendungseinstellungen darstellen. Der Schlüssel stellt den Namen der Konfigurationseinstellung dar. Sie können eine hierarchische Benennungsstruktur für Ihre Schlüssel verwenden. Erwägen Sie in einer mehrinstanzenfähigen Lösung, einen Mandantenbezeichner als Präfix für Ihre Schlüssel zu verwenden.

Angenommen, Sie müssen eine Einstellung speichern, um den Protokolliergrad für Ihre Anwendung anzugeben. In einer Lösung mit einem einzelnen Mandanten können Sie diese Einstellung als LogLevel benennen. In einer mehrinstanzenfähigen Lösung können Sie einen hierarchischen Schlüsselnamen verwenden, z. B. tenant1/LogLevel für Mandant 1, tenant2/LogLevel für Mandant 2 usw.

Azure App Configuration ermöglicht Ihnen die Angabe langer Schlüsselnamen, um mehrere Ebenen in einer Hierarchie zu unterstützen. Wenn Sie sich für die Verwendung langer Schlüsselnamen entscheiden, müssen Sie die Größenbeschränkungen für Schlüssel und Werte verstehen.

Wenn Sie die Konfiguration eines einzelnen Mandanten in Ihre Anwendung laden, können Sie einen Filter für den Schlüsselpräfix angeben, um nur die Schlüssel dieses Mandanten zu laden. Sie können auch die Anbieterbibliothek für Azure App Configuration dafür konfigurieren, das Schlüsselpräfix zu kürzen, bevor die Schlüssel für Ihre Anwendung verfügbar gemacht werden. Wenn Sie das Schlüsselpräfix kürzen, erkennt Ihre Anwendung einen konsistenten Schlüsselnamen, und die Werte des jeweiligen Mandanten werden in die Anwendung geladen.

Bezeichnungen

Azure App Configuration unterstützt auch Bezeichnungen, sodass Sie separate Werte mit demselben Schlüssel verwenden können.

Bezeichnungen werden häufig für die Versionsverwaltung oder die Arbeit mit mehreren Bereitstellungsumgebungen verwendet und sind auch für andere Zwecke in Ihrer Lösung hilfreich. Sie können zwar Mandantenkennungen als Bezeichnungen verwenden, diese sind dann jedoch für nichts anderes mehr nutzbar. Für Multitenant-Lösungen empfiehlt es sich in der Regel also, Schlüsselpräfixe für die Verwaltung mandantenspezifischer Einstellungen zu verwenden und Bezeichnungen für andere Zwecke zu verwenden.

Wenn Sie sich entscheiden, Bezeichnungen für jeden Mandanten zu verwenden, kann Ihre Anwendung mithilfe eines Bezeichnungsfilters nur die Einstellungen für einen bestimmten Mandanten laden. Dieser Ansatz kann hilfreich sein, wenn Sie über separate Anwendungsbereitstellungen für die einzelnen Mandanten verfügen.

Anwendungsseitige Zwischenspeicherung

Bei der Arbeit mit Azure App Configuration ist es wichtig, die Einstellungen in Ihrer Anwendung zwischenzuspeichern, anstatt sie bei jeder Verwendung zu laden. Die Azure App Configuration-Anbieterbibliotheken speichern Einstellungen zwischen und aktualisieren sie automatisch.

Außerdem müssen Sie entscheiden, ob Ihre Anwendung die Einstellungen für einen einzelnen Mandanten oder für alle Mandanten lädt.

Mit zunehmender Anzahl von Mandanten nehmen wahrscheinlich auch der erforderliche Zeitaufwand und Arbeitsspeicher zum Laden der Einstellungen für alle Mandanten zu. In den meisten Fällen empfiehlt es sich daher, die Einstellungen für jeden Mandanten separat zu laden, wenn diese von Ihrer Anwendung benötigt werden.

Wenn Sie die Konfigurationseinstellungen jedes Mandanten separat laden, muss Ihre Anwendung jeden Einstellungssatz getrennt von allen anderen Einstellungen zwischenspeichern. Bei .NET-Anwendungen können Sie die Verwendung eines In-Memory-Cache erwägen, um das IConfigurationObjekt des Mandanten zwischenzuspeichern und dann den Mandantenbezeichner als Cacheschlüssel zu verwenden. Wenn Sie einen In-Memory-Cache verwenden, müssen Sie eine Konfiguration nicht bei jeder Anforderung erneut laden. Bei hoher Arbeitsspeicherauslastung Ihrer Anwendung entfernt der Cache jedoch möglicherweise nicht verwendete Instanzen. Sie können auch Ablaufzeiten für die Konfigurationseinstellungen jedes Mandanten konfigurieren.

Beitragende

Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:

Hauptautor:

Andere Mitwirkende:

  • Arsen Vladimirskiy | Principal Customer Engineer, FastTrack for Azure
  • Zhenlan Wang | Principal Software Engineering Manager, Azure App Configuration

Melden Sie sich bei LinkedIn an, um nicht öffentliche LinkedIn-Profile anzuzeigen.

Nächste Schritte

Lesen Sie Bereitstellungs- und Konfigurationsansätze für die Mehrinstanzenfähigkeit.