Structural diff for HAProxy configuration

(This is an English translation of a previous post)

We use HAProxy for all our incoming HTTP and other TCP connections.

Its configuration is the most complex we have. That’s why we do not write it by hand, but rather generate it from metadata and includes. Such a generator makes the configuration easier — but it also makes it harder to see what the actual changes will be in the end.

For situations like that, we like tooling that will show us a diff of the generated configuration. Because the HAProxy configuration is a single text file, we could use the diff program to compare two versions.

The downside of a textual diff is that it shows meaningless differences, for example if only order or comments change.

„Structural diff for HAProxy configuration“ weiterlesen

HAProxy-Konfiguration strukturell diffen

(This post is also available in English)

Wir benutzen HAProxy für alle unsere eingehenden HTTP- und sonstigen TCP-Verbindungen.

Die Konfiguration ist die komplexeste, die wir haben. Daher wird die Konfiguration nicht von Hand erstellt, sondern aus Metadaten und Includes generiert. Ein solcher Generator vereinfacht die Konfiguration — aber kann es erschweren zu sehen, was man nun wirklich ändert.

Für solche Fälle mögen wir Tooling, dass uns einen Diff der generierten Konfiguration anzeigen kann. Da die HAProxy-Konfiguration eine einzelne Textdatei ist, könnten wir das diff-Programm benutzen um zwei Versionen zu vergleichen.

Das Problem mit einem rein textuellen Diff ist, dass dort auch Unterschiede auftauchen, die gar keine Auswirkung auf HAProxy haben, z.B. wenn sich nur die Reihenfolge oder Kommentare ändern.

„HAProxy-Konfiguration strukturell diffen“ weiterlesen

Unsere interne API für SMS-Versand

Bei uns gibt es einige Anwendungen, die SMS verschicken:

  • Icinga verschickt Monitoring-Alerts
  • ein 2FA-Service verschickt Login-TANs
  • Jira verschickt Alerts für bestimmte Tickets

Bis vor kurzem haben wir dafür Hardware-Maschinen mit Mobilfunk-Modems betrieben.

Das hatte leider einige Nachteile:

  • Diese Maschinen brauchen spezialisierte Hardware und können nicht virtualisiert werden
  • Aufwand bei Updates; insbesondere hatten wir einen gepatchten gsmmuxd

Unser Ziel war es, diese Maschinen loszuwerden. Um weiterhin SMS versenden zu können, brauchten wir also einen externen Dienstleister mit einer API.

Die neue API

Wir wollten uns bei der neuen Lösung nicht fest an einen Anbieter binden. In den Begriffen der Softwareentwicklung würde man sagen: wir wollen Loose Coupling.

Deswegen haben wir eine interne API geschaffen, die zwischen unseren Anwendungen und dem Versender steht. Diese API ist ein stabiles Interface; worüber eine SMS versendet wird ist dann nur ein Implementierungsdetail.

„Unsere interne API für SMS-Versand“ weiterlesen

Hello world!

Willkommen zum technischen Blog der Babiel GmbH!

Hier schreiben häuptsächlich Kollegen aus dem Bereich des Managed Hostings – unsere HR bespielt Linkedin, Facebook und Instragram – hier sind die Techniker am Werk. 😉 Auf twitter sind wir diejenigen, die technische Dinge (re)tweeten und kennzeichnen dort unsere Beiträge durch unser jeweiliges Kürzel.

Wir hoffen, durch den Blog bessere Einblicke darauf geben zu können, wie wir arbeiten, welche Themen uns bewegen und hoffen, darüber auch in einen Austausch zu kommen. Pre-COVID19 fand man uns regelmäßig auf Meetups, z.B. beim „talk@babiel“ direkt bei uns vor Ort, aber z.B. auch bei DevOps Düsseldorf – dort ebenfalls mit Vorträgen. Da der Vor-Ort Austausch leider schon lange ruhen muss, sieht man sich nun vielleicht mal beim Infrafoo des Chaosdorf.

Zum Team: wir sind derzeit 22 Kollegen und dafür verantwortlich, die IT Services der Babiel zu betreiben. Das fängt an bei Grundlagen wie dem Betrieb unseres Autonomen Systems AS198913, geht weiter über Themen wie Virtualisierung, Storage, Betriebssysteme, Managed Hosting, Monitoring und umfasst auch den Betrieb der Applikationen; aber auch betriebsrelevante Tools werden in der Abteilung programmiert.

Themen die uns bewegen sind also:

  • Datacenter-Technologie im Netzwerkbereich, Loadbalancer, DDoS-Schutz, Virtualisierung
  • Automatisierung, CI/CD Pipelines, Puppet, Go
  • Kubernetes
  • Linux
  • Speziallösungen für IT-Probleme, die man mit der Zeit bekommt und für die es keine „off the shelf“ Lösung gibt

Enjoy our Blog!