Steuerung des Zugriffs mit dem Datenbank-Wrapper-Servicemuster - AWS Präskriptive Leitlinien

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Steuerung des Zugriffs mit dem Datenbank-Wrapper-Servicemuster

Ein Wrapper-Service ist eine Service-Ebene, die als Fassade für die Datenbank fungiert. Dieser Ansatz ist besonders nützlich, wenn Sie bestehende Funktionen beibehalten und sich gleichzeitig auf eine future Zerlegung vorbereiten müssen. Dieses Muster folgt einem einfachen Prinzip: Wenn etwas zu chaotisch ist, fangen Sie damit an, das Chaos einzudämmen. Der Wrapper-Service wird zur einzig autorisierten Methode für den Zugriff auf die Datenbank. Er bietet eine kontrollierte Schnittstelle und verbirgt gleichzeitig die zugrundeliegende Komplexität.

Verwenden Sie dieses Muster, wenn eine sofortige Datenbankzerlegung aufgrund komplexer Schemas nicht möglich ist oder wenn mehrere Dienste kontinuierlichen Datenzugriff erfordern. Es ist besonders in Übergangsphasen nützlich, da es Zeit für ein sorgfältiges Refactoring bietet und gleichzeitig die Systemstabilität gewährleistet. Das Muster funktioniert gut, wenn der Datenbesitz auf bestimmte Teams übertragen wird oder wenn neue Anwendungen aggregierte Ansichten über mehrere Tabellen hinweg benötigen.

Wenden Sie dieses Muster beispielsweise an, wenn:

  • Die Komplexität des Schemas verhindert eine sofortige Trennung

  • Mehrere Teams benötigen fortlaufenden Datenzugriff

  • Eine schrittweise Modernisierung wird bevorzugt

  • Die Umstrukturierung von Teams erfordert eine klare Datenverantwortung

  • Neue Anwendungen benötigen konsolidierte Datenansichten

Vorteile und Einschränkungen des Database Wrapper-Service Patterns

Im Folgenden sind die Vorteile des Datenbank-Wrapper-Musters aufgeführt:

  • Kontrolliertes Wachstum — Der Wrapper-Service verhindert weitere unkontrollierte Ergänzungen zum Datenbankschema.

  • Klare Grenzen — Der Implementierungsprozess hilft Ihnen dabei, klare Eigentums- und Verantwortungsgrenzen festzulegen.

  • Freiheit beim Refactoring — Mit einem Wrapper-Service können Sie interne Änderungen vornehmen, ohne die Verbraucher zu beeinträchtigen.

  • Verbesserte Beobachtbarkeit — Ein Wrapper-Service ist eine zentrale Anlaufstelle für Überwachung und Protokollierung.

  • Vereinfachtes Testen — Ein Wrapper-Service erleichtert es nutzenden Diensten, vereinfachte Testversionen zu erstellen.

Im Folgenden sind die Einschränkungen des Datenbank-Wrapper-Musters aufgeführt.

  • Technologiekopplung — Ein Wrapper-Service funktioniert am besten, wenn er denselben Technologie-Stack verwendet wie die Dienste, die ihn nutzen.

  • Anfänglicher Overhead — Der Wrapper-Service erfordert zusätzliche Infrastruktur, was sich auf die Leistung auswirken kann.

  • Migrationsaufwand — Um den Wrapper-Service zu implementieren, müssen Sie sich teamübergreifend abstimmen, um den direkten Zugriff zu vermeiden.

  • Leistung — Wenn der Wrapping-Service stark frequentiert, stark genutzt wird oder häufig darauf zugegriffen wird, kann es bei der Nutzung von Diensten zu Leistungseinbußen kommen. Zusätzlich zur Datenbank muss der Wrapper-Service Seitennummerierung, Cursor und Datenbankverbindungen verarbeiten. Abhängig von Ihrem Anwendungsfall ist er möglicherweise nicht gut skalierbar und eignet sich möglicherweise nicht für ETL-Workloads (Extrahieren, Transformieren und Laden).

Implementierung des Datenbank-Wrapper-Servicemusters

Es gibt zwei Phasen, um das Datenbank-Wrapper-Servicemuster zu implementieren. Zunächst erstellen Sie den Datenbank-Wrapper-Dienst. Anschließend leiten Sie den gesamten Zugriff über ihn und dokumentieren die Zugriffsmuster.

Phase 1: Erstellen des Datenbank-Wrapper-Dienstes

Erstellen Sie eine einfache Serviceebene, die als Gatekeeper für Ihre Datenbank fungiert. Anfänglich sollte sie alle vorhandenen Funktionen widerspiegeln. Dieser Wrapper-Service wird zum obligatorischen Zugriffspunkt für alle Datenbankoperationen, wodurch direkte Datenbankabhängigkeiten in Abhängigkeiten auf Dienstebene umgewandelt werden. Implementieren Sie detaillierte Protokollierung und Überwachung auf dieser Ebene, um Nutzungsmuster, Leistungskennzahlen und Zugriffshäufigkeiten zu verfolgen. Behalten Sie Ihre vorhandenen gespeicherten Prozeduren bei, stellen Sie jedoch sicher, dass auf sie nur über diese neue Serviceschnittstelle zugegriffen wird.

Phase 2: Implementierung der Zugriffskontrolle

Leiten Sie den gesamten Datenbankzugriff systematisch über den Wrapper-Service um und widerrufen Sie dann direkte Datenbankberechtigungen von externen Systemen, die direkt auf die Datenbank zugreifen. Dokumentieren Sie jedes Zugriffsmuster und jede Abhängigkeit, während Dienste migriert werden. Dieser kontrollierte Zugriff ermöglicht ein internes Refactoring von Datenbankkomponenten, ohne externe Nutzer zu stören. Beginnen Sie beispielsweise mit risikoarmen, schreibgeschützten Vorgängen statt mit komplexen Transaktionsworkflows.

Phase 3: Überwachen Sie die Datenbankleistung

Verwenden Sie den Wrapper-Service als zentralen Überwachungspunkt für die Datenbankleistung. Verfolgen Sie wichtige Kennzahlen wie Antwortzeiten für Abfragen, Nutzungsmuster, Fehlerquoten und Ressourcennutzung. Richten Sie Warnmeldungen für Leistungsschwellenwerte und ungewöhnliche Muster ein. Überwachen Sie beispielsweise langsam laufende Abfragen, die Auslastung des Verbindungspools und den Transaktionsdurchsatz, um potenzielle Probleme proaktiv zu identifizieren.

Verwenden Sie diese konsolidierte Ansicht, um die Datenbankleistung durch Abfrageoptimierung, Anpassungen der Ressourcenzuweisung und Analyse von Nutzungsmustern zu optimieren. Der zentralisierte Charakter des Wrapper-Service erleichtert die Implementierung von Verbesserungen und die Überprüfung ihrer Auswirkungen auf alle Verbraucher bei gleichzeitiger Einhaltung konsistenter Leistungsstandards.

Bewährte Methoden für die Implementierung eines Datenbank-Wrapper-Service

Die folgenden bewährten Methoden können Ihnen bei der Implementierung eines Datenbank-Wrapper-Dienstes helfen:

  • Fangen Sie klein an — Beginnen Sie mit einem minimalen Wrapper, der lediglich vorhandene Funktionen als Proxy bereitstellt

  • Stabilität aufrechterhalten — Sorgen Sie für eine stabile Serviceschnittstelle und nehmen Sie gleichzeitig interne Verbesserungen vor

  • Nutzung überwachen — Implementieren Sie eine umfassende Überwachung, um die Zugriffsmuster zu verstehen

  • Klare Verantwortung — Weisen Sie ein engagiertes Team zu, das sowohl den Wrapper als auch das zugrundeliegende Schema verwaltet

  • Förderung der lokalen Speicherung — Motivieren Sie Teams, ihre Daten in ihren eigenen Datenbanken zu speichern

Ein szenariobasiertes Beispiel

In diesem Abschnitt wird ein Beispiel dafür beschrieben, wie ein fiktives Unternehmen namens AnyCompany Books das Datenbank-Wrapper-Muster verwenden könnte, um den Zugriff auf sein monolithisches Datenbanksystem zu kontrollieren. Bei AnyCompany Books gibt es drei wichtige Dienste: Versand, Finanzen und Auftragsabwicklung. Diese Dienste teilen sich den Zugriff auf eine zentrale Datenbank. Jeder Dienst wird von einem anderen Team verwaltet. Im Laufe der Zeit ändern sie das Datenbankschema unabhängig voneinander, um ihren spezifischen Anforderungen gerecht zu werden. Dies hat zu einem verworrenen Netz von Abhängigkeiten und einer immer komplexeren Datenbankstruktur geführt.

Drei Anwendungen teilen sich den Zugriff auf eine zentrale Datenbank mit mehreren, modifizierten Schemas.

Der Anwendungs- oder Unternehmensarchitekt des Unternehmens ist sich der Notwendigkeit bewusst, diese monolithische Datenbank zu zerlegen. Ihr Ziel ist es, jedem Dienst eine eigene Datenbank zur Verfügung zu stellen, um die Wartbarkeit zu verbessern und teamübergreifende Abhängigkeiten zu reduzieren. Sie stehen jedoch vor einer großen Herausforderung: Es ist fast unmöglich, die Datenbank zu zerlegen, solange alle drei Teams sie weiterhin aktiv für ihre laufenden Projekte modifizieren. Aufgrund der ständigen Schemaänderungen und der mangelnden Koordination zwischen den Teams ist es äußerst riskant, eine signifikante Umstrukturierung zu versuchen.

Der Architekt verwendet das Database-Wrapper-Servicemuster, um mit der Steuerung des Zugriffs auf die monolithische Datenbank zu beginnen. Zunächst richten sie den Datenbank-Wrapper-Service für ein bestimmtes Modul ein, den sogenannten Order-Service. Dann leiten sie den Order Processing Service weiter, um auf den Wrapper-Service zuzugreifen, anstatt direkt auf die Datenbank zuzugreifen. Das folgende Bild zeigt die modifizierte Infrastruktur.

Datenbankzugriff nach der Implementierung des Wrapper-Dienstes.