Für den Einsatz von Webentwicklungen eignen sich sehr gut VMware Images. Ich werde hier auf verschiedene Punkte eingehen, die die Entscheidung zum Einsatz dieser Technik erleichtern sollen. Es gibt zwei verschiedene Ansätze VMware Images bei der Entwicklung einzusetzen.
A) Die erste ist, dass man alles innerhalb des Gastsystems macht (also im Image), inklusive der Entwicklungsarbeiten wie Dateien bearbeiten, SVN Benutzung, u.s.w. Diese Art von Image benötigt innerhalb des Gastsystems viele installierte Programme, da auch eine grafische Oberfläche gewünscht ist. Des weiteren hat sie den Nachteil, dass man mit dem Gast-Betriebssystem arbeiten muss - und dieses ist meist Linux. Ein Beispiel Image hierfür ist Drubuntu. B) Die zweite Möglichkeit des Einsatzes eines Image beschränkt sich auf die Server Dienste, die man auf den normalen Arbeitsplatzrechner normalerweise nicht installiert hat und auch gar nicht installieren will, weil sie meist Anpassungen am System bedeuten. Hier wird das Image also eingesetzt wie ein richtiger Server, der Apache, SSH, Datenbank und Netzwerkfreigaben bereitstellt (diese Auswahl ist nur ein Beispiel). Die Arbeiten an den Dateien macht der Entwickler hier ganz normal unter seiner gewohnten Arbeitsumgebung. Ich gehe im folgenden nur auf diese Methode ein, weil ich diese stark präferiere. Ein Beispielimage wäre slphpdev.
Für wen ist der Einsatz von VMware Image geeignet?
Generell kann man sagen, dass der Einsatz für alle beteiligen Personen/Rollen geeignet ist, die an der Umsetzung eines Webprojektes beteiligt sind. Das wären zum Beispiel:
- Projekt Manager (PM) Durch den Einsatz eines Image ist das komplette Projekt schnell auf einem Laptop einsatzbereit und kann für Präsentationen beim Kunden verwendet werden. Besonders bei größeren Firmen ist es oft problematisch eine Internetverbindung aufzubauen, da meist Firewalls aktiv sind.
- Business Consultants Meist liegt vielleicht erst nur ein Teil der Projektes vor oder es sollen verschiedene Lösungen beim Kunden präsentiert werden. Ein Techniker kann in einem Image die Installation übernehmen, welches dann auf einem Laptop eingesetzt wird.
- Designer / Frontend Entwickler Als Designer, der meist mit CSS und HTML Code umgeht, fehlt einem oft die Erfahrung, einen Webserver richtig zu installieren und zu konfigurieren.
- PHP Entwickler Die Stärke eines Entwicklers liegt in der Entwicklung und nicht in der Systemadministration. Wieso sollte sich der Entwickler also nicht auf seinen Schwerpunkt konzentrieren. Desweiteren kann das Image genau für die Entwicklung angepasst werden, z.B. dass Debugger, Bibliotheken und andere wichtige Hilfsmittel installiert sind. Weiter unten werden noch mehr Punkte aufgeführt, die für den Einsatz eines VMWare Images sprechen.
- System Administrator Tests mit der Systemarchitektur in Verbindung mit dem Projekt.
- Tester Um die Qualität eines Projektes zu gewährleisten ist es notwendig Tests durchzuführen. Ein Tester hat oft nicht die technische Erfahrung ein Projekt zu installieren (vgl. Usability-Tests).
Wieso gerade VMware Images?
- Plattform unabhängig VMware Images kann unter Windows, Linux und Mac OS X nutzen. Windows: - VMware Workstation (kostenpflichtig) - VMware Server (kostenpflichtig) - VMware Player Linux: - VMware Workstation (kostenpflichtig) - VMware Server (kostenpflichtig) Mac OS X: - VMware Fusion (kostenpflichtig)
- Große Verbreitung In vielen größeren Firmen wird schon mit Images gearbeitet (wenn auch noch viel zu selten). Hier findet man fast ausnahmslos VMware Images.
- Kostenlos Für Windows und Linux kann man VMware Player einsetzen, der kostenlos angeboten wird. Leider liegt zum Zeitpunkt der Erstellung dieses Artikels noch keinen Player für Mac OS X vor. </ul>
Use Cases für den Einsatz
Hier einige denkbare Einsatzbereiche, der eigenen Fantasie sind keine Grenzen gesetzt:- Nachbildungen von Produktivumgebungen Die Produktivumgebung kann genau nach gebaut werden: gleiche Linux Distribution, kleine Softwareauswahl, gleiche Software Versionen, gleiche Konfiguration.
- Entwicklungsumgebungen Eine optimierte Umgebung speziell für den Entwickler, in der er Debugger, Profiler, Testwerkzeuge und andere Goodies einsetzen kann.
- Präsentationen Für Präsentation. Ein Image ist Ideal dafür geeignet. Man geht kein Risiko ein, dass eine eventuell benötigte Internetverbindung nicht zur Verfügung steht, oder dass ein Entwickler auf dem Server etwas geändert hat, was die Präsentation gefährden kann.
- Test Umgebungen - für unterschiedliche Software-Versionen - Automatisierte Tests - Test für Clustering, Replikation, Caching - Konfigurationstests (das System / das Projekt auf unterschiedliches Verhalten testen) - Last Tests - Sicherheitstests
- Gleiches Image Server - Entwicklung Da es auch eine Server Version von VMware gibt, kann man das gleiche Image, was für die Entwicklung verwendet wurde auf dem Server einsetzen. So ist selbst die Hardware identisch, da sie, unabhängig vom Hostsystem, gleich simuliert wird.
- Abgeschlossenes System - Backup Vor allem wenn ein einzelner Entwickler Images einsetzt, eignet sich das Image hervorragend auch als Backup Lösung (sofern man den Quell-Code auch innerhalb des Gastsystems ablegt).
Teamwork - Was ist zu beachten?
A) Es ist besonders wichtig dass die Zuständigkeit festgelegt wird, wer für das Image verantwortlich ist. Dies gilt auch im einzelnen für die Erstellung, die Pflege und den Support für andere im Team. Ein großer Vorteil für den VMWare Image-Einsatz ist die Zeitersparnis. Wird keine Zuständigkeit im Team festgelegt ist dieser Punkt hinfällig. Die Grundidee ist, dass einer ein Image einrichtet und alle anderen dieses verwenden. B) Zusätzlich muss eine Dokumentation bereit gestellt werden, die genau beschreibt, wie man das Image in Betrieb nimmt und was es dabei zu beachten gibt. Es muss jederzeit möglich sein - und zwar für jeden - das Image in Betrieb zu nehmen. C) Schlussendlich muss auch geregelt sein, wo die aktuellste Version des Images bezogen werden kann. Im Idealfall stellt man das Image über einen Webserver zur Verfügung. Der Link hierzu muss in der Dokumentation aufgeführt sein (natürlich sollte für hinreichend Sicherheit gesorgt werden!). Die Release Zyklen des VMware Image hängt stark vom Projekt ab und auch von der Ausgereiftheit der Systemkonfiguration im Image. Ist es ein sehr komplexes Projekt, kann es vielleicht vorkommen, dass alle paar Wochen ein neues Image verfügbar ist. Alle Team-Mitglieder müssen den Download durchführen und auf das neue Image wechseln. Bei "normalen" Webprojekten kann man davon ausgehen, dass man über Monate hinweg mit dem gleichen Image wunderbar über die Runden kommt.Arbeiten mit Images
Glauben Sie es oder nicht! Das arbeiten mit Images im Vergleich zu nicht virtualisierten Systemem macht richtig Spass! Man kann unterschiedliche Images parallel laufen lassen, hier stellt nur die Rechnerleistung und der Hauptspeicher des Hostsystems eine Grenze dar. Man kann ein Image zu jedem Zeitpunkt einfrieren, in den Suspend Modus setzen - selbst beim Bootvorgang. Man braucht also nicht jedes mal einen Bootvorgang durchführen, was ein schnelles Wechseln zwischen unterschiedlichen Images möglich macht. Durch die Snapshot Funktion kann man sozusagen einen Schnappschuss des Systems machen und jederzeit zu diesem Punkt zurückspringen - genial, um z.B. schnell eine neue Software Version auszuprobieren. Danach spring man wieder auf die vorherige Version und das System ist exakt so wie es vorher war.Umgang mit dem Projektdateien (Source-Code)
Es gibt zwei Ansätze mit den Projektdaten umzugehen: entweder sie werden im Gastsystem abgelegt oder auf dem Hostsystem. Unter Projektdaten sind die Dateien gemeint, die aus dem Document Rootverzeichnis des Webservers ausgeführt werden - sprich die PHP Dateien oder die Dateien, der durch die Webbenutzer angelegt werden und auf dem Dateisystem abgelegt werden. 1. Dateien im Gastsystem (im VMware Image) Vorteile: Linux Dateisystem, welches nicht das Case-Sensitive Problem besitzt. Es eignet sich besonders gut als Backup oder als portable Version, da alles zusammen im Image abgelegt ist. Nachteile: Da man die Dateien auf dem Hostsystem bearbeiten will (z.B. mit Eclipse) müssen die Dateien über das Netzwerk im Hostsystem eingebunden werden. Dies kann Performance-Probleme mit sich bringen (z.B. beim Abspeichern einer Datei) und das Arbeiten beeinträchtigen. Es können aber auch Locking Probleme beim Einsatz von Versionierungssystemen wie SVN, CVS oder GIT vorkommen. 2. Dateien auf dem Hostsystem (außerhalb des VMware Image) Vorteile: Da Dateien auf dem Hostsystem liegen kann man dort auch uneingeschränkt damit arbeiten. Nachteile: Abhängigkeiten durch Host Dateisystem (Case-InSensitive) können bestehen und die Portabilität ist nur eingeschränkt gewährleistet, da das Image nicht mehr autark läuft.Die Wahl des richtigen Image
Die Wahl des Image hängt natürlich stark vom Einsatzzweck ab. Soll das Produktivsystem nachgebaut werden, ist die Entscheidung schon getroffen: nämlich das gleiche wie auf dem Produktivsystem. Will man ein Image als optimale Entwicklungsumgebung nutzen sieht das schon ganz anders aus. Man hat freie Wahl: Ubuntu, Gentoo, Debian, Fedora, Redhat, FreeBSD oder sogar Windows. Falls man kein vorgefertigtes VMware Image findet kann man das System seiner Wahl selbst innerhalb VMware installieren. Für die PHP Entwicklung habe ich ein Image auf Basis von Ubuntu angefertigt. Es steht hier zum Herunterladen bereit.Welche Nachteile bringt der Einsatz von Virtualisierung mit sich?
- Geschwindigkeitseinbusen durch die Visualisierungsschicht Die Geschwindigkeitseinbusen sind verschwindend gering. Viele moderne Rechner bieten sogar an, dass bei Multi-Core Prozessoren einzelne Prozessoren direkt der Virtualisierung zugeordnet werden können. Natürlich muss aber berücksichtigt werden, dass 2 (oder mehr) parallel laufende Betriebssysteme mehr Rechnerkapazität benötigen als ein einziges (also ohne Virtualisierung).
- Aufwand für die Pflege des Image Das Image erfordert genauso viel Aufwand, wie ein nicht virtualisiertes System auch in Anspruch nehmen würde. Wenn der Einsatz im Team geplant ist, sollte besondere Sorgfalt geboten sein.
Alternativen zu VMware Images
- Virtual Box (OpenSource)
- Xen (Hareware muss Zen unterstützen)
- Virtual PC (für Windows)
- Parallels (für Mac OS X)
- AMI (mit Amazon EC2)
Weitere Informationen
Vortrag zum Thema: PHP Entwicklung mit VMware Images (Drupalcamp Köln 2009)