Bauen Sie die Nahtstelle vom ersten Tag an
Der Aufbau einer Plattform für große Datenmengen erzwingt eine Entscheidung.
Sie benötigen eine schnelle Datenbank für die Langzeitspeicherung. Aber ein komplexes System bereits am ersten Tag aufzusetzen, ist schwierig. Möglicherweise kennen Sie Ihre Datenmuster noch gar nicht. Die sichere Wahl ist eine Standard-Relational-Datenbank, die Sie bereits verwenden.
Der Fehler besteht darin, Ihren Code direkt an diese erste Datenbank zu binden. Wenn jeder Teil Ihrer Anwendung die Datenbank direkt aufruft, bauen Sie eine Falle. Ein späterer Wechsel zu einer besseren Datenbank wird ein massives Refactoring erfordern.
Der richtige Schritt ist es, eine Nahtstelle zu bauen.
Eine Nahtstelle ist ein Vertrag. Sie definiert, was das System tut, ohne festzulegen, wie es das tut.
- Erstellen Sie ein Interface für die Aufgabe.
- Schreiben Sie einen Basis-Treiber unter Verwendung Ihrer aktuellen Datenbank.
- Binden Sie diesen Treiber an das Interface.
Jeder andere Teil Ihrer Anwendung kommuniziert nur mit dem Interface. Niemand weiß, welche Datenbank im Hintergrund läuft.
Wenn Ihre Daten wachsen und Sie ein schnelleres System benötigen, ist der Aufwand gering. Sie schreiben einen neuen Treiber, ändern eine Zeile Code und veröffentlichen ihn. Keine Dashboards gehen kaputt. Keine Pipelines stoppen.
Manche nennen das vorzeitige Abstraktion. Sie sagen, dass Sie sie noch nicht benötigen.
Ich widerspreche dem. Ein Interface kostet Sie lediglich eine zusätzliche Datei. Es zu überspringen, verschiebt die Kosten nur auf einen späteren Zeitpunkt. Wenn Sie schließlich Änderungen vornehmen müssen, werden Sie unter Zeitdruck hunderte Dateien korrigieren müssen. Ein Interface ist eine kostengünstige Versicherung.
Nutzen Sie diese drei Gewohnheiten, um Ihre Nahtstellen zu stärken:
Verwenden Sie duale Identifikatoren. Nutzen Sie schnelle Integer für interne Datenbank-Joins. Verwenden Sie UUIDs für alles, was Ihr System verlässt. Dies hält Ihre Daten sicher und Ihre Joins schnell.
Verwenden Sie Enums für ein gemeinsames Vokabular. Verwenden Sie keine willkürlichen Strings für Status oder Schweregrade. Nutzen Sie ein einziges Enum, damit jeder Teil Ihrer Anwendung dieselbe Sprache spricht.
Verwenden Sie versionierte Envelopes für Daten. Wenn Ihr System Daten aus vielen Quellen empfängt, nutzen Sie ein striktes Schema. Fügen Sie nur neue Felder hinzu. Entfernen oder benennen Sie diese niemals ohne eine neue Version um. So bleiben alte Clients funktionsfähig, während Sie das System verbessern.
Finden Sie die Grenze. Definieren Sie sie durch einen Vertrag. Füllen Sie sie mit einer einfachen Implementierung.
Der Vertrag ist Ihr Versprechen. Der Treiber ist nur die Art und Weise, wie Sie dieses Versprechen heute einhalten.
Quelle: https://dev.to/nasrulhazim/build-the-seam-on-day-one-the-second-driver-on-day-ninety-26b
