Bearbeiten

Freigeben über


Architekturansätze für Kostenverwaltung und -zuteilung in Mehrmandantenlösungen

Azure
Azure Cost Management
Azure Resource Manager
Azure Monitor

Mehrmandantenlösungen erfordern häufig besondere Überlegungen, wenn Sie Kosten messen, zuordnen und optimieren. Diese Seite bietet einige wichtige Leitlinien, die Lösungsarchitekten bei der Messung, Zuordnung und Optimierung der Kosten für eine Mehrmandantenlösung berücksichtigen sollten.

Wesentliche Aspekte und Anforderungen

Berücksichtigen Sie Ihre Anforderungen für die Verbrauchsmessung bei Ihrer Lösung. Dies wird ausführlicher unter Messen der Nutzung der einzelnen Mandanten genauer beschrieben.

Zweck der Messung

Es ist wichtig, dass Sie Ihr Ziel kennen. Hier einige Beispiele für Ziele:

  • Berechnen der ungefähren Kosten verkaufter Leistungen für jeden Mandanten. Wenn Sie beispielsweise eine große Menge gemeinsamer Ressourcen bereitstellen, sind Sie möglicherweise nur an einer ungefähren Schätzung der Kosten interessiert, die für jeden Mandanten anfallen.
  • Berechnen der genauen Kosten für jeden Mandanten. Wenn Sie Ihren Mandanten die genaue Menge ihres Verbrauchs in Rechnung stellen, benötigen Sie genaue Informationen dazu, wie viel die Ressourcen der einzelnen Mandanten kosten.
  • Identifizieren von Ausreißer-Mandanten, die deutlich mehr kosten als andere. Wenn Sie beispielsweise ein Pauschalpreismodell bereitstellen, müssen Sie möglicherweise bestimmen, ob Mandanten einen unverhältnismäßig großen Teil Ihrer bereitgestellten Kapazität verbrauchen, damit Sie Richtlinien für die angemessene Nutzung anwenden können. In vielen Situationen ist für diesen Fall keine genaue Kostenmessung erforderlich.
  • Reduzieren der insgesamt auf Azure entfallenden Kosten für Ihre Lösung. Beispielsweise können Sie die Kosten jeder Komponente überprüfen und dann ermitteln, ob zu viele Ressourcen für die Workload bereitgestellt werden.

Wenn Sie das Ziel für Ihre Verbrauchsmessung bei Mandanten verstehen, können Sie ermitteln, ob die Kostenzuteilungen ungefähr oder sehr präzise sein müssen. Dies wirkt sich auf die spezifischen Tools aus, die Sie verwenden können, und auf die Methoden, die Sie befolgen können.

Gemeinsam genutzte Komponenten

Möglicherweise können Sie die Kosten einer Mehrmandantenlösung senken, indem Sie Mandanten in einer gemeinsame Infrastruktur unterbringen. Sie müssen jedoch die Auswirkungen der gemeinsamen Nutzung von Ressourcen sorgfältig berücksichtigen, z. B. ob bei Ihren Mandanten das Noisy Neighbor-Problem auftritt.

Sie müssen auch bedenken, wie Sie die Kosten für gemeinsame Komponenten messen und zuordnen. Beispielsweise können Sie die Kosten gleichmäßig auf die einzelnen Mandanten aufteilen, die die gemeinsame Komponente verwenden. Oder Sie können den Verbrauch der einzelnen Mandanten messen, um ihre Nutzung gemeinsamer Komponenten genauer kennenzulernen.

Zu berücksichtigende Ansätze und Muster

Zuordnen von Kosten mithilfe von Ressourcentags

Mit Azure können Sie Tags zu Ihren Ressourcen hinzufügen. Ein Tag ist ein Schlüssel-Wert-Paar. Mit Tags können Sie benutzerdefinierte Metadaten hinzufügen. Tags sind nützlich für viele Verwaltungsvorgänge, auch für die Analyse der Kosten für Ihre Azure-Nutzung. Nachdem Sie Tags angewendet haben, können Sie die den einzelnen Tags zugeordneten Kosten ermitteln.

Die Art und Weise, wie Sie Tags in einer Mehrmandantenlösung verwenden, ist je nach Architektur wahrscheinlich unterschiedlich.

In einigen Lösungen können Sie dedizierte Ressourcen für jeden Mandanten bereitstellen, z. B. wenn Sie dedizierte Bereitstellungsstempel für jeden Mandanten bereitstellen. In diesen Situationen ist klar, dass jede Azure-Nutzung durch diese Ressourcen dem jeweiligen Mandanten zugeordnet werden sollte, sodass Sie Ihre Azure-Ressourcen mit der Mandanten-ID markieren können.

In anderen Situationen haben Sie möglicherweise Sätze gemeinsam genutzter Ressourcen. Wenn Sie beispielsweise das Sharding-Muster anwenden, können Sie mehrere Datenbanken bereitstellen und Ihre Mandanten auf diese verteilen. In diesem Fall sollten Sie erwägen, die Ressource mit einen Bezeichner für die Gruppe von Mandanten zu markieren. Mit diesem Ansatz können Sie die Kosten vielleicht nicht einfach einem einzelnen Mandanten zuordnen, sie aber zumindest auf eine Gruppe von Mandanten eingrenzen. Sie können die Nutzungsinformationen auch verwenden, um Mandanten zum Ausgleich in andere Shards zu verlegen, wenn Sie feststellen, dass für einen bestimmten Shard höhere Kosten entstehen als für die anderen.

Hinweis

Es gibt eine maximale Anzahl von Tags, die auf eine Ressource angewendet werden können. Bei gemeinsam genutzten Ressourcen ist es am besten, nicht für jeden einzelnen Mandanten, der die Ressource nutzt, ein Tag zu verwenden. Verwenden Sie stattdessen ein Tag mit der Shard-ID oder eine andere Möglichkeit zum Identifizieren der Mandantengruppe hinzu.

Betrachten Sie ein Beispiel für eine mehrinstanzenfähige Lösung, die mit dem Muster „Bereitstellungsstempel“ und einem vertikal partitionierten Mandantenmodell erstellt wurde. Jeder Bereitstellungsstempel enthält einen gemeinsamen Webserver und Sharddatenbanken. Tags können auf jede der Azure-Komponenten angewendet werden, wie im folgenden Diagramm dargestellt.

Diagramm, das zwei Stempel zeigt; alle Komponenten sind durch Tags gekennzeichnet.

Die hier eingesetzte Taggingstrategie lautet wie folgt:

  • Jede Ressource hat einen stamp-id-Tag.
  • Jede Sharddatenbank hat einen shard-id-Tag.
  • Jede Ressource, die für einen bestimmten Mandanten dediziert ist, hat einen tenant-id-Tag.

Mit dieser Taggingstrategie ist es einfach, die Kosteninformationen nach einem einzelnen Stempel zu filtern. Die Kosten der mandantenspezifischen Ressourcen sind ebenfalls leicht herauszufinden, z. B. die Gesamtkosten der Datenbank für Mandant C. Gemeinsame Komponenten haben kein tenant-id-Tag, aber die Kosten für die gemeinsamen Komponenten eines Stempels können auf die Mandanten aufgeteilt werden, diesem Stempel oder Shard zugewiesen sind.

Instrumentieren Ihrer Anwendung

In Situationen, in denen Sie keine direkte Beziehung zwischen einer Azure-Ressource und einem Mandanten haben, sollten Sie erwägen, Ihre Anwendung zum Sammeln von Telemetriedaten zu instrumentieren.

Ihre Logikschicht sammelt möglicherweise bereits Protokolle und Metriken, die hilfreich sind, um beispielsweise Fragen zu Messungen zu beantworten:

  • Wie viele API-Anforderungen entstehen in etwa pro Mandant?
  • Zu welchen Tageszeiten sind bestimmte Mandanten am aktivsten?
  • Welche Unterschiede und Gemeinsamkeiten haben die Nutzungsmuster verschiedener Mandanten?

In Azure werden diese Metriken häufig von Application Insights erfasst. Mithilfe von Telemetrieinitialisierern können Sie die von Application Insights erfassten Telemetriedaten mit einem Mandantenbezeichner oder anderen benutzerdefinierten Daten anreichern.

Application Insights und andere Protokollierungs- und Überwachungslösungen sind jedoch nicht für eine präzise Kosten- oder Verbrauchsmessung geeignet. Application Insights ist für die Stichprobenanalyse von Daten konzipiert, insbesondere dann, wenn Ihre Anwendung eine große Menge von Anforderungen hat. Die Stichprobenmethode dient zum Senken der Kosten für die Überwachung Ihrer Lösung, da die Erfassung sämtlicher Telemetrie häufig teuer ist.

Wenn Sie genaue Details zum Verbrauch oder zur Nutzung zu Abrechnungszwecken nachverfolgen müssen, sollten Sie stattdessen eine benutzerdefinierte Pipeline erstellen, um die erforderlichen Daten zu protokollieren. Anschließend sollten Sie die Daten basierend auf Ihren Anforderungen aggregieren. Azure-Dienste, die dabei helfen können, sind etwa Event Hubs, um große Mengen von Telemetriedaten zu erfassen, und Stream Analytics, um sie in Echtzeit zu verarbeiten.

Senken der Kosten mithilfe von Azure-Reservierungen und Azure-Sparplan

Azure-Reservierungen: Mit Azure-Reservierungen können Sie Ihre Azure-Kosten senken, indem Sie sich vorab auf ein bestimmtes Ausgabenniveau festlegen. Reservierungen gibt es für eine Reihe von Azure-Ressourcentypen.

Reservierungen können effektiv in einer Mehrmandantenlösung verwendet werden. Beachten Sie die folgenden Überlegungen:

  • Wenn Sie eine Mehrmandantenlösung bereitstellen, die freigegebene Ressourcen enthält, sollten Sie die den von der Workload benötigten Grundverbrauch berücksichtigen. Sie können eine Reservierung dieses Grundverbrauchs in Betracht ziehen und dann während unvorhersehbarer Spitzenzeiten Standardtarife für einen höheren Verbrauch bezahlen.
  • Wenn Sie Ressourcen für jeden Mandanten bereitstellen, sollten Sie überlegen, ob Sie den Ressourcenverbrauch für einen bestimmten Mandanten oder für Ihr gesamtes Mandantenportfolio vorab reservieren möchten.

Mit Azure-Reservierungen können Sie den Geltungsbereich ihrer Reservierungen auf eine Ressourcengruppe, ein Abonnement oder eine Gruppe von Abonnements festlegen. Dies bedeutet, dass Sie von Reservierungen auch dann profitieren können, wenn Sie Ihre Workload in mehreren Abonnements aufteilen.

Reservierungsbereiche können auch hilfreich sein, wenn Sie Mandanten mit unvorhersehbaren Workloads haben. Stellen Sie sich beispielsweise eine Lösung vor, bei der Mandant A nur eine Instanz einer bestimmten Ressource benötigt, Mandanten B und C jedoch jeweils zwei. Dann wird Mandant B weniger ausgelastet, sodass Sie die Anzahl seiner Instanzen verringern und Mandant A immer mehr ausgelastet, sodass Sie die Anzahl seiner Instanzen erhöhen. Ihre Reservierungen werden auf die Mandanten angewendet, die sie benötigen.

Azure-Sparplan für Compute: Der Azure-Sparplan für Compute ist ein flexibler Sparplan, der erhebliche Einsparungen bei nutzungsbasierter Bezahlung generiert. Sie vereinbaren einen Vertrag mit einer Laufzeit von einem Jahr oder drei Jahren und erhalten Preisnachlässe auf berechtigte Computedienste. Diese Dienste umfassen virtuelle Computer, dedizierte Hosts, Containerinstanzen, Azure Premium-Funktionen und Azure App Services. Einsparungen gelten für diese Compute-Dienste unabhängig von Region, Instanzgröße oder Betriebssystem. Weitere Informationen finden Sie unter Übersicht über den Azure-Sparplan und Dokumentation zum Azure-Sparplan.

Kombinieren von Reservierungen und Sparplan: Sie können einen Azure-Sparplan mit Azure-Reservierungen kombinieren, um die Kosten und die Flexibilität weiter zu optimieren.

Zu vermeide Antimuster

  • Überhaupt keine Kostennachverfolgung. Es ist wichtig, mindestens eine ungefähre Vorstellung von den Kosten zu haben, die Sie verursachen, und wie sich jeder Mandant auf die Kosten der Bereitstellung Ihrer Lösung auswirkt. Wenn sich Ihre Kosten im Laufe der Zeit ändern, haben Sie andernfalls keinen Grundwert für Vergleiche. Vielleicht können Sie nicht vorhersagen, wie sich ein Wachstum der Mandanten auf Ihre Kosten und Rentabilität auswirkt.
  • Annahmen oder Mutmaßungen. Sie müssen sicherstellen, dass Ihre Kostenmessung auf echten Informationen basiert. Möglicherweise benötigen Sie kein hohes Maß an Genauigkeit, aber auch Ihre Schätzungen sollten auf echten Messungen basieren.
  • Unnötige Genauigkeit. Möglicherweise müssen Sie nicht alle Kosten, die für die einzelnen Mandanten anfallen, detailliert nachverfolgen. Das Erstellen unnötig präziser Kostenmessungs- und Optimierungsprozesse kann kontraproduktiv sein, weil es die technische Komplexität erhöht und fehleranfällige Prozesse nach sich zieht.
  • Echtzeitmessung. Die meisten Lösungen benötigen keine minutenaktuellen Kostenmessungen. Da die Verarbeitung von Messungs- und Verbrauchsdaten komplex sein kann, sollten Sie die erforderlichen Daten protokollieren und die Daten später asynchron aggregieren und verarbeiten.
  • Verwenden von Überwachungstools für die Abrechnung. Stellen Sie wie unter Instrumentieren Ihrer Anwendung beschrieben sicher, dass Sie Tools verwenden, die für die Kostenüberwachung und -messung entwickelt wurden. Anwendungsüberwachungslösungen sind in der Regel keine gute Wahl für diese Art von Daten, insbesondere wenn Sie eine hohe Genauigkeit benötigen.

Beitragende

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

Hauptautor:

Andere Mitwirkende:

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

Nächste Schritte