Interview mit Michael Bruns auf der DevOpsCon 2017 in München

„Eine schlecht funktionierende Anwendung in Container zu packen, macht sie nicht besser“

Dominik Mohilo

Container sind definitiv kein Allheilmittel, manchmal sind sie sogar für ein Projekt eher Last als Vorteil. Im Interview von der DevOpsCon 2017 in München erklärt Michael Bruns, Softwareentwickler und -architekt bei inovex, in welchen Projekten sich der Einsatz von Docker, Kubernetes und Co sich wirklich lohnt. Außerdem verrät er, ob Serverless die Container-Technologie bald ersetzen wird.

JAXenter: Michael, Container werden ja allseits als Allheilmittel angesehen – welche Vorteile haben sie wirklich?

Michael Bruns: Es gibt verschiedene Vorteile, die sie tatsächlich haben. Wenn ich z.B. ein großes Rechenzentrum und Hardware habe, die ich effizienter nutzen will, dann kann ich das mit Containern und Tools wie Kubernetes hinbekommen. Es gibt auch Apps, wo ich mir die lokale Entwicklung erleichtern kann, weil ich es sonst vielleicht nicht schaffe, Leute auf einen gemeinsamen Nenner zu bringen. Häufig kommt es vor, dass man sich nicht auf etwas einigen kann, wie zum Beispiel eine einheitliche JVM-Version. Wenn ich damit also Schwierigkeiten habe, dann kann ich das über Container gewährleisten.

Was ich auch schon gehört habe ist, dass man beim Einsatz von Sprachen wie Python, wo Librarys eher über das System installiert werden müssen, Container einsetzt. In diese werden dann die verschiedenen Versionen einer Application oder eines Services mit verschiedenen Abhängigkeitsversionen gepackt, damit das nicht jeder selbst machen muss. Das sind durchaus völlig valide Anwendungsfälle, wo ich sagen kann: Da helfen mir Container eine Abstraktionsschicht zu schaffen, die vielleicht sonst nicht existiert, um mir da Schmerzen zu nehmen.

JAXenter: Wo Vorteile sind, da sind mit Sicherheit auch Nachteile – kein Licht ohne Schatten. Welche Nachteile gibt es bei der Container-Technologie?

Wenn ich eine schlecht funktionierende Anwendung in einen Container packe, habe ich eine schlecht funktionierende Anwendung im Container.

Michael Bruns: Ich ziehe mir damit eine Abstraktionsschicht ein, die vielleicht sonst gar nicht da wäre. Abstraktion ist immer Fluch und Segen zugleich. Auf der einen Seite kann mir das helfen, auf der anderen Seite sollte man meiner Meinung nach versuchen, es nach Möglichkeit auch ohne zu schaffen. Gerade Tools wie Kubernetes sind derzeit noch relativ komplex zu beherrschen. Das wird sich vielleicht irgendwann ändern, wenn es mehr Managed-Services gibt, die das ganze unterstützen. Es ist halt einfach gerade so ein Hype-Thema.

Ich erlebe es relativ häufig, dass Firmen sagen: „Wir machen das alles mit Containern – wir machen das alles mit Kubernetes“, weil sie irgendwie der Meinung sind, dass dann die Welt besser wird. Aber wenn ich halt eine schlecht funktionierende Anwendung habe, und packe die in einen Container, dann habe ich eine schlecht funktionierende Anwendung in einem Container. Das nützt mir nichts, wird aber leider oft so verkauft und damit stehe ich so ein bisschen auf Kriegsfuß. Besonders bei der Betrachtung von Containern als Allheilmittel stelle ich halt immer Fragen wie „Ist es wirklich der Container, der euch eine Verbesserung bringt, oder ist es ein Tool wie Docker oder Kubernetes?“, „Habt ihr vielleicht ganz andere Probleme?“ oder „Müsst ihr vielleicht erst einmal die Anwendung neu strukturieren, bevor ihr sie in Container packt, anstatt eine nicht funktionierende Anwendung in einen Container zu packen?“ Meiner Meinung nach bringt das jedenfalls keine Verbesserung.

DevOpsCon Whitepaper 2018

Free: 40+ pages of DevOps expert knowledge

Learn about Containers,Continuous Delivery, DevOps Culture, Cloud Platforms & Security with articles by experts like Kai Tödter (Siemens), Nicki Watt (OpenCredo), Tobias Gesellchen (Europace AG) and many more.

JAXenter: In deiner Session auf der DevOpsCon hast du über das Thema „Docker bzw. Kubernetes – muss das wirklich immer sein?“ gesprochen. Für welche Projekte eignet sich denn diese Kombination und die Container-Technologie allgemein am besten?

Michael Bruns: Wie ich oben bereits sagte: Ich glaube es gibt Projekte, wo ich einfach ein Set-up habe, bei dem es sich lohnt, auf Container zu setzen. Beispielsweise bei einer relativ klassischen Firma, die ihr eigenes Rechenzentrum oder große Hardware-Ressourcen hat. Dort sagt man sich vielleicht, dass man einen leichtgewichtigeren Ansatz fahren, automatische Skalierung haben und die vorhandene Hardware effizienter nutzen möchte. Das ist ein Szenario, bei dem es völlig valide ist, von Anfang an zu sagen: Ich nutze Container-Technologie oder auch sowas wie Kubernetes.

Ein anderer Punkt, bei dem der Einsatz von Containern absolut sinnvoll ist, ist wenn ich gezwungen bin, eine Multi-Cloud-Strategie zu fahren. Es gibt ja Anwendungsfälle, wo sowohl AWS, als auch Azure, als auch Google Platforms oder so etwas unterstützt werden muss. Ich stelle allerdings in Frage, ob diese Fälle tatsächlich wirklich so häufig existieren. Wenn es tatsächlich so wäre, dass ich für irgendein Failover-Szenario Multi-Cloud-Strategien fahren muss, würde ich aber auch ganz klar sagen, dass Container da aber auch nicht wirklich helfen. Man hat dann eben nicht mehr etwa AWS als kleinsten gemeinsamen Nenner, sondern braucht einen anderen und den können Container an dieser Stelle absolut einfach liefern.

JAXenter: Wo würdest du sagen, ist es absolut sinnlos Container und Kubernetes bzw. Docker einzusetzen?

Ich glaube Serverless und Container-Technologie werden problemlos koexistieren.

Michael Bruns: Es ist etwas fragwürdig zu sagen, die Nutzung sei „absolut sinnlos“. Es gibt meiner Meinung nach einfach nicht diese „Silver Bullet“, mit der alles funktioniert, und „absolut sinnlos“ kann man auch schwer sagen. Wenn ich mit irgendeinem Projekt starte und weiß noch nicht genau, was mich erwartet (etwa wie sich die Nutzerzahlen entwickeln werden, welche Lastspitzen zu erwarten sind oder solche Dinge), sollte ich mich dann erst einmal auf andere Dinge konzentrieren. Also anfangs sollte man eher überlegen, wie die Anwendung entwickelt werden muss, damit sie das, was bereits als Prämisse klar ist, vernünftig umsetzt. Und wenn das dann funktioniert, dann kann ich mir immer noch Gedanken dazu machen, ob es sinnvoll ist, das Ganze in Container zu packen.

Es ist meiner Meinung nach viel wichtiger, eine Anwendung intern sinnvoll zu strukturieren und nach heutzutage eigentlich gängigen Mustern einer Cloud-Anwendung aufzubauen. Es gibt zum Beispiel diese 12-Factor-Apps, für die Guidelines existieren, an denen man sich entlanghangeln kann. Denn wenn ich eine Anwendung so aufbaue, dann ist es hinterher nicht mehr so schwierig, sie in Container zu packen. Wenn ich einen Monolithen in einen Container packe, sind wir wieder bei dem Punkt von eben, macht also an der Stelle wieder keinen Sinn. Dann sollte ich mich erst an etwas anderes machen. Nichtsdestotrotz kann mir langfristig auch in so einem Projekt durchaus ein Container helfen – ich würde nur den Fokus erst einmal wie gesagt ganz woanders hinlegen.

JAXenter: Zum Abschluss vielleicht noch einen kleinen Blick in die Zukunft. Ist die Container-Technologie zukunftssicher oder läuft Serverless dem Ganzen jetzt so ein bisschen den Rang ab?

Michael Bruns: Ich glaube, das kann beides koexistieren. Letztendlich sind Serverless-Funktionen nichts anderes, als winzige Container, die ich schnell hochfahre und dann schnell wieder runterfahre. Es gibt mittlerweile auch die Möglichkeit mit Kubernetes, sich solche Lösungen selbst zu bauen. Und natürlich existieren dafür auch Tools wie Fission. Die Hürde ist noch relativ hoch, weil besagte Tools noch relativ neu sind und weil man wirklich schauen muss, ob es genug Leute gibt, die das beherrschen. Spannend wird es meiner Meinung nach dann, wenn mehr Cloud-Provider etwas anbieten, wie jetzt kürzlich Google, die Cloud Platforms veröffentlicht haben. Das ist im Prinzip „Managed Kubernetes“. Es existieren natürlich auch Azure Functions und AWS Lamda, wo ich das Ganze mit einer sehr niedrigen Hürde schon jetzt machen kann.

Genauso, wie zu sagen, dass mit Containern alles besser wird, halte ich es für falsch zu sagen, mit Serverless wird alles besser. Es gibt nicht den Hammer, mit dem alles aussieht, wie ein Nagel. Ich sollte alles mit Augenmaß einsetzen, darum denke ich, dass es auch auf die nächsten Jahre hinaus beides koexistieren wird.

JAXenter: Danke, Michael!

Michael Bruns ist Software-Entwickler und -Architekt bei inovex. In fast 15 Jahren hat er mehrere große, verteilte Systeme aufgebaut und dabei einige Best Practices und auch Fallstricke kennengelernt. Er ist großer Fan des Leitsatzes “The right tool for the job” und versucht deshalb, Overengineering und unnötige Komplexität mit allen Mitteln zu vermeiden.
Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: