Interview mit Fabian Reinartz und Björn Rabenstein

„Ein Übergang zu Microservices, während das System unter Volldampf läuft, ist nicht einfach“

Redaktion JAXenter

Fabian Reinartz und Björn Rabenstein

Die Architektur von SoundCloud begann als Ruby-on-Rails-Monolith, der später in Microservices aufgebrochen werden musste, um die wachsende Komplexität der Webseite zu bewältigen. Vor kurzem hat das Unternehmen begonnen, auf Kubernetes zu migrieren. Wir sprachen mit den DevOpsCon-Sprechern Fabian Reinartz und Björn Rabenstein über ihre Erfahrungen bei der Einführung von Microservices und das aktuelle Prometheus-Setup bei SoundCloud.

JAXenter: SoundCloud hat seinen Ruby-on-Rails-basierten Monolithen auf Microservices aufgebrochen. Was war der Grund dafür?

Fabian Reinartz und Björn Rabenstein: Es ist die alte Geschichte: Mit einer einzigen, monolithischen Ruby-on-Rails-Anwendung zu starten, ist bestimmt eine großartige Idee für Start-ups. Man hat schnell etwas am laufen und kann schnell iterieren. Aber im unwahrscheinlichen Fall, dass dein  Start-Up ein Erfolg ist und plötzlich eine Menge Benutzer hat, stößt man schnell an die Grenzen der Skalierbarkeit. Zudem verlangsamt wachsende Komplexität des Monolithen die Iterationsgeschwindigkeit. Genau das passierte bei SoundCloud. Die Ressourcennutzung bereitete uns zunehmend Probleme, und der Launch von neuen Features wurde mehr und mehr zu einem schmerzhaften und obskuren Prozess.

DevOpsCon Whitepaper 2018

Free: BRAND NEW DevOps Whitepaper 2018

Learn about Containers,Continuous Delivery, DevOps Culture, Cloud Platforms & Security with articles by experts like Michiel Rook, Christoph Engelbert, Scott Sanders and many more.

JAXenter: Microservices sollten dann Abhilfe schaffen. Wie würdet Ihr eure Erfahrungen bei der Neustrukturierung beschreiben? Was hat gut funktioniert, was hat Probleme verursacht?

Fabian Reinartz und Björn Rabenstein: Natürlich ist ein Übergang zu Microservices, während das System unter Volldampf läuft, nicht einfach. Wir haben uns gegen eine Big-Bang-Migration entschieden, und Reste des alten Monolithen, liebevoll „Mutterschiff“ genannt, sind auch heute noch aktiv. Wer mehr über die Details erfahren möchte, findet einige Posts auf unserem Tech-Blog.

Zum Thema unseres Vortrags auf der DevOpsCon sind die wichtigsten Aspekte:

  1. Wie nimmt man die vielen kleinen Applikationen einer Microservice-Architektur in Betrieb?
  2. Wie überwacht man diese vielen kleinen Applikation in skalierbarer und sinnvoller Art und Weise?

Für den ersten Teil haben wir Bazooka, eine Heroku-ähnliche Inhouse-Plattform, entwickelt, um containerisierte Anwendungen zu bauen und zu deployen. Für 2. haben wir Prometheus entworfen. Während Bazooka aktuell durch Kubernetes ersetzt wird, wurde Prometheus ein branchenweiter Erfolg und wird von mehr als hundert Organisationen verwendet.

JAXenter: Warum habt Ihr euch für Kubernetes entschieden?

Kubernetes hat als junges Projekt noch zahlreiche Entwicklungen vor sich.

Fabian Reinartz und Björn Rabenstein: Statt Bazooka zu erhalten und zu verbessern, haben wir im vergangenen Jahr beschlossen, sie durch eine der sich schnell entwickelnden Open-Source-Alternativen, die das Spielfeld erst nach unserer Schaffung von Bazooka betreten haben, zu ersetzen. Wir haben eine riesige Feature-Matrix geschaffen, um unsere Optionen zu vergleichen. Kubernetes hat nur knapp gewonnen, aber als realtiv junges Projekt hat es vermutlich noch zahlreiche Entwicklungen vor sich.

JAXenter: Was ist Prometheus?

Fabian Reinartz and Björn Rabenstein:  Prometheus ist ein Open-Source System-Monitoring- und Alerting-System. Es wurde mit modernen Cloud und Container-Umgebungen im Hinterkopf entworfen und unterstützt mehrere dynamische Service-Discovery-Typen (Kubernetes, Marathon, EC2, etc.). Es bietet ein mehrdimensionales Datenmodell und eine leistungsfähige Query-Sprache. Auf der Website des Projekts sind alle Details dazu zu finden.

JAXenter: Welche Pläne habt Ihr mit Prometheus?

Fabian Reinartz und Björn Rabenstein: Das Prometheus-Projekt hat mehr als 200 Mitwirkende und befindet sich in sehr aktiver Entwicklung. Ein Großteil der zahlreichen Komponenten bekommt in regelmäßigen Abständen Releases mit vielen Verbesserungen und neuen Funktionen. Außerdem gibt es eine stetig wachsende Zahl an Drittanbieternutzung, die im Rahmen des Prometheus-Projekts selbst oder von Externen gepflegt werden. Hier ist eine Liste.

Brandneu ist der neue Alert-Manager, eine komplette Überarbeitung der Vorgängerversion, die lediglich als Proof of Concept gemeint war, aber bereits die Art und Weise, wie Alerts in vielen Organisationen behandelt werden, revolutioniert hat. Die verschiedenen Möglichkeiten, Kubernetes einzubauen, sind zudem auch in der Entwicklung ein aktueller Hotspot. Wir erwarten in den nächsten Monaten die Annäherung an ein stabiles Feature in beiden Bereichen.

Das bevorstehende Release des Prometheus-Server 0.18, die zentrale Komponente des Systems, verfügt über eine Menge an internen Verbesserungen, die dennoch für den Benutzer sichtbar sind, da sie auf spektakuläre Weise die Performance in bestimmten Anwendungsfällen verbessern und die Speichereffizienz um den Faktor zwei bis drei erhöhen.

JAXenter: Vielen Dank für dieses Gespräch!

56a64b78dcb76c08727da213version72sizefullBjörn Rabenstein is the team lead of Production Engineering at SoundCloud and one of the main Prometheus developers. Previously, he was a Site Reliability Engineer at Google and a number cruncher for science.

 

56a64b7adcb76c08727da21aversion72sizefullFabian Reinartz is a production engineer at SoundCloud and one of the main Prometheus developers.

 

Verwandte Themen:

Geschrieben von
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: