Interview mit Sandra Parsick

Ansible statt Docker – Provisionierung statt Container: Eine Alternative?

Dominik Mohilo
Parsick, Sandra

© Sandra Parsick

Container können das Deployment unheimlich erleichtern. Aber sind Container deshalb in allen Umgebungen gesetzt? Oftmals lassen sich einfachere Lösungen finden, gerade wenn es nur um Automatisierung geht. In unserem Interview erklärt Softwareentwicklerin und Java-Expertin Sandra Parsick, welche Möglichkeiten es gibt und wann sie angewendet werden sollten.

JAXenter: Hallo Sandra und danke, dass du dir die Zeit genommen hast. Dein Thema auf der DevOps Conference 2018 sind die  automatisierten Deployments. Hierfür nutzen sehr viele Docker und die Container-Technologie, oder planen den Einsatz zumindest. Gibt es dazu eine Alternative?

Eine Alternative zu den Container-Technologien ist es, einfach keine Container zu benutzen.

Sandra Parsick: Hallo Dominik. Eine Alternative zu den Container-Technologien ist es, einfach keine Container zu benutzen. Gerade in der Java-Welt ergibt es aus meiner Sicht in vielen Anwendungsfällen keinen Sinn, den Webcontainer oder die JAR-Datei nochmal in einen Docker-Container zu verpacken.

Ein Container löst das Problem, dass ich meine Anwendung mit ihren Abhängigkeiten zu einer Einheit verpacken kann und diese von anderen Anwendungen isoliert laufen lasse. Diese Problemstellungen haben wir in der Java-Welt dank Webcontainer oder Fat-Jars schon seit Jahren gelöst. Das mag in der PHP-, Python- oder Ruby-Welt anders aussehen, und da denke ich, dass die Container-Technologien definitiv weiter helfen können.

Bezogen auf die Java-Welt halten viele Kollegen gerne das Beispiel dagegen, dass ich dann einfacher meine JVM aktualisieren kann. In meinen Augen verlagere ich das Aktualisierungsproblem nur auf eine andere Ebene. Irgendwann muss ich mein Docker-Daemon auch aktualisieren und stehe dann wieder vor demselben Problem wie bei meinen JVM-Updates.

JAXenter: Worin unterscheiden sich die Lösungsansätze mit Containern von jenen mit Provisionierungswerkzeugen wie Ansible, Chef, Puppet oder Terraform?

Sandra Parsick: Container und Provisionierungswerkzeuge lösen zwei unterschiedliche Probleme. Container bieten mir eine isolierte Laufzeitumgebung (Docker-Daemon und -Container) und ein neues Format für meine Deployment-Artifakte (Docker-Image). Da habe ich noch nicht das Problem gelöst, wie ich meine Container auf die Maschinen bekomme, sie starte et cetera und das Ganze auch noch automatisiere. Um das zu lösen, greife ich dann je nach Anforderungen auf anderes Werkzeug wie Shell-Skripte, ein Provisionierungswerkzeug, Docker Compose oder Kubernetes und Docker Swarm zu.

Provisionierungswerkzeuge helfen mir durch Code, meinen Server zu konfigurieren und meine Deployment-Artifakte auf die Maschinen zu verteilen. Das Deployment-Artifakt kann dann zum Beispiel auch ein Docker-Image sein.

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: Welche Vorteile bietet die Nutzung eines Provisionierungswerkzeuges, und in welcher Situation ist es besser, auf ein solches zu setzen?

Sandra Parsick: Im Grunde kann ich fast alle Probleme, die ich mit Provisionierungswerkzeugen löse, auch mit einfachen (Shell-)Skripten lösen. Provisionierungswerkzeuge haben aber gegenüber Shellskripten den Vorteil, dass ihre Skripte per se idempotent sind, d. h. ich kann sie mehrfach hintereinander ausführen und bekomme das gleiche Ergebnis wie bei einer einzigen Ausführung. Außerdem bekomme ich weitere Features bei den Provisionierungswerkzeuge geliefert wie zum Beispiel Verschlüsselung von Credentials.

Auf Provisionierungswerkzeuge sollte man setzen, wenn man immer wieder Umgebungen gleich aufsetzen muss. Das kann zum Beispiel der Fall sein, wenn ein Testserver „kaputt getestet“ wurde und dieser neu aufgesetzt werden muss.

JAXenter: Wann macht der Einsatz von Ansible und Co. in deinen Augen eher keinen Sinn?

Auf Provisionierungstools sollte man setzen, wenn man immer wieder Umgebungen gleich aufsetzen muss.

Sandra Parsick: Wenn ich meine Automatisierungsprobleme mit wenigen Zeilen Shellskript lösen kann. Aber sobald ich merke, dass meine Shellskripte anwachsen, unübersichtlich und komplex werden, dann ist der Zeitpunkt gekommen, auf ein Provisionierungswerkzeug zu wechseln, also nach dem KISS-Prinzip handeln.

JAXenter: Du sagst, dass Container-Technologien und Provisionierungswerkzeuge gar nicht in direkter Konkurrenz stehen. Wie können Teams das Beste aus beiden Technologien herausholen?

Sandra Parsick: Wenn ich Container einsetzen möchte, muss ich irgendwie auch den Docker-Daemon auf meinen Maschinen installieren und konfigurieren. Dabei kann mir ein Provisionierungswerkzeug helfen, das automatisiert zu machen. Auch brauche ich am Anfang nicht gleich ein Container-Orchestrierungswerkzeug wie Kubernetes oder Docker Swarm, um ein, zwei Container zu deployen. Das kann ich auch mit Hilfe eines Provisionierungswerkzeugs erledigen.

Wenn die Container-Farm weiter ansteigt und irgendwann der Punkt erreicht ist, wo ein Container-Orchestrierungswerkzeug sinnvoll ist, dann hilft mir ein Provisionierungswerkzeug bei dessen Installation und Konfiguration. Denn Kubernetes und Co. müssen ja auch installiert und konfiguriert werden, und das möchte ich auch nicht immer wieder manuell machen.

JAXenter: Welche Erkenntnis sollte jeder Besucher deiner Session mit nach Hause nehmen?

Sandra Parsick: Mir ist wichtig, dass die Besucher mitnehmen, dass sie nicht ihre ganze Infrastruktur auf den Kopf stellen müssen, wenn es erst einmal nur darum geht, ihre Deployment-Prozesse zu automatisieren.

JAXenter: Vielen Dank für dieses Interview!

Parsick, SandraSandra Parsick ist als freiberufliche Softwareentwicklerin und Consultant im Java-Umfeld tätig. Seit 2008 beschäftigt sie sich mit agiler Softwareentwicklung in verschiedenen Rollen. Ihre Schwerpunkte liegen in den Bereichen Java-Enterprise-Anwendungen, agile Methoden, Software Craftsmanship und der Automatisierung von Softwareentwicklungsprozessen. In ihrer Freizeit engagiert sie sich in der Softwerkskammer Ruhrgebiet.

MEHR ZUM THEMA:

Ansible für Entwickler: Eine Einführung in das Orchestrierungswerkzeug

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: