Suche
Leichtgewichtige Java-Virtualisierung mit Vagrant und Puppet

Vagrant und Puppet für Java-Entwickler: Einweg-VMs zur Runtime erstellen

Hendrik Ebbers

Die Anzahl von Tools und Systemen, die ein (Java-)Entwickler zur heutigen täglichen Arbeit benötigt, wird immer größer. Mittlerweile ist ein System-Stack von Tomcat, MongoDB und MySQL zum Beispiel eine ganz normale Entwicklungsbasis. Dazu kommen Maven für den Build und Git als Tool zur Versionierung / Verwaltung der Sourcen. Schnell benötigt man eine Vielzahl an Zusatzsoftware, um eine Anwendung deployen und starten zu können.

Aus dieser Entwicklung, die grundsätzlich als positiver Fortschritt zu betrachten ist, entstehen allerdings auch neue Aufgabenstellungen und Herausforderungen für den Entwickler. Neue Tools müssen evaluiert werden, und oft muss man mehrere Produkte genauer betrachten und Prototypen auf deren Basis entwickeln, bevor man das ideale Tool-Set für das nächste Projekt gefunden hat. Im Idealfall möchte man diese Tools natürlich nicht direkt auf dem eigenen Rechner installieren und so möglicherweise sein System „zumüllen“. Zum Test von Tools empfiehlt es sich daher, eine VM aufzusetzen. Dies kann allerdings sehr zeitintensiv sein. Vor allem Entwickler, die nicht das nötige Linux Know How besitzten, um z.B. eben schnell eine VM mit Apache, PHP und MongoDB einzurichten, werden in diesem Fall Probleme bekommen. Entwickler, denen eine gute Administrations-Abteilung zur Seite steht, können sich hier glücklich schätzen.

Neben dem Aufsetzen und Experimentieren mit diversen Werkzeugen kommen während der Entwicklung noch weitere Probleme hinzu. Oft wird es z.B. schwierig, wenn automatisierte Tests auf solchen Tools aufsetzen. Im Bereich der Persistenzschicht ist es z.B. hilfreich, wenn das genutzte Datenbanksystem einen InMemory-Modus anbietet. So kann man für die UnitTests jeweils eine Datenbank im Arbeitsspeicher aufbauen und die eigenen Tests wirklich in einer Sandbox laufen lassen. Allerdings bieten viele Systeme diese Lösung nicht an. In diesem Fall müssen automatisierte Tests immer wieder auf dem gleichen System ablaufen, und man muss sich selbst um die Bereinigung der Datenbank nach jedem Test kümmern.

Vorstellung von Vagrant & Puppet

Zur Lösung von genau dieser Art von Problemen wurde das in Ruby geschriebene Tool Vagrant entwickelt. Mit Vagant ist es möglich, virtuelle Maschinen „on the fly“ zu erzeugen und zu konfigurieren. Vagrant setzt dazu auf VirtualBox auf und generiert aus vorgefertigten Template VMs, die in Vagrant „Box“ genannt werden, fertig konfigurierte VMs, auf denen die gewünschten Tools und Services laufen. Auf Basis von Vagrant wurde auch das Vagrant-Binding Java API geschrieben, das in diesem Artikel genauer vorgestellt werden soll. Vorher möchte ich zum besseren Verständnis des API allerdings Vagrant und dessen Features beschreiben.

Geschrieben von
Hendrik Ebbers
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.