Datentransformation mit Benthos

Doğan Uçar
Benthos Logo

In einem unserer Projekte haben wir uns umfassend mit Benthos beschäftigt. Doğan Uçar, Geschäftsführer und Software Entwickler von/bei Ucar Solutions, hat zu diesem Thema ausführlich berichtet. In diesem Blogpost möchten wir kurz auf Benthos eingehen, Vor- und Nachteile auflisten und den Einsatzzweck bzw. die Zielgruppe benennen. Es geht also weniger darum, wie Benthos funktioniert, sondern um einen ganzheitlichen Blick auf das Werkzeug zu werfen.

Was ist Benthos?

Benthos beschreibt sich selbst als „langweilig einfach zu benutzen“. Es ist ein Tool zur Datentransformation, welches einen definierten Input, Schritte zum Processing und einen Output hat. Dabei können Input und Output in verschiedenen Formen sein und das Datenformat muss nicht zwingend strukturiert (JSON, XML, etc) sein (auch wenn das auf jeden Fall besser wäre).

Benthos kann aus HTTP API’s lesen oder selbst eine Schnittstelle zur Verfügung stellen, ein Amazon SNS Topic oder S3 Bucket abonnieren/auslesen oder ganz primitiv aus STDIN lesen. Gleiche Vielfalt beweist auch das Output, welches als letzter Schritt definiert, was mit den transformierten Daten geschieht.

Das eigentlich interessante geschieht allerdings in dem Processing Schritt. Hier können verschiedene sogenannte Processors definiert werden, die letztlich die Daten verarbeiten bzw. unmittelbar mit den Inputdaten in Relation stehen.

So kann beispielsweise der log Processor jeden einkommenden Request oder verarbeitete Zeile loggen, um später genauere Informationen zu der Datenverarbeitung zu haben. Interessant ist allerdings der processor bloblang. Bloblang oder kurz blobl ist die native Sprache zum Verarbeiten von Mappings in Benthos. Bloblang Befehle werden unter processors -> bloblang definiert und bieten eine Vielzahl an built-in Tools zum Formatieren oder Verändern von Daten (z.B. Formatieren von Datumsangaben, Konvertieren von String nach Int, Map/Reduce, etc).

Wozu eignet sich Benthos?

Benthos ist sehr simpel gehalten und hat keinerlei systemseitige Abhängigkeiten (z.B. Linux- oder Windows-Pakete). Der Aufbau des oben dargestellten Schemas aus Input, Processors und Output orientiert sich an dem YAML-Format. Somit benötigt Benthos lediglich eine Konfigurationsdatei als Programmargument und ist voll lauffähig (vorausgesetzt die Syntax ist korrekt und die Daten können gelesen bzw. geschrieben werden).

Laut eigenen Angaben richtet sich Benthos an Data Scientists und Data Engineers. Der große Vorteil liegt darin, dass Benthos wenig bis gar keine Programmierkenntnisse, komplizierte Buildpläne oder sonstige Environments voraussetzt. Somit müssen nicht zwangsweise Software Entwickler an Benthos-Projekten arbeiten.

Je nach Systemlandschaft könnte der Einsatz von Benthos nicht immer sinnvoll sein. Man nehme z.B. das Beispiel einer Webanwendung, die bereits eine Vielzahl von Aufgaben übernimmt (z.B. durch zeitgesteuerte Jobs). Wenn in diesem Fall eine neue Anforderung der Import einer handvoll Daten wäre, wäre der Einsatz eines neuen Tools evtl. nicht gerechtfertigt.

Allerdings ist Benthos eine sehr gute Alternative wenn vor allem große Datenmengen verarbeitet werden sollen. Hier zeigt sich eindeutig die Implementierung in Go von Vorteil. Go ist eine robuste, sehr schnelle und zuverlässige Programmiersprache. Zusammen mit Bloblang für das Mapping kann sich Benthos als Vorteil erweisen.

Benthos als Dienstleistung

Da wir mittlerweile einige Berührungspunkte mit Benthos hatten, möchten wir diese Erfahrung nicht unseren potenziellen Partnern und Kunden vorenthalten. Daher nehmen wir Benthos als Dienstleistung für Beratungs & Implementierung in unser Portfolio auf. Wir setzen Ihre Projekte mit Benthos ganzheitlich um – von dem Aufsetzen der Infrastruktur, zur Entwicklung und Bereitstellung von Benthos-Skripten bis hin zur Wartung und Beratung. Nutzen Sie das nachfolgende Kontaktformular zu einem unverbindlichen und kostenfreien Erstgespräch. Wir freuen uns darauf!