SaaS Lens AWS Well-Architected Framework

Die Seite wird erstellt Lorenz Renner
 
WEITER LESEN
SaaS Lens AWS Well-Architected Framework
SaaS Lens
AWS Well-Architected Framework
SaaS Lens AWS Well-Architected Framework
SaaS Lens AWS Well-Architected Framework

SaaS Lens: AWS Well-Architected Framework
Copyright © Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's,
in any manner that is likely to cause confusion among customers, or in any manner that disparages or discredits
Amazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may not
be affiliated with, connected to, or sponsored by Amazon.
SaaS Lens AWS Well-Architected Framework
SaaS Lens AWS Well-Architected Framework

Table of Contents
  Überblick ........................................................................................................................................... 1
        Überblick ................................................................................................................................... 1
  Einführung ......................................................................................................................................... 2
  Definitionen ........................................................................................................................................ 3
        Mandant .................................................................................................................................... 3
        Silo-, Pool- und Brückenmodelle ................................................................................................... 3
        SaaS-Identität ............................................................................................................................ 4
        Mandantenisolation ..................................................................................................................... 4
        Datenpartitionierung .................................................................................................................... 5
        „Noisy Neighbor“ ........................................................................................................................ 5
        Mandanten-Onboarding ............................................................................................................... 5
        Mandantenstufen ........................................................................................................................ 5
        Mandantenaktivität und -verbrauch ................................................................................................ 5
                Messung und Abrechnung ................................................................................................... 6
        Mandantenbewusste Vorgänge ..................................................................................................... 6
  Allgemeine konzeptionelle Grundsätze ................................................................................................... 7
  Szenarien ........................................................................................................................................ 10
        Serverless SaaS ....................................................................................................................... 10
                Mandantenübergreifenden Zugriff vermeiden ......................................................................... 12
                Ebenen verbergen Mandantendetails ................................................................................... 13
        Amazon EKS SaaS ................................................................................................................... 14
        Full-Stack-Isolation .................................................................................................................... 16
                Einheitliches Onboarding, Management und Vorgänge ............................................................ 17
        Hybrid-SaaS-Bereitstellung ......................................................................................................... 18
        Multi-Mandanten-Microservices ................................................................................................... 19
        Mandanteneinblicke ................................................................................................................... 20
  Die Säulen des Well-Architected Framework ......................................................................................... 22
        Säule „Betriebliche Exzellenz“ ..................................................................................................... 22
                Konzeptionelle Grundsätze ................................................................................................. 22
                Definition ......................................................................................................................... 22
                Bewährte Methoden .......................................................................................................... 23
                Ressourcen ...................................................................................................................... 28
        Säule „Sicherheit“ ..................................................................................................................... 29
                Konzeptionelle Grundsätze ................................................................................................. 29
                Definition ......................................................................................................................... 29
                Bewährte Methoden .......................................................................................................... 29
                Ressourcen .................................................................................................................... 39
        Säule „Zuverlässigkeit“ ............................................................................................................... 40
                Konzeptionelle Grundsätze ................................................................................................. 40
                Definition ......................................................................................................................... 40
                Bewährte Methoden .......................................................................................................... 40
                Ressourcen ...................................................................................................................... 44
        Säule „Leistungseffizienz“ ........................................................................................................... 45
                Definition ......................................................................................................................... 45
                Bewährte Methoden .......................................................................................................... 45
                Ressourcen ...................................................................................................................... 50
        Säule „Kostenoptimierung“ ......................................................................................................... 50
                Definition ......................................................................................................................... 50
                Bewährte Methoden .......................................................................................................... 51
                Ressourcen ...................................................................................................................... 55
  Fazit ............................................................................................................................................... 56
  Mitwirkende ...................................................................................................................................... 57
  Dokumentversionen ........................................................................................................................... 58
  Hinweise .......................................................................................................................................... 59

                                                                          iii
SaaS Lens AWS Well-Architected Framework
SaaS Lens AWS Well-Architected Framework
                                          Überblick

SaaS Lens
    Veröffentlichungsdatum: 3. Dezember, 2020 (Dokumentversionen (p. 58))

Überblick
    Dieses Paper beschreibt die SaaS Lens für das AWS Well-Architected Framework, mit der Kunden
    ihre cloudbasierten Architekturen überprüfen und verbessern und die geschäftlichen Auswirkungen
    ihrer Designentscheidungen besser verstehen können. Wir gehen dabei auf allgemeine konzeptionelle
    Grundsätze sowie auf Best Practices ein und geben Anleitungen zu fünf konzeptionellen Bereichen, die wir
    als die Säulen des Well-Architected Frameworks bezeichnen.

                                                  1
SaaS Lens AWS Well-Architected Framework
SaaS Lens AWS Well-Architected Framework

Einführung
   Das AWS Well-Architected Framework unterstützt Sie dabei, die Vor- und Nachteile der Entscheidungen
   nachzuvollziehen, die Sie beim Aufbau von Systemen in AWS treffen. Das Framework hilft Ihnen,
   architektonische Best Practices für die Entwicklung und den Betrieb zuverlässiger, sicherer, effizienter
   und kosteneffektiver Systeme in der Cloud zu ermitteln. Es bietet Ihnen die Möglichkeit, Ihre Architekturen
   konsistent hinsichtlich der Einhaltung von Best Practices zu überprüfen und Optimierungsmöglichkeiten
   zu identifizieren. Wir sind davon überzeugt, dass architektonisch gute Systeme die Wahrscheinlichkeit des
   geschäftlichen Erfolgs signifikant beeinflussen.

   Bei dieser „Linse“ konzentrieren wir uns auf die Entwicklung, Bereitstellung und Architektur Ihrer Multi-
   Mandanten-SaaS (Software as a Service)-Anwendungs-Workloads in der AWS Cloud. Der Übersichtlichkeit
   halber behandeln wir nur Details aus dem Well-Architected Framework, die spezifisch für SaaS-Workloads
   sind. Sie sollten weiterhin bewährte Methoden und Fragen berücksichtigen, die nicht in diesem Dokument
   enthalten sind, wenn Sie Ihre Architektur entwerfen. Wir empfehlen Ihnen, das Whitepaper AWS Well-
   Architected Framework zu lesen.

   Dieses Dokument richtet sich an Nutzer in technologischen Rollen, z. B. CTOs (Chief Technology Officers),
   Architekten, Entwickler und Mitglieder von Operations-Teams. Mit Lektüre dieses Dokuments erfahren Sie
   mehr über die bewährten Methoden und Strategien von AWS für die Entwicklung von Architekturen für
   SaaS-Anwendungen.

                                                  2
SaaS Lens AWS Well-Architected Framework
SaaS Lens AWS Well-Architected Framework
                                              Mandant

Definitionen
    Das AWS Well-Architected Framework basiert auf fünf Säulen: betriebliche Exzellenz, Sicherheit,
    Zuverlässigkeit, Leistungseffizienz und Kostenoptimierung. Durch SaaS ist jede dieser Säule mit
    vollkommen neuen Überlegungen verknüpft. Da es sich bei SaaS-Anwendungen um Multi-Mandanten-
    Anwendungen handelt, müssen Architekten einen neuen Ansatz dafür finden, wie sie Sicherheit,
    betriebliche Exzellenz, Stabilität und Agilität in ihre SaaS-Umgebungen einbinden. In diesem Abschnitt
    finden Sie eine Übersicht über die SaaS-Konzepte, die in diesem Dokument verwendet werden. Wenn Sie
    eine SaaS-Architektur aufbauen, müssen Sie 10 Bereiche berücksichtigen.

    Themen
     • Mandant (p. 3)
     • Silo-, Pool- und Brückenmodelle (p. 3)
     • SaaS-Identität (p. 4)
     • Mandantenisolation (p. 4)
     • Datenpartitionierung (p. 5)
     • „Noisy Neighbor“ (p. 5)
     • Mandanten-Onboarding (p. 5)
     • Mandantenstufen (p. 5)
     • Mandantenaktivität und -verbrauch (p. 5)
     • Mandantenbewusste Vorgänge (p. 6)

Mandant
    Ein Mandant ist das grundlegendste Konstrukt einer SaaS-Umgebung. Wenn Sie als SaaS-Anbieter eine
    Anwendung bauen, stellen Sie diese Anwendung Ihren Kunden zur Verfügung. Die Kunden, die sich
    anmelden, um Ihre Umgebung zu nutzen, werden in Ihrem System als Mandanten dargestellt. Stellen
    Sie sich zum Beispiel vor, Ihr Unternehmen hat einen Buchhaltungsservice erstellt, den Sie anderen
    Unternehmen zur Verfügung stellen möchten, damit sie damit ihre Geschäfte verwalten können. Jedes
    dieser Unternehmen würde als ein Mandant Ihres Systems gelten.

    Wenn sich ein Mandant registriert, wird er meist Benutzerinformationen für den Mandanten-Administrator
    bereitstellen. Der Mandanten-Administrator kann sich dann im System anmelden und es basierend auf
    den Bedürfnissen des jeweiligen Unternehmens konfigurieren. Dazu gehört die Fähigkeit, Benutzer einer
    bestimmten Mandanten-Umgebung hinzuzufügen.

    Die in diesem Modell bereitgestellte Software wird als ein Multi-Mandanten-SaaS-System bereitgestellt, da
    jeder der Mandanten des Services ein einziges, gemeinsames System nutzt, das die Bedürfnisse dieser
    Mandanten in Form einer einheitlichen Erfahrung unterstützt. Ein Update an dem System beispielsweise
    wird gewöhnlich für alle Mandanten dieses Systems durchgeführt.

Silo-, Pool- und Brückenmodelle
    SaaS-Architekturen können mit vielen verschiedenen Architekturmodellen gebaut werden. Regulatorische,
    wettbewerbsorientierte, strategische, Kosteneffizienz- und Marktüberlegungen wirken sich allesamt auf
    Ihre SaaS-Architektur aus. Gleichzeitig werden Strategien und Muster angewendet, um den Fußabdruck

                                                  3
SaaS Lens AWS Well-Architected Framework
SaaS Lens AWS Well-Architected Framework
                                          SaaS-Identität

     einer SaaS-Anwendung zu definieren. Diese Muster lassen sich in eine von drei Kategorien einordnen: Silo,
     Brücke und Pool.

     Das Silomodell bezieht sich auf eine Architektur, in der Mandanten dedizierte Ressourcen bereitgestellt
     werden. Stellen Sie sich beispielsweise eine SaaS-Umgebung vor, in der jeder Mandant Ihres Systems
     ein vollständig unabhängiges Infrastruktur-Stack hat. Oder vielleicht, dass jeder Mandant Ihres Systems
     für jeden Mandanten eine separate Datenbank hat. Wenn einige oder alle Ressourcen eines Mandanten
     auf diese dedizierte Weise bereitgestellt werden, bezeichnen wir das als Silomodell. Es sei darauf
     hingewiesen, dass, auch wenn das Silo dedizierte Ressourcen hat, eine Siloumgebung dennoch auf
     einer gemeinsamen Identität, Onboarding und operativer Erfahrung basiert, in der alle Mandanten über
     ein gemeinsames Konstrukt verwaltet und bereitgestellt werden. Das unterscheidet SaaS von einem
     verwalteten Servicemodell, in dem Kunden separate Versionen Ihres Produkts mit separaten Onboarding-,
     Management- und operativen Erfahrungen ausführen können.

     Im Gegensatz dazu steht das Poolmodell von SaaS, in dem Mandanten sich Ressourcen teilen. Bei dieser
     klassischeren Definition einer Multi-Mandanten-Umgebung hängen Mandanten von einer gemeinsamen,
     skalierbaren Infrastruktur ab, um Einsparungen in den Bereichen Skalierbarkeit, Verwaltbarkeit, Agilität
     usw. zu erreichen. Diese gemeinsamen Ressourcen können sich auf einige oder alle Elemente Ihrer SaaS-
     Architektur beziehen, darunter Rechenleistung, Speicher, Messaging usw.

     Das letzte Muster ist das Brückenmodell. Mit Brücke wird die Tatsache anerkannt, dass sich SaaS-
     Geschäfte nicht immer nur als Silo oder Pool definieren lassen. Stattdessen haben viele Systeme einen
     gemischten Modus, bei dem ein Teil des Systems in einem Silomodell implementiert ist und ein anderer
     Teil in einem Poolmodell. Einige Microservices in Ihrer Architektur könnten beispielsweise mit einem Silo-,
     andere mit einem Poolmodell implementiert sein. Das regulatorische Profil der Daten eines Services und
     ihre „Noisy Neighbor“-Eigenschaften könnten einen Microservice in ein Silomodell lenken. Die Agilität, die
     Zugriffsmuster und das Kostenmodell eines anderen Microservices wiederum könnten ihn in ein Poolmodell
     lenken.

SaaS-Identität
     Die Authentifizierung erfolgt in den meisten Systemen über einen Identitätsanbieter. In der Welt von SaaS
     müssen wir den Begriff „Identität“ um Mandanten erweitern. Das bedeutet, dass wir, nachdem wir einen
     Benutzer authentifiziert haben, wissen müssen, wer der Benutzer ist und mit welchem Mandanten er
     verbunden ist. Das Verschmelzen der Benutzeridentität mit der Mandantenidentität wird als eine SaaS-
     Identität bezeichnet. Dieses Konzept ist ein grundlegendes Element einer SaaS-Architektur, das den
     Mandantenkontext bereitstellt, mit dem die zugrunde liegenden Multi-Mandanten-Richtlinien und -Strategien
     implementiert werden, die Teil einer SaaS-Anwendung sind.

Mandantenisolation
     Mandantenisolation gehört zu den ersten Themen, mit denen sich jeder SaaS-Anbieter befassen muss.
     Unabhängige Softwareanbieter (ISVs) wenden sich SaaS zu und übernehmen ein gemeinsames
     Infrastrukturmodell, um operative und Kosteneffizienz zu erzielen. In diesem Zusammenhang müssen
     sie sich auch damit befassen, wie ihre Multi-Mandanten-Umgebungen sicherstellen werden, dass kein
     Mandant auf die Ressourcen eines anderen Mandanten zugreifen kann. Sollte die Grenze in irgendeiner
     Form überschritten werden, würde dies für ein SaaS-Unternehmen ein bedeutendes und möglicherweise
     nicht behebbares Ereignis darstellen.

     Die Notwendigkeit der Mandantenisolation gilt zwar bei SaaS-Anbietern als essentiell, es gibt aber keine
     einheitlichen Strategien und Ansätze, um diese Isolation zu erreichen. Viele verschiedene Faktoren können
     sich darauf auswirken, wie die Mandantenisolation in einer SaaS-Umgebung erreicht wird. Die Domäne,
     Compliance, das Bereitstellungsmodell und die Auswahl der AWS-Services sind alle mit ihren individuellen
     Überlegungen in Bezug auf die Mandantenisolation verknüpft.

                                                    4
SaaS Lens AWS Well-Architected Framework
SaaS Lens AWS Well-Architected Framework
                                         Datenpartitionierung

     Unabhängig davon, wie die Isolation umgesetzt wird, muss jede SaaS-Architektur sicherstellen, dass sie
     über die Konstrukte verfügt, mit denen sichergestellt wird, dass die Ressourcen jedes Mandanten effektiv
     isoliert wurden.

Datenpartitionierung
     Wenn Sie verschiedene Architekturmuster für die Darstellung von Multi-Mandanten-Daten betrachten,
     müssen Sie Entscheidungen darüber treffen, wie diese Daten organisiert werden. Werden die Daten
     in separaten Datenbanken gespeichert oder in einem gemeinsamen Konstrukt vermischt? Diese Multi-
     Mandanten-Speichermechanismen und -muster werden meist als Datenpartitionierung bezeichnet.

„Noisy Neighbor“
     „Noisy Neighbor“ ist ein Begriff, der häufig auf allgemeine Architekturmuster und -strategien angewendet
     wird. Er bezieht sich darauf, dass ein Benutzer eines Systems auf die Ressourcen dieses Systems eine
     Last ausüben könnte, die sich negativ auf andere Benutzer im System auswirkt. Das könnte dazu führen,
     dass ein Benutzer die Erfahrung eines anderen Benutzers verschlechtert.

     Dieses Konzept ist besonders relevant in einer Multi-Mandanten-Umgebung, in der Mandanten
     gemeinsame Ressourcen nutzen können. Erschwerend kommt hinzu, dass die Workloads in einer Multi-
     Mandanten-Umgebung unvorhersehbar sein können. Daher müssen SaaS-Architekturen unbedingt eigene
     Strategien umsetzen und die möglichen Auswirkungen von „noisy“ Mandanten verwalten und geringhalten.

Mandanten-Onboarding
     SaaS-Anwendungen bauen auf einem unkomplizierten Modell für die Einführung neuer Mandanten in
     ihre Umgebung auf. Dafür müssen häufig eine Reihe von Komponenten zusammenwirken, um alle für die
     Erstellung eines neuen Mandanten erforderlichen Elemente erfolgreich bereitzustellen und zu konfigurieren.
     Dieser Vorgang wird in der SaaS-Architektur als Mandanten-Onboarding bezeichnet. Es sei darauf
     hingewiesen, dass das Mandanten-Onboarding direkt von den Mandanten oder im Rahmen eines vom
     Anbieter verwalteten Vorgangs initiiert werden kann.

Mandantenstufen
     Eine SaaS-Anwendung wird häufig gebaut, um eine Reihe von Marktsegmenten zu unterstützen und
     verschiedenen Kundenprofilen separate Preise und Erfahrungen zu bieten. Diese Profile werden häufig als
     Stufen bezeichnet. Damit diese verschiedenen Stufen unterstützt werden, müssen Architekturkonstrukte
     eingeführt werden, die sich auf die Erfahrung jeder Stufe auswirken können. Diese mehrstufigen Modelle
     können den Kosten-, Betriebsvorgangs-, Management- und Zuverlässigkeitsfußabdruck einer SaaS-Lösung
     beeinflussen.

Mandantenaktivität und -verbrauch
     In einer Multi-Mandanten-SaaS-Umgebung muss sichtbar sein, wie Mandanten Ihre Anwendung nutzen
     und die Architektur Ihres Systems belasten. Wenn Sie diese Informationen auf Mandantenebene verfolgen,
     können Sie beurteilen, ob Ihr System die sich ständig ändernden Workloads in Ihrer Umgebung effektiv
     skalieren und unterstützen kann. Die Metriken und Erkenntnisse, die von einem SaaS-System gesammelt
     werden, werden als Mandantenaktivität und -verbrauch bezeichnet.

                                                   5
SaaS Lens AWS Well-Architected Framework
SaaS Lens AWS Well-Architected Framework
                                     Messung und Abrechnung

    Messung und Abrechnung
    SaaS-Produkte werden häufig als Pay-as-You-Go-Modell verkauft, bei dem die Kosten eines Produkts vom
    Verbrauchsprofil eines Kunden abhängen. Bei diesem Modell haben Kunden ein Preismodell, das enger
    mit dem Wert und der Belastung eines SaaS-Systems verknüpft ist. Bei diesem Modus definieren SaaS-
    Anbieter Messmechanismen, die den Verbrauch messen, und führen sie ein. Diese Messdaten werden in
    der Regel an ein Abrechnungssystem geschickt, dass die Abrechnungsinformationen sammelt und eine
    Rechnung erstellt. Verbrauchsbasierte Preise stellen ein Preismodell dar, das mit weiteren Preisstrategien
    (wie ein Abonnement) kombiniert werden kann.

Mandantenbewusste Vorgänge
    Für den Betrieb von SaaS-Umgebungen werden zusätzliche Mechanismen und Tools benötigt, mit denen
    operative Ansichten erstellt werden können, die es den Teams ermöglichen, mandantenbewusste optionale
    Ansichten zu erstellen. Die Idee dahinter ist, dass SaaS-Anbieter die Systemaktivität und -gesundheit
    aus dem Blickwinkel individueller Mandanten oder Mandantenstufen betrachten können müssen. Das
    ist entscheidend bei der Diagnose und Beurteilung von Trends und Mustern in den Aktivitäten und im
    Verbrauch einzelner Mandanten.

                                                  6
SaaS Lens AWS Well-Architected Framework
SaaS Lens AWS Well-Architected Framework

Allgemeine konzeptionelle
Grundsätze
   Das Well-Architected Framework fasst allgemeine konzeptionelle Grundsätze zusammen, die einen guten
   Aufbau in der Cloud für SaaS-Anwendungen fördern:

   • Es gibt nicht nur eine SaaS-Architektur: Die Bedürfnisse von SaaS-Unternehmen, die Art ihrer Domäne,
     ihre Complianceanforderungen, ihre Marktsegmente, ihre Lösungsart sind allesamt Faktoren, die sich
     entscheidend auf die Architektur einer SaaS-Umgebung auswirken. Jede SaaS-Umgebung sollte von
     einer operativen und Kundenerfahrung umgeben sein, die die Agilität und Software-as-a-Service-
     Grundsätze widerspiegeln, die für ein erfolgreiches SaaS-Angebot entscheidend sind. Egal, wie
     das System aufgebaut ist, es sollte immer möglich sein, dass Mandanten über eine einzige Konsole
     hinzugefügt, verwaltet und geleitet werden. Dadurch erreicht das SaaS-Unternehmen die Agilität und die
     umfangreichen Einsparungen, die den Grundstein beim Aufbau eines SaaS-Geschäfts bilden.
   • Zerlegung jedes Services basierend auf seiner Multi-Mandanten-Last und seinem Isolationsprofil: Wenn
     Sie Ihr System in Services zerlegen, sollte Ihre Zerlegungsstrategie berücksichtigen, wie sich Multi-
     Mandanten-Lasten, Mandantenstufen und Isolationsanforderungen auf die Services auswirken, die
     Teil Ihres Systems sind. In diesen Szenarios muss jeder Service separat betrachtet werden. Einige
     Services können Daten vielleicht zusammenlegen, während andere die Daten, die sie verwalten, aus
     Compliancegründen oder aufgrund von „Noisy Neighbor“-Vorkehrungen separat speichern müssen. Sie
     werden ebenso sehen, dass einige Services in einem Silomodell bereitgestellt werden, um mehrstufige
     Strategien zu ermöglichen. Für Premium-Mandanten beispielsweise können als Teil der Wertgeschichte
     der Premiumstufe einige Services in einem Silomodell verfügbar sein.
   • Alle Mandantenressourcen werden isoliert: Der Erfolg eines SaaS-Systems hängt stark von
     einem Sicherheitsmodell ab, das sicherstellt, dass die Mandantenressourcen stets vor jeglichem
     mandantenübergeifenden Zugriff geschützt sind. Eine robuste SaaS-Architektur führt Isolationsstrategien
     in jeder Ebene der Architektur ein und stellt spezifische Konstrukte bereit, die sicherstellen, dass jeglicher
     Versuch, auf eine Mandantenressource zuzugreifen, im Sinne des aktuellen Mandantenkontextes gültig
     ist.
   • Auf Wachstum ausgelegt: Bei der Entscheidung für ein SaaS-Modell geht es für SaaS-Unternehmen
     häufig um Wachstum. Während Sie den architektonischen und operativen Fußabdruck Ihres SaaS-
     Angebots festlegen, müssen Sie stets im Hinterkopf behalten, wie Ihre Umgebung in der Lage sein wird,
     einen rasanten Anstieg neuer Mandanten zu unterstützen. SaaS-Architekten müssen eine besonders
     agile, reibungslose Umgebung aufbauen, die Anstiege im Mandanten-Onboarding ohne erheblichen
     zusätzlichen Betriebsaufwand bewältigen kann. Hier geht es darum, ein Wachstum Ihres Kundenstamms
     zu ermöglichen, ohne den operativen oder infrastrukturellen Fußabdruck Ihrer SaaS-Umgebung zu
     vergrößern.
   • Mandantenmetriken instrumentieren, erfassen und analysieren: Wenn Sie mehrere Mandanten in einer
     Umgebung haben, insbesondere in einer gemeinsamen Umgebung, kann es schwierig sein, einen klaren
     Überblick darüber zu haben, wie Mandanten Ihr System nutzen. SaaS-Teams müssen in metrische
     Instrumente investieren, die Einblicke in die von den Mandanten genutzten Funktionen, die Belastung
     des Systems, die Engpässe, das Kostenprofil ihrer Aktivitäten usw. geben können. Die Daten sind
     wichtig, um Mandantentrends zu analysieren, die sich direkt auf die geschäftliche, architektonische
     und operative Gesundheit eines SaaS-Unternehmens auswirken, und entsprechend in die Strategie
     eingespeist zu werden.
   • Mandanten-Onboarding erfolgt über einen einzigen, automatisierten, wiederholbaren Prozess: SaaS
     steht für Agilität. Wichtiger Bestandteil der Agilität ist der Mandanten-Onboarding-Vorgang. Ein robustes
     SaaS-System verfügt über einen unkomplizierten, wiederholbaren Vorgang für das Onboarding neuer

                                                    7
SaaS Lens AWS Well-Architected Framework

  Mandanten in Ihr System. Das ermöglicht Skalierbarkeit und Wachstum. Und so wird auch sichergestellt,
  dass neue Kunden schneller einen Nutzen aus Ihrer Anwendung ziehen.
• Die Unterstützung von Multi-Mandanten-Erfahrungen einplanen: SaaS-Märkte und -Kunden lassen
  sich nicht alle in einem einzigen Profil unterbringen. SaaS-Unternehmen müssen häufig eine Reihe von
  Mandantenprofilen unterstützen, die unterschiedliche Anforderungen an Ihre Architektur und Operationen
  haben. Als SaaS-Anbieter und -Architekt müssen Sie diese Mandantenpersönlichkeiten modellieren und
  eine einzige Umgebung aufbauen, die Konstrukte und Mechanismen umfasst, mit denen eine Reihe
  von Mandantenerfahrungen ermöglicht werden, ohne einmalige Versionen Ihres Produkts erstellen
  zu müssen. Es ist wichtig, dass Sie die Wertgrenzen Ihres Systems identifizieren, damit das Geschäft
  Stufen für Ihr Angebot erstellen kann, die mehrere Segmente erreichen und das Vorankommen eines
  Kunden durch diese Stufen fördert.
• Unterstützung von einmaligen Bedürfnissen durch globale Anpassung: SaaS-Agilität und -Innovation
  werden durch eine einzige Umgebung erreicht, die von allen Kunden ausgeführt wird. Es ist ein
  grundlegender Bestandteil von SaaS, alle Kunden gemeinsam aktualisieren, verwalten und leiten zu
  können. In der Realität sind für einige Kunden jedoch unter Umständen Anpassungen erforderlich. Diese
  Anpassungen sollten als Konfigurationsoptionen eingeführt werden, die jedem Kunden zur Verfügung
  stehen. Indem diese Funktionen wesentlicher Bestandteil des Angebots werden, kann ein SaaS-
  Unternehmen einmalige Bedürfnisse unterstützen, ohne dass die Agilität, die betriebliche Effizienz und
  die Innovationsziele des Geschäfts darunter leiden müssten.
• Verknüpfung von Benutzeridentität mit Mandantenidentität: Für jede Ebene Ihrer Architektur wird
  wahrscheinlich eine Art Mandantenkontext erforderlich sein, um Daten zu protokollieren, Metriken
  aufzuzeichnen, auf Daten zuzugreifen usw. Das bedeutet, dass der Mandantenkontext ein erstklassiges
  Konstrukt sein muss, das von den Ebenen Ihrer Architektur gelöst und leicht erreicht werden
  kann, ohne dass ein anderer Service hinzugezogen werden müsste. Die Authentifizierungs- und
  Autorisierungserfahrung Ihrer Lösung sollte die Mandantenidentität (und möglicherweise andere
  Mandantenattribute) mit der Identität des authentifizierten Benutzers verknüpfen. Dadurch entsteht
  eine SaaS-Identität, die durch alle Ebenen des Systems geführt wird und einen leichten Zugriff auf den
  Mandantenkontext ermöglicht.
• Anpassung des Infrastrukturverbrauchs an die Mandantenaktivität: Die Aktivitäten von Mandanten
  in einer SaaS-Umgebung lassen sich häufig nicht vorhersehen. Welche Ressourcen Mandanten
  verbrauchen, wie sie sie verbrauchen und wann sie sie verbrauchen, kann stark variieren. Auch die
  Anzahl der Mandanten in Ihrem System kann sich regelmäßig ändern. All diese Faktoren stellen zwar
  Skalierungsherausforderungen dar, eine robuste SaaS-Architektur wird jedoch über Richtlinien verfügen,
  um eine Überbereitstellung zu begrenzen und den Infrastrukturverbrauch einer Anwendung auf die
  Echtzeittrends in der Mandantenaktivität anzupassen. Das führt zu einer engeren Übereinstimmung
  zwischen Mandanten-Workloads und dem Kostenprofil Ihrer gesamten SaaS-Infrastruktur.
• Entwicklerbewusstsein auf Multi-Mandanten-Konzepte beschränken: Auch wenn sich Tenancy durch alle
  Ebenen Ihrer Architektur zieht, sollten Sie das Ziel haben, dass Entwickler möglichst wenig mit Tenancy
  zu tun haben. Als Faustregel gilt, dass sich die Erfahrung eines Entwicklers, der einen Multi-Mandanten-
  Service schreibt, nicht sehr stark vom Schreiben eines Services ohne Mandanten unterscheiden soll.
  Wenn Entwickler über ihren Code Tenancy einführen müssen, wird es schwierig sein, die Einhaltung der
  Multi-Mandanten-Richtlinien und -Mechanismen Ihrer Anwendung zu verwalten und durchzusetzen. Das
  bedeutet, dass Entwicklern Bibliotheken und wiederverwendbare Konstrukte bereitgestellt werden, um
  die Details der Mandanten zu verbergen.
• SaaS ist eine Geschäftsstrateige, keine technische Implementierung: SaaS-Umgebungen und ihre
  zugrunde liegenden Technologieentscheidungen werden direkt von den Agilitäts-, Innovations- und
  Wettbewerbsbedürfnissen des Geschäfts beeinflusst. Der Schwerpunkt liegt hier darauf, den Kunden
  eine Serviceerfahrung zu bieten, die sich auf null Ausfallzeit, regelmäßige Updates und eine engere
  Verbindung zu Kunden konzentriert. Daher muss ein architektonischer und operativer Fußabdruck
  geschaffen werden, der die ständige Weiterentwicklung von und schnelle Antwort auf Marktnachfragen
  stemmen kann. Eine technisch solide Architektur, die keine Agilität, Innovation und operative Effizienz
  ermöglicht, wird wahrscheinlich nicht mit der Wettbewerbslandschaft des Marktes mithalten können,
  insbesondere wenn Sie SaaS-Anbieter als Wettbewerber haben.
• Mandantenbewusste betriebliche Ansichten erstellen: Operations Teams sind in einer Multi-Mandanten-
  Umgebungen neuen Herausforderungen ausgesetzt. Auch wenn es in SaaS-Umgebungen weiter wichtig

                                               8
SaaS Lens AWS Well-Architected Framework

  ist, einen globalen Überblick über den Zustand und die Aktivität eines Systems zu behalten, umfasst
  ein robuster operativer SaaS-Fußabdruck auch Einblicke in die Nutzung des Systems durch bestimmte
  Mandanten oder Mandantenstufen. SaaS Operations Teams sollten Dashboards und Ansichten erstellen,
  über die sie die Aktivitäten und Lasten einzelner Mandanten analysieren und zuordnen können. Die
  Nutzung aus dem Blickwinkel einzelner Mandanten zu sehen und zu untersuchen ist wichtig beim Aufbau
  einer proaktiven, effizienten operativen Multi-Mandanten-Erfahrung.
• Die Kostenauswirkung einzelner Mandanten messen: Die Geschäftsebene, die Architekten und die
  Operations Teams eines SaaS-Unternehmens müssen sich häufig ein klares Bild davon verschaffen,
  wie Mandanten sich auf den Kostenfußabdruck einer SaaS-Umgebung auswirken. Zum Beispiel:
  Verursachen die Mandanten in der Grundstufe höhere Kosten als die Mandanten in der Premiumstufe?
  Ändern Mandantenverbrauchsmuster oder -merkmale das Kostenprofil Ihrer Umgebung? Das sind
  einige der Fragen, die am besten beantwortet werden können, wenn Sie einen klaren Überblick über die
  Kostenprofile der Mandanten haben. Das ist vor allem in den Umgebungen von Bedeutungen, in denen
  sich mehrere Mandanten Mandantenressourcen teilen. Das Erfassen und Ermitteln dieser Daten bietet
  einem SaaS-Geschäft häufig wertvolle Einblicke, die die Architektur und das Geschäftsmodell eine SaaS-
  Unternehmens beeinflussen können.

                                             9
SaaS Lens AWS Well-Architected Framework
                                        Serverless SaaS

Szenarien
    In diesem Abschnitt befassen wir uns mit einer Reihe von Szenarien, die häufige Muster und Strategien
    beim Design und Aufbau von SaaS-Lösungen in AWS vorstellen. Wir präsentieren die Annahmen,
    die wir für jedes dieser Szenarien gemacht haben, die gängigen Treiber für das Design und eine
    Referenzarchitektur, wie diese Szenarien mit AWS-Architektur-Konstrukten erstellt werden.

    Themen
     • Serverless SaaS (p. 10)
     • Amazon EKS SaaS (p. 14)
     • Full-Stack-Isolation (p. 16)
     • Hybrid-SaaS-Bereitstellung (p. 18)
     • Multi-Mandanten-Microservices (p. 19)
     • Mandanteneinblicke (p. 20)

Serverless SaaS
    Die Entscheidung für ein SaaS-Bereitstellungsmodell geht mit dem Wunsch nach maximaler Kosten- und
    Betriebseffizienz einher. Das kann vor allem in einer Multi-Mandanten-Umgebung eine Herausforderung
    sein, in der sich die Aktivität von Mandanten nur schwer vorhersagen lässt. Die richtig zusammengesetzte
    Skalierungsstrateige, die die Mandantenaktivität auf den tatsächlichen Ressourcenverbrauch ausrichtet, ist
    mitunter schwer definierbar. Die Strategie, die heute funktioniert, kann morgen unter Umständen nicht mehr
    funktionieren.

    Aufgrund dieser Eigenschaften ist SaaS gut für ein serverloses Modell geeignet. Wenn Unternehmen
    Server aus ihrer SaaS-Architektur entfernen, können sie sich auf skalierbare verwaltete Services
    verlassen und genau die Ressourcen bereitstellen, die Ihre Anwendung verbraucht. Das vereinfacht den
    architektonische und betrieblichen Fußabdruck Ihrer Anwendung, da keine Skalierungsrichtlinien ständig
    verfolgt und verwaltet werden müssen. Ebenso werden der Betriebsaufwand und die Komplexität verringert
    und mehr operative Verantwortung auf die verwalteten Services übertragen.

    AWS bietet eine Reihe von Services, mit denen eine serverlose SaaS-Lösung implementiert werden kann.
    Das Diagramm in Abbildung 1 zeigt ein Beispiel einer serverlosen Architektur.

                                                  10
SaaS Lens AWS Well-Architected Framework
                                    Serverless SaaS

Abbildung 1: Serverlose SaaS-Architektur

Hier sehen Sie, dass sich die beweglichen Teile einer serverlosen SaaS-Architektur nicht stark von einer
klassischen serverlosen Webanwendungsarchitektur unterscheiden. Links im Diagramm sehen Sie, dass
unsere Webanwendung über einen Amazon S3-Bucket gehostet und bedient wird (wahrscheinlich von
einem modernen Client-Framework wie React, Angular usw.).

In dieser Architektur nutzt die Anwendung Amazon Cognito als unseren SaaS-Identitätsanbieter. Die
Authentifizierungserfahrung bildet ein Token, das unseren SaaS-Kontext umfasst, der über ein JSON Web
Token (JWT) vermittelt wird. Dieses Token wird dann in unsere Interaktionen mit allen nachgelagerten
Anwendungsservices injiziert.

Die Interaktion mit unseren serverlosen Anwendungsservices wird von dem Amazon API Gateway
organisiert. Der Gateway übernimmt hier mehrere Rollen. Er validiert die eingehenden Mandanten-Token
(über einen Lambda-Genehmiger), weist jede Anfrage eines Mandanten Microservices zu und kann
verwendet werden, um die SLAs unterschiedlicher Mandantenstufen zu verwalten (über Nutzungspläne).

Sie werden auch sehen, dass wir hier eine Reihe von Microservices dargestellt haben, die als Platzhalter
für die zahlreichen Services dienen, die die Multi-Mandanten-IP Ihrer SaaS-Anwendung implementieren
würden. Jeder Microservice hier setzt sich aus einer oder mehreren Lambda-Funktionen zusammen, die
den Vertrag Ihres Microservices implementieren. In Übereinstimmung mit bewährten Microservicemethoden
fassen diese Services auch die Daten zusammen, die sie verwalten. Diese Services sind von dem
eingehenden JWT-Token abhängig, um den Mandantenkontext zu erhalten und dort anzuwenden, wo er
benötigt wird.

Wir haben hier auch für jeden Microservice Speicher angezeigt. In Übereinstimmung mit bewährten
Microservicemethoden besitzt jeder Microservice die von ihm verwalteten Ressourcen. So können sich
beispielsweise zwei Microservices nicht eine Datenbank teilen. SaaS hat hier einen Nachteil, da die Multi-
Mandanten-Darstellung der Daten je nach Service anders aussehen kann. Ein Service kann für jeden
Mandanten separate Datenbanken haben (Silo), während ein anderer die Daten in der gleichen Tabelle
vermischt (Pool). Die Speicherentscheidungen, die Sie hier treffen, sollten sich an Überlegungen zu
Compliance, „Noisy Neighbor“, Isloation und Leistung orientieren.

Rechts im Diagramm sehen Sie schließlich eine Reihe gemeinsamer Services. Diese Services stellen
die gesamte Funktionalität bereit, die von allen Mandanten geteilt wird, die links im Diagramm angezeigt
werden. Diese Services repräsentieren häufige Services, die für gewöhnlich als separate Microservices
gebaut werden und für das Onboarding, die Verwaltung und die Leitung von Mandanten erforderlich sind.

                                              11
SaaS Lens AWS Well-Architected Framework
                         Mandantenübergreifenden Zugriff vermeiden

Weitere Informationen über allgemeine bewährte Well-Architected-Methoden finden Sie im Whitepaper
Serverless Applications Lens.

Mandantenübergreifenden Zugriff vermeiden
Jede SaaS-Architektur muss außerdem überlegen, wie sie verhindern wird, dass Mandanten auf die
Ressourcen eines anderen Mandanten zugreifen. Einige fragen sich, ob Mandanten wirklich mit AWS
Lambda isoliert werden müssen, da grundsätzlich immer nur ein Mandant auf einmal eine Lambda-Funktion
ausführen kann. Das stimmt zwar, aber unsere Isolation muss auch sicherstellen, dass ein Mandant,
der eine Funktion ausführt, nicht auf andere Ressourcen zugreift, die möglicherweise einem anderen
Mandanten gehören.

SaaS-Anbieter können bei der Implementierung von Isolation in einer serverlosen SaaS-Umgebung zwei
grundlegende Ansätze verfolgen. Die erste Option folgt dem Silomuster, bei dem für jeden Mandanten
ein separater Satz an Lambda-Funktionen bereitgestellt wird. Mit diesem Modell definieren Sie eine
Ausführungsrolle für jeden Mandanten und stellen für jeden Mandanten separate Funktionen mit seiner
Ausführungsrolle bereit. Diese Ausführungsrolle definiert, auf welche Ressourcen ein bestimmter Mandant
zugreifen kann. Sie können zum Beispiel in diesem Modell eine Reihe von Mandanten der Premiumstufe
bereitstellen. Die Verwaltung kann sich jedoch als schwierig erweisen und mit Kontolimits in Berührung
kommen (je nachdem, wie viele Mandanten Ihr System unterstützt).

Die andere Option entspricht eher dem Poolmodell. Hier werden Funktionen in einer Ausführungsrolle
bereitgestellt, deren Umfang so breit ist, dass sie Aufrufe von allen Mandanten akzeptiert. In diesem Modus
müssen Sie den Isolationsumfang während der Laufzeit in der Implementierung Ihrer Multi-Mandanten-
Funktionen anwenden. Das Diagramm in Abbildung 2 zeigt ein Beispiel dafür, wie das aussehen würde.

Abbildung 2: Isolation in einer serverlosen Umgebung

In diesem Beispiel sehen Sie, dass drei Mandanten auf eine Reihe von Lambda-Funktionen zugreifen.
Da diese Funktionen geteilt werden, werden sie mit einer Ausführungsrolle bereitgestellt, die alle
Mandanten abdeckt. Innerhalb der Implementierung dieser Funktionen verwendet unser Code den
Kontext des aktuellen Mandanten (über JWT bereitgestellt), um neue auf den Mandanten ausgerichtete
Anmeldeinformationen von AWS Security Token Service (AWS STS) zu erhalten. Wenn wir diese
Anmeldeinformationen erhalten haben, kann mit ihnen auf die Ressourcen mit Mandantenkontext
zugegriffen werden. In diesem Beispiel verwenden wir diese ausgerichteten Anmeldeinformationen, um auf
Speicher zuzugreifen.

                                              12
SaaS Lens AWS Well-Architected Framework
                            Ebenen verbergen Mandantendetails

Es sei darauf hingewiesen, dass in diesem Modell kein Teil des Isolationsmodells in den Code Ihrer
Lambda-Funktionen verschoben wird. Es gibt Methoden (beispielsweise Funktions-Wrapper), die
dieses Konzept außerhalb des Blickfelds der Entwickler einführen können. Die Details zum Erhalt dieser
Anmeldeinformationen können auch auf eine Lambda-Ebene verschoben werden, damit dieses Konstrukt
nahtloser und zentral verwaltet wird.

Ebenen verbergen Mandantendetails
Eines unserer Ziele bei jeder SaaS-Architektur besteht darin, das Entwicklerbewusstsein über
Mandantendetails zu beschränken. In serverlosen SaaS-Umgebungen können Sie Lambda-Ebenen
nutzen, um gemeinsamen Code zu erstellen, der Multi-Mandanten-Richtlinien außerhalb des Blickfelds der
Entwickler implementiert.

Das Diagramm in Abbildung 3 zeigt ein Beispiel dafür, wie Lambda-Ebenen verwendet werden können,
um diese Multi-Mandanten-Konzepte anzugehen. Hier sehen Sie, dass wir zwei separate Microservices
haben (Product und Order), die Protokoll- und Metrik-Daten veröffentlichen müssen. Das entscheidende
Detail hier ist, dass beide Services Mandantenkontext in ihre Protokollmeldungen und Metrikereignisse
injizieren müssen. Es wäre jedoch alles andere als ideal, wenn jeder Service diese Richtlinien eigenständig
implementieren müsste. Stattdessen haben wir eine Ebene eingeführt, die Code enthält, der die
Veröffentlichung dieser Daten verwaltet.

Abbildung 3: Lambda-Ebenen verbergen Mandantendetails

Sie werden feststellen, dass unsere Ebene Protokoll- und Metrikhelfer umfasst, die ein JWT-Token
akzeptieren. Dadurch kann jeder Microservice einfach diese Funktionen aufrufen und das Token
bereitstellen, ohne darauf achten zu müssen, um welchen Mandanten es geht. Innerhalb der Ebene
verwendet der Code dann das JWT-Token, um den Mandantenkontext aufzulösen und ihn in die
Protokollmeldungen und Metrikereignisse zu injizieren.

Das ist nur ein kleiner Überblick darüber, wie Ebenen angewendet werden können, um Mandantenkontext
zu verbergen. Der wahre Mehrwert besteht darin, dass die Richtlinien und Mechanismen für das Injizieren
von Mandantenkontext vollkommen von der Entwicklererfahrung entfernt wurden. Sie werden auch separat
aktualisiert, versioniert und bereitgestellt. Dadurch können diese Richtlinien in Ihrer Umgebung zentraler
verwaltet werden, ganz ohne die Einführung separater Microservices, die zu mehr Latenz führen und
Engpässe erzeugen könnten.

                                              13
SaaS Lens AWS Well-Architected Framework
                                       Amazon EKS SaaS

Amazon EKS SaaS
   Für viele SaaS-Anbieter passt das Profil von Amazon Elastic Kubernetes Service (Amazon EKS) gut zu
   Ihren Zielen bezüglich der Entwicklung und Architektur von Microservices. Es baut Multi-Mandanten-
   Microservices auf und stellt sie so bereit, dass die Agilitäts-, Skalierungs-, Kosten- und Betriebsziele
   erreicht werden können, ohne dass sie sich auf vollkommen andere Entwicklungstools und -einstellungen
   einlassen müssten. Die umfangreiche Community an Kubernetes-Tools und -Lösungen bietet SaaS-
   Entwicklern zudem eine Reihe verschiedener Optionen für den Aufbau, die Verwaltung, die Sicherung und
   den Betrieb ihrer SaaS-Umgebungen.

   In Container-basierten Umgebungen ist ein Großteil der Architektur darauf ausgerichtet, wie wir erfolgreich
   sicherstellen, dass mandantenübergreifender Zugriff vermieden wird. Es kann zwar verlockend sein,
   Mandanten das Teilen von Containern zu gestatten, aber dabei wird davon ausgegangen, dass Mandanten
   mit einer lockeren Multi-Mandanten-Umgebung einverstanden wären. In den meisten SaaS-Umgebungen
   erfordern die Isolationsanforderungen jedoch eine deutlich robustere Isolationsimplementierung.

   Diese Isolationsfaktoren können sich entscheidend auf das Architekturmodell auswirken, das mit Amazon
   EKS erstellt wird. Der allgemeine Leitfaden für den Aufbau von SaaS-Architekturen mit Amazon EKS
   besagt, dass sich Mandanten keine Container teilen sollen. Dadurch wird der Architekturfußabdruck
   zwar komplexer, wir werden dadurch aber sicherstellen können, dass wir ein Isolationsmodell geschaffen
   haben, das die Anforderungen von Multi-Mandanten-Kunden in Bezug auf Domänen, Compliance und
   regulatorische Anforderungen erfüllt.

   Schauen wir uns nun eine Beispielarchitektur an, um die grundlegenden Elemente einer SaaS-Amazon
   EKS-Umgebung kennenzulernen. Da es bei dieser Lösung viele bewegliche Teile gibt, schauen wir uns
   zunächst die geteilten Services an, mit denen die wichtigen, horizontalen Konzepte unterstützt werden, die
   für all unsere Mandanten gelten (siehe Abb. 4).

   Sie werden zunächst die Grundelemente sehen, die Bestandteil jeder hochverfügbaren, hochskalierbaren
   AWS-Architektur sind. Die Umgebung umfasst eine VPC, die aus drei Availability Zones besteht. Die
   Weiterleitung des eingehenden Verkehrs von Mandanten wird von Amazon Route 53 verwaltet, das so
   konfiguriert ist, dass eingehende Anwendungsanfragen an den von unserem NGINX Ingress Controller
   definierten Endpunkt geleitet werden. Der Controller ermöglicht das ausgewählte Routing innerhalb unseres
   Amazon EKS-Clusters, das für das Multi-Mandanten-Routing entscheidend ist, das Sie nachfolgend sehen
   werden.

   Abbildung 4: Amazon EKS SaaS-Architektur mit gemeinsamen Services

                                                 14
SaaS Lens AWS Well-Architected Framework
                                    Amazon EKS SaaS

Die im Amazon EKS-Cluster ausgeführten Services sind eine Auswahl einiger gängiger Services, die meist
Bestandteil einer SaaS-Umgebung sind. Mit der Registrierung wird das Onboarding neuer Mandanten
ermöglicht. Das Mandantenmanagement verwaltet den Status und diese Attribute aller Mandanten im
System und speichert diese Daten in einer Amazon DynamoDB-Tabelle. Das Benutzermanagement stellt
die grundlegenden Vorgänge für das Hinzufügen, Löschen, Aktivieren, Deaktivieren und Aktualisieren von
Mandanten bereit. Die verwalteten Identitäten werden in Amazon Cognito gespeichert. AWS CodePipeline
ist ebenfalls vorhanden, um das Tooling bereitzustellen, das für die Einrichtung jedes neuen Mandanten
verwendet wird, der in das System aufgenommen wird.

Diese Architektur stellt nur die grundlegenden Elemente unserer SaaS-Umgebung dar. Wir müssen uns
nun anschauen, was es bedeutet, Mandanten in diese Umgebung einzuführen. Angesichts der zuvor
beschriebenen Isolationsüberlegungen wird unsere Amazon EKS-Umgebung separate Namespaces
für jeden Mandanten erstellen und diese Namespaces sichern, um sicherzustellen, dass unser
Mandantenisolationsmodell robust ist.

Abbildung 5: Bereitstellen von Mandantenumgebungen in Amazon EKS

Das Diagramm in Abbildung 5 gibt einen Überblick über diese Namespaces innerhalb unserer SaaS-
Architektur. Oberflächlich betrachtet sieht diese Architektur dem vorherigen Baseline-Diagramm ziemlich
ähnlich. Der entscheidende Unterschied besteht darin, dass wir die Services, die zu unserer Anwendung
gehören, in separaten Namespaces bereitstellen. In diesem Beispiel gibt es zwei Mandanten mit
unterschiedlichen Namespaces. In jedem haben wir einige Beispielservices bereitgestellt (Order und
Product).

Jeder dieser Mandanten-Namespaces wird von dem oben angezeigten Registrierungsservice bereitgestellt.
Dieser nutzt Continuous Delivery-Services (wie AWS CodePipeline), um eine Pipeline zu starten, die den
Namespace erstellt, die Services bereitstellt, Mandantenressourcen (Datenbanken usw.) erstellt und das
Routing konfiguriert. Hier kommt der Ingress Controller ins Spiel. Jeder bereitgestellte Namespace erstellt
eine separate Ingress-Ressource für jeden Microservice in diesem Namespace. Dadurch kann Mandanten-
Datenverkehr in den geeigneten Mandanten-Namespace geleitet werden.

Namespaces schenken Ihnen zwar klare Grenzen zwischen den Mandantenressourcen in Ihrem Amazon
EKS-Cluster, diese Namespaces sind aber eher ein Gruppierungskonstrukt. Der Namespace alleine kann
nicht sicherstellen, dass Ihre Mandantenlasten vor mandantenübergreifendem Zugriff geschützt sind.

                                              15
SaaS Lens AWS Well-Architected Framework
                                          Full-Stack-Isolation

     Wir müssen verschiedene Sicherheitskonstrukte einführen, die den Zugriff eines in einem bestimmten
     Namespace laufenden Mandanten beschränken, um so die Isolation unserer Amazon EKS-Umgebung
     zu verbessern. Das Diagramm in Abbildung 6 ist eine umfassende Illustration eines Ansatzes, den Sie
     übernehmen können, um die Erfahrung jedes Mandanten zu kontrollieren.

     Abbildung 6: Isolieren von Mandantenressourcen

     Hier werden zwei spezifische Konstrukte eingeführt. Auf Namespace-Ebene sehen Sie, dass wir separate
     Pod-Sicherheitsrichtlinien erstellt haben. Es gibt native Kubernetes-Netzwerksicherheitsrichtlinien, die
     einer Richtlinie hinzugefügt werden können. In diesem Beispiel werden diese Richtlinien verwendet, um
     den Netzwerkverkehr zwischen Mandanten-Namespaces zu begrenzen. Dies ist ein grober Ansatz, um zu
     verhindern, dass ein Mandant auf die Rechenressourcen eines anderen Mandanten zugreift.

     Zusätzlich zur Sicherung der Namespaces müssen Sie auch sicherstellen, dass die Ressourcen, auf die
     die in einem Namespace laufenden Services zugreifen, beschränkt werden. In diesem Beispiel haben wir
     zwei Isolationsbeispiele. Der Order-Microservice verwendet ein Modell mit einer Tabelle pro Mandanten
     (Silo) und hat IAM-Richtlinien eingerichtet, die den Zugriff auf einen bestimmten Mandanten beschränkt.
     Der Product-Microservice verwendet ein Poolmodell, bei dem Mandantendaten vermischt werden, und
     baut auf einer IAM-Richtlinie auf, die auf jedes Element angewendet wird, um den Mandantenzugriff zu
     beschränken.

Full-Stack-Isolation
     SaaS-Unternehmen wollen Skalierungseffekte nutzen, die entstehen, wenn Infrastrukturressourcen von
     Mandanten geteilt werden. Gleichzeitig können Faktoren aus der realen Welt zu einer SaaS-Architektur
     beitragen, bei der alle Mandanten in Ihrer Umgebung eine dedizierte (Silo-)Infrastruktur benötigen.
     Compliance, „Noisy Neighbor“, mehrstufige Strategien und veraltete Technologien, sind einige der
     zahlreichen Überlegungen, die Sie dazu bringen können, Mandanten ihre eigene Infrastruktur zu bieten.
     Dies wird als Silo- oder Full-Stack-Isolation-SaaS bezeichnet.

     Dieser Ansatz wird häufig mit einem Managed Service Provider (MSP) verwechselt, bei dem das Produkt
     eines Unternehmens auf einmaliger Basis für einzelne Kunden installiert und verwaltet wird. Dieser
     Ansatz hat zwar seine Daseinsberechtigung, lässt sich aber nicht mit den SaaS-Grundsätzen vereinbaren.
     Der Schlüssel zu einem SaaS-Modell ist ein Wertsystem, in dem alle Mandanten über eine einzelne,
     einheitliche Erfahrung verwaltet und geleitet werden. Das bedeutet, dass jeder Mandant die gleiche Version
     der Software ausführt, alle Mandanten Bereitstellungen zur gleichen Zeit erhalten, das Onboarding für alle
     nach dem gleichen Prozess verläuft und sie alle über eine einzelne operative Erfahrung verwaltet werden,
     die für alle Mandanten gilt.

     Dieser Ansatz bietet nicht die Kosteneffizienzen eines geteilten Infrastrukturmodells (Pool). Der verteilte
     Aufbau kann ebenfalls dazu führen, dass die betrieblichen Vorgänge und die Bereitstellung komplexer
     werden. Ein richtig aufgebautes Full-Stack-Modell kann dennoch die Agilitäts-, die Innovations- und die
     betrieblichen Effizienzziele erreichen, die zentraler Bestandteil von SaaS sind.

     Das Diagramm in Abbildung 7 bietet einen genaueren Überblick über das Full-Stack-Isolation-(Silo)-
     Modell. Jede Mandantenumgebung in diesem Modell ist unkompliziert. Sie sehen hier, dass wir für
     jeden Mandanten eine separate VPC bereitgestellt haben. Diese VPCs beinhalten den vollständigen
     isolierten Stack, der von jedem Mandanten verwendet wird. Die Rechen- und Speicherkonstrukte
     könnten aus jeder beliebigen Kombination von AWS-Services bestehen. Hier ist entscheidend, dass jede
     Mandantenumgebung die gleiche Infrastrukturkonfiguration und die gleiche Version Ihres Produkts haben
     sollte. Das Hinzufügen neuer Mandanten ist demnach so einfach wie die Bereitstellung einer weiteren VPC
     mit demselben Infrastruktur-Fußabdruck für jeden Mandanten.

     Sie werden feststellen, dass dieses Modell Amazon Route 53 verwendet, um den eingehenden Verkehr
     in die richtige VPC weiterzuleiten. Das Routing baut auf einem Modell auf, in dem jedem Mandanten

                                                     16
SaaS Lens AWS Well-Architected Framework
                      Einheitliches Onboarding, Management und Vorgänge

Subdomänen zugewiesen werden. Das ist in SaaS-Umgebungen ein sehr häufiges Muster. Dieses Routing
kann erreicht werden, indem die Inhalte eines JWT-Mandantentoken untersucht, ihr Mandantenkontext
ermittelt und Routing-Regeln über einen eingefügten Mandanten-Header ausgelöst werden. Dieser Ansatz
kann jedoch dazu führen, dass Kontolimits erweitert werden, und muss unter Umständen optimiert werden,
um die Latenz einer Laufzeitauflösung der Identität eines Mandanten auszugleichen. Dennoch ist dies eine
geeignete Option für einige SaaS-Umgebungen.

Abbildung 7: Full-Stack (Silo)-Isolation

Dieses Beispiel zeigt zwar ein Modell mit einer VPC pro Mandanten, es gibt aber noch andere
Architekturen, mit denen das Full-Stack-Modell implementiert werden kann. Einige Unternehmen werden
sich für ein Modell mit einem Konto pro Mandanten entscheiden, bei dem jede Mandantenumgebung in
einem separaten bereitgestellten Konto bereitgestellt wird. Die Entscheidung für eine Option hängt von der
Anzahl der Mandanten ab, die Sie unterstützen müssen, sowie von der Management-Gesamterfahrung, die
Sie bieten möchten. In einigen Fällen übersteigt die Anzahl der zu unterstützenden Mandanten die Anzahl
der VPCs, die in einem AWS-Konto erstellt werden können.

Einheitliches Onboarding, Management und Vorgänge
Die realen SaaS-Elemente des Full-Stack-Isolation-(Silo)-Modells sind von Bedeutung, wenn wir uns
mit dem Onboarding, der Verwaltung und den Vorgängen dieser Erfahrung befassen. Um den vollen
Mehrwert von SaaS auszuschöpfen, muss dieses Modell eine Reihe von Services einführen, mit denen alle
Mandantenumgebungen verwaltet und geleitet werden können.

Das Diagramm in Abbildung 8 bietet einen Überblick über diese zusätzlichen Serviceebenen. Wir
führen hier einen separaten Satz von Services ein, die auf die Bedürfnisse der Administrations- und
Managementerfahrung des SaaS-Anbieters zugeschnitten sind.

                                              17
Sie können auch lesen