Connecting technologies in the cloud

ETL Tool Vergleich: Wieso haben wir uns für Apache NiFi entschieden?

Wie haben wir bislang gearbeitet?

ETL gehörte lange nicht zu unserem Kerngeschäft. Aber immer mehr KundInnen benötigten Datenpipelines aus verschiedenen Gründen und in unterschiedlichen Bereichen. Da unser IT Team größtenteils aus Backendentwicklern besteht, lag es für uns nahe, alles von Grund auf zu programmieren, Serverless Functions zu schreiben und in der Cloud auszuführen.

Ein Problem dabei war, dass der Code ohne ein gut gepflegtes Framework für neue Projekte nicht immer wiederverwendbar war. Insbesondere da einige Kunden ihre Projekte auf Azure umsetzen wollten, andere in der Google Cloud, die meisten allerdings auf ihrer eigenen on-premise Infrastruktur. Auch Ausführung, Monitoring und Benachrichtigungen waren limitiert und umständlich aufzusetzen. Das Hauptproblem jedoch war, dass sowohl KundInnen als auch nicht-technische KollegInnen aus anderen Abteilungen Einblicke in die Datenpipelines bekommen wollten und dann Code zu zeigen wenig hilfreich war.

Unsere Anforderungen an das ETL Tool

Also haben wir Anfang des Jahres beschlossen, dass wir eine externe ETL Software verwenden möchten, um unsere Datenpipelines zu erstellen und zu verwalten. Unser Hauptaugenmerk lag dabei auf folgenden Anforderungen:

Intuitives GUI

Nicht-technische MitarbeiterInnen und KundInnen sollen in der Lage sein, die generellen Abläufe und Strukturen der Pipelines nachvollziehen zu können und im besten Fall auch einzelne Konfigurationen selbstständig anzupassen (z. B. Google Search Console Request Parameter).

Code ausführen

So sehr wir auf ein GUI Tool wechseln wollten, war es uns ebenso wichtig, dass wir immer auch eigenen Code ausführen können, um spezifische Probleme und Anforderungen zu lösen, ohne dafür aufwändige Workarounds zu benötigen.

Systemunabhängigkeit

Die Software muss auf jedem Cloud Provider, aber auch auf interner on-premise Infrastruktur laufen können. Viele Unternehmen in Europa (zumindest in Deutschland) legen großen Wert auf Daten-Ownership und vertrauen den großen Cloud Dienstleistern aus den USA nicht.

Langzeit Support

Wir suchen ein Tool, dass beständig und regelmäßig weiterentwickelt wird. Heutzutage gibt es viele ETL Software Optionen, aber einige verschwinden genauso schnell wie sie erschienen sind. Andere erhalten nur selten Updates oder im Fall von Open Source Projekten wenig Beiträge aus der Community.

Nice-to-have

Wir begrüßen es sehr, dass viele Tools schon out-of-the-box zahlreiche Prozessoren beinhalten. Da die meisten unserer Projekte aus dem SEO Kontext stammen, war es für uns ein Plus, wenn die Software bereits funktionierende API Schnittstellen zu Google Search Console und/oder Google Business bieten kann.

Andere interessante Optionen

In diesem Sinne haben wir uns auf die Suche nach unserer ETL Lösung gemacht. Einige Tools konnten wir schnell ausschließen, da sie nicht unsere Anforderungen erfüllten. An dieser Stelle möchten wir die Tools nennen, die in die nähere Auswahl fielen. Sie sind alle hervorragend, aber folgende Kleinigkeiten haben uns dann doch gestört:

Kettle

Wir hatten Pentaho schon in anderen Projekten verwendet und von daher, war dies unser anfänglicher Favorit. Das Hauptproblem war allerdings, dass die meisten für uns relevanten Plugins auf dem Marktplatz und auch auf GitHub seit Jahren kein Update mehr erhalten haben und teilweise gar nicht verwendbar waren. Der Community Beitrag für dieses Projekt scheint deutlich ins Stocken geraten zu sein. Außerdem hat es wenig Unterstützung für Streaming-Daten.

Open Studio

Noch mehr als Pentaho hat man hier das Gefühl, dass wichtige Funktionen hinter der Paywall liegen  oder gar nicht vorhanden sind. Ich kann mir vorstellen, dass es auch daran liegt, dass Talend das konkurrierende hausinterne Cloudprodukt Stitch priorisiert. Dieses wirkt wesentlich umfangreicher, aber ist leider nur als SaaS verfügbar.

Knime

Ehrlich gesagt war Knime bis ganz zum Ende mit in der Auswahl, da es viele der Qualitäten von Apache NiFi teilt. Am Ende haben wir uns aber dagegen entschieden, weil es ein deutsches Universitätsprojekt ist. Das ist eigentlich etwas Positives, aber unser Problem damit war, dass unser IT Team hauptsächlich in Amerika sitzt und wir denken, dass es dort schwierig wäre, Entwickler zu finden, die Erfahrung mit diesem Tool haben.

Vorteile von Apache NiFi

Es gibt also viele gute Tools, von denen ich überzeugt bin, dass sie alle in der Lage sind, die Dinge zu machen, die wir vorhaben. Aber bei Apache NiFi hatten wir sofort das Gefühl, dass es perfekt zu unseren Anforderungen und unserer Arbeitsweise passt. Hier sind die Features, die wir am meisten schätzen:

Web UI

Unser IT Team arbeitet hauptsächlich an Wep Applikationen. Von daher gefiel es uns auf Anhieb, dass NiFi im Browser läuft. Dazu kommt, dass unser IT Team mit Linux arbeitet, die restlichen MitarbeiterInnen mit Windows und viele Stakeholder mit MacOS. Als Web Applikation läuft NiFi nicht nur auf all diesen Betriebssystemen, sondern bietet auch auf allen Geräten dieselbe User Experience und benötigt keine Installation (abgesehen von einem Browser).

Docker

Wir sind sehr glücklich darüber, NiFi als Docker Container laufen lassen zu können. Das ermöglicht uns, es in jeder Infrastruktur und auf jedem Cloud Provider zu installieren. Außerdem macht es NiFi einfach skalierbar, leicht mit anderen Services zu verbinden und in unser Continuous Deployment zu integrieren.

Prozessoren

Apache NiFi bietet nicht nur eine Menge an eigenen Prozessoren (d. h. vorgefertigte ETL Komponenten/Schnittstellen), sondern bietet auch die Möglichkeit, unkompliziert eigene Prozessoren und Services zu entwickeln und einzubinden.

Dokumentation

Die Dokumentation ist verständlich, auf dem neuesten Stand und absolut vollständig. Es gibt eine umfangreiche Beschreibung über die Funktionsweise und Konfigurationsoptionen von jeder Komponente.

Open Source

Apache NiFi war nicht das populärste Tool, das wir uns angeschaut haben. Aber etwa 4.000 Sterne auf GitHub lassen darauf schließen, dass es eine solide Masse an Entwicklern gibt, die das Tool verwenden und auch zu dessen Entwicklung beitragen. Dass es Open Source ist, wirkt ebenfalls beruhigend auf die Sorgen, was mit den Daten passiert.

Apache Software Foundation

Schließlich überzeugt uns die Tatsache, dass Apache mit seinem riesigen Daten-Ökosystem hinter dem Projekt steht. Das macht es unwahrscheinlich, dass das Projekt plötzlich eingestellt wird und vereinfacht auch die Suche nach neuen Entwicklern.

Fazit

Wir arbeiten nun ein halbes Jahr mit Apache NiFi und sind damit sehr zufrieden. Natürlich haben wir viele Features und Möglichkeiten, die NiFi zu bieten hat, noch nicht getestet. Unser ETL Team wächst und arbeitet daran, unsere alten 100% Code Lösungen in NiFi Pipelines zu übersetzen. Wir wollen mehr Zeit investieren, um eigene Prozessoren zu entwickeln und auch zur Core Repository beizutragen. Wenn es die Zeit mir erlaubt, werde ich unsere weiteren Erfahrungen mit Apache NiFi hier auf dem Blog kommentieren.