Für alle, die Self Service BI einführen, Data Replication steuern oder APIs managen wollen, hält die Dateningestplattform Airbyte einiges bereit. In dieser Artikelserie nehme ich dich Schritt für Schritt mit – von der Installation bis zum täglichen Einsatz von Airbyte, dabei klettern wir auch über Stolpersteine. Im ersten Teil erfährst du, was für die Installation wichtig ist. Die ersten Handgriffe gehen wir an einem Beispiel durch. Viel Spaß beim Lesen!
Was kann Airbyte?
Airbyte ist eine Open-Source-Datenintegrationsplattform, die zunehmend an Popularität gewinnt. Sie konzentriert sich auf die ersten beiden Buchstaben des ELT-Prozesses, also auf Extract und Load und wird im Umfeld moderner Data Stacks eingesetzt. Also dort, wo es viele verschiedene Software Tools gibt, die dabei helfen, Daten zu sammeln, Datenflüsse zu steuern und Daten zu speichern.
Aktuell bietet Airbyte über 300 Konnektoren out of the Box. Mit diesen Konnektoren lassen sich Daten von Applikationen, APIs und Datenbanken zu Data Warehouses, Lakes und anderen Zielen übertragen. Die Lade- und Synchronisationsjobs werden über eine Weboberfläche konfiguriert. Airbyte läuft in einem containerbasierten Betrieb, in dem jeder Konnektor seinen eigenen Container hat.
Wo kann Airbyte installiert werden?
Airbyte läuft auf vielen Umgebungen, wobei immer ein paar Dinge zu beachten sind:
- Lokale Maschinen oder VM in der Cloud
Wenn du Airbyte auf lokalen Maschinen und auf den VMs in der Cloud installieren willst, brauchst du Docker und Docker-Compose. Beide sind eine Voraussetzung für die Airbyte-Installation. - Kubernetes
Für die Installation in Kubernetes gibt es zwei Verfahren: Kustomize oder Helm. Kustomize würde ich allerdings nicht empfehlen, da es nur bis Airbyte Version 0.40.32 unterstützt wird. Also lieber die Kubernetes Installation über Helm wählen. Die momentan aktuelle Version ist die 0.42.0. - Restack
Restack ist eine Distributionsplattform für Open-Source-Produkte. Mit Hilfe von Restack lässt sich Airbyte über eine Weboberfläche in einer AWS-Infrastruktur installieren. Hierzu wird ein AWS-Account mit Administratorrechten benötigt. - Plural in der Cloud
Plural ist eine Open-Source-Plattform, die einen Kubernetes-Cluster und ausgewählte Anwendungen wie Airbyte bei verschiedenen Cloud-Anbietern bereitstellt. Der Infrastruktur-Code wird durch Plural in einem Git-Repository gespeichert. Ein Plural Account und die Installation des Plural CLI werden vorausgesetzt. Die Airbyte-Installation erfolgt über das Plural CLI.
Von der SQL-DB ins DWH …
In einem meiner Kundenprojekte ging es darum, mithilfe von Airbyte Daten von einer PostgreSQL-DB in ein Data Warehouse zu laden, das ebenfalls auf einer PostgreSQL-DB läuft. Neben Airbyte waren hier auch noch dbt und Airflow im Einsatz.
Die Entwicklungsumgebung haben wir in diesem Projekt als Docker Container aufgesetzt, der auf einer lokal installierten Ubuntu 22.04 VM läuft. In der Produktionsumgebung wurde ein Kubernetes Cluster aufgesetzt.
Einstellungen über die Airbyte Weboberfläche
Über http://localhost:8000 gelangst du auf die Weboberfläche. Das meiste erklärt sich hier von selbst. Hier gibt es die Bereiche „Connections“, „Sources“ und „Destinations“, in denen die Konfigurationen vorgenommen werden.
1. Sources definieren
Über den Button „+ New source“ wird eine neue Source erstellt. Hierzu wählst du zunächst den Source-Typ aus einer Dropdown-Liste aus.
Hierzu wählst du zunächst den Source-Typ aus einer Dropdown-Liste aus. Es öffnet sich linksseitig die Source-spezifische Konfigurationsmaske und auf der rechten Seite wird der zugehörige Setup Guide angezeigt. In diesem Fall für PostgreSQL.
Wenn alle Pflichtangaben vorhanden sind, kannst du die Source über den Button „Set up source“ erstellen. Hierbei wird auch gleich die Verbindung zur Source getestet. Wenn Erstellung und Verbindungstest erfolgreich waren, öffnet sich eine Maske, auf der man die Destination an die Source anbinden kann. Über den Button „add destination“ hast du die Möglichkeit, eine bereits existierende Destination auszuwählen oder eine neue Destination („+ add a new destination“) anzulegen.
Wenn der Source eine Destination zugewiesen wurde, startet der Prozess „Set up connection“. Hierbei öffnet sich eine Maske, über die die Connection konfiguriert wird.
- Name der Connection
- Frequenz der Datenreplikation
- Destination Namespace (z. B. Schema auf der Destination-Datenbank)
- Aktivierung und Konfiguration der zu synchronisierenden Streams (z. B. Quelltabellen auf der Source-Datenbank inkl. Sync-Mode)
- Normalization & Transformation
-
-
-
- Nur Raw Data als JSON-Blob (Radio Button „Raw data (JSON)“)
- Normalisierung des JSON-Formats in eine relationale Tabelle (Radio Button „Normalized tabular data“)
-
-
-
Airbyte überträgt einen Datensatz immer als ein JSON-Blob, egal aus welcher Quelle die Daten stammen. Die anschließende Normalisierung wandelt das JSON-Format in relationale Tabellendaten um. Darum ist die Normalisierung nur möglich, wenn relationale Datenbanken als Destination verwendet werden. Doch dazu mehr in Teil 3 der Blogreihe.
Nach abgeschlossener Konfiguration wird über den Button „Set up connection“ die Verbindung aufgebaut und getestet.
2. Destination bestimmen
Wenn du über den Button „+ New destination“ eine neue Destination erstellst, wählst du zuerst den Destinationstyp aus einer Dropdown-Liste aus.
Es öffnet sich linksseitig die Destinations-spezifische Konfigurationsmaske und auf der rechten Seite wird der zugehörige Setup Guide angezeigt (z.B. für PostgreSQL).
Wenn alle Pflichtangaben vorhanden sind, wird die Destination über den Button „Set up destination“ erstellt, hierbei wird auch gleich die Verbindung zur Destination getestet. Nach erfolgreicher Erstellung und erfolgreichem Verbindungstest öffnet sich eine Maske, auf der man die Source an die Destination anbinden kann.
Über den Button „add source“ hast du die Möglichkeit, eine bereits existierende Source auszuwählen oder eine neue Source („+ add a new source) anzulegen.
Wenn der Destination eine Source zugewiesen wurde, startet der Prozess „Set up connection“. Hierbei öffnet sich die bereits oben beschriebene Maske zur Konfiguration der Verbindung.
3. Connections herstellen
Über den Button „+ New connection“ wird eine neue Connection erstellt.
Hierbei öffnet sich eine Maske, auf der aus bereits existierenden Sources ausgewählt werden kann oder über die per „Set up the source“ eine neue Source erstellt werden kann.
Nach Auswahl bzw. Konfiguration der Source öffnet sich eine Maske mit einer Auswahl an Destinations, die schon existieren. Alternativ kannst du per „Set up destination“ eine neue Destination erstellen.
Sobald Source und Destination bekannt sind, öffnet sich die oben beschriebene Maske zur Konfiguration der Verbindung. Wenn die Konfiguration der Connection abgeschlossen und die Connection erfolgreich erstellt wurde, kann über den Button „Sync now“ erstmalig die Datenreplikation gestartet werden. Die Datenreplikation bereits existierender Connections kann über den Launch-Button gestartet werden.
Die technischen Details zu den Installationsanweisungen kannst du in der Installationsdoku von Airbyte nachlesen.
Fazit
Ob Sources, Destinations oder Connections: Egal über welchen Bereich du auf der Weboberfläche einsteigst, auf Airbyte wird immer ein Workflow gestartet, der dich in der richtigen Reihenfolge durch alle notwendigen Schritte führt. Die Weboberfläche macht die manuelle Konfiguration auf einer Airbyte-Instanz also schnell und einfach möglich.
Schwieriger wird es, wenn du diese Objekte ohne großen manuellen Aufwand auf andere Airbyte-Instanzen deployen willst. Die unter Settings/Configuration angebotenen Funktionen zum Export und Import der Konfigurationen haben in unserem Projektkontext beispielsweise nicht funktioniert. Deshalb haben wir Alternativen, wie das Command-Line-Tool Octavia-cli geprüft.
Was dabei herausgekommen ist, kannst du im zweiten Teil dieser Serie erfahren. Im dritten Teil geht es um den Data-Ingestion-Prozess, was dabei hinter den Kulissen von Airbyte passiert und was es mit den Sync-Modes auf sich hat. Bleib also gerne dabei!
Teil 1: Daten integrieren mit Airbyte – Teil 1: Einführung & Installation