© Liashko/Shutterstock.com
Entwickler Magazin
Interview mit Sandra Parsick

Provisionierung statt Container?

Container können das Deployment erleichtern. Aber sind sie 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.

Sandra Parsick


Entwickler Magazin: Wenn es um automatisierte Deployments geht, ist oft sofort die Rede von Docker und der Containertechnologie. Gibt es dazu eine Alternative? Sandra Parsick: Eine Alternative zu den Containertechnologien 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 Containertechnologien definitiv weiterhelfen 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.EM: Worin unterscheiden sich die Lösungsansätze mit Containern von jenen mit Provisionierungswerkzeugen wie Ansible, Chef, Puppet oder Terraform?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-Artefakte (Docker Image). Da habe ich noch nicht das Problem gelöst, wie ich meine Container auf die Maschinen bekomme, sie starte etc. 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-Artefakte auf die Maschinen zu verteilen. Das Deployment-Artefakt kann dann zum Beispiel auch ein Docker Image sein.EM: Welche Vorteile bietet die Nutzung eines Provisionierungswerkzeugs, und in welcher Situation ist es besser, auf ein solches zu setzen?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 ...

Entwickler Magazin
Interview mit Sandra Parsick

Provisionierung statt Container?

Container können das Deployment erleichtern. Aber sind sie 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.

Sandra Parsick


Entwickler Magazin: Wenn es um automatisierte Deployments geht, ist oft sofort die Rede von Docker und der Containertechnologie. Gibt es dazu eine Alternative? Sandra Parsick: Eine Alternative zu den Containertechnologien 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 Containertechnologien definitiv weiterhelfen 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.EM: Worin unterscheiden sich die Lösungsansätze mit Containern von jenen mit Provisionierungswerkzeugen wie Ansible, Chef, Puppet oder Terraform?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-Artefakte (Docker Image). Da habe ich noch nicht das Problem gelöst, wie ich meine Container auf die Maschinen bekomme, sie starte etc. 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-Artefakte auf die Maschinen zu verteilen. Das Deployment-Artefakt kann dann zum Beispiel auch ein Docker Image sein.EM: Welche Vorteile bietet die Nutzung eines Provisionierungswerkzeugs, und in welcher Situation ist es besser, auf ein solches zu setzen?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 ...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang