Jedes Entwickler-Team muss sich ab einer gewissen Größe Gedanken um die Infrastruktur der eigenen Testumgebung machen.
Auch wir bei dotfly haben das getan und uns für eine virtualisierte Testumgebung entschieden. Welche Hard- und Software wir dafür einsetzen und wie die einzelnen Pakete konfiguriert werden müssen, werden wir hier in einem mehrteiligen Artikel darstellen.Teil 1: Infrastruktur und eingesetzte Software
Als Hostsystem dient ein Hypervisor auf Basis einer MS Windows Server 2008 Hyper-V Installation auf einem 19″ Rackserver mit einem Intel Xeon, RAM im zweistelligen Bereich und mehreren 15K SAS Festplatten im RAID6-Verbund.
Auf diesem Hostsystem laufen drei virtuelle Server:
Das Ganze noch einmal als Grafik abgebildet:

Um neue Projekte anzulegen, müssen einige Aktionen durchgeführt werden. Damit nicht jedes mal eine Reihe von Konfigurationsdateien und Init-Scripten manuell angepasst und ausgeführt werden müssen, haben wir ein PHP-CLI Tool entworfen, das unter anderem folgende Aktionen ausführt:
Durch diese Basis können wir sofort mit der Entwicklung beginnen.
Die Konfiguration des Apache-Vhost sieht standardmäßig vor, dass nur der Zugriff aus dem LAN möglich ist (daher das redundante Anlegen der Subdomain im LAN sowie im WAN).
Über das PHP-CLI Tool ist es uns jedoch möglich auch einen IP-Adressbereichsabhängigen sowie HTTP-Authentifizierugsbasierten Zugriff zu ermöglichen. Auch eine Kombination ist natürlich machbar.
Das hat den Vorteil, dass wir unseren Kunden zwischendurch Einblick gewähren können, ohne den aktuellen Stand auf einem Server im Internet installieren zu müssen.
Die SVN Repositories sind per SSH auch über das Internet erreichbar, um mit anderen Agenturen oder freien Mitarbeitern zusammenarbeiten zu können.
Die PHPUnderControl-Projekte müssen, je nach Projekt, natürlich noch nachjustiert werden. Anders als bei OXID eSales leuchtet bei uns keine rote Lampe wenn ein Build nicht ausgeführt werden kann, sondern in diesem Fall werden die Entwickler per Instant Messenger (Jabber) benachrichtigt, um diesen Zustand durch einen korrigierten Commit zu verändern.
Grundsätzlich werden für jeden Tag separate SQL-Dumps der MySQL- und PgSQL-Datenbanken erstellt. Vom aktuellen Arbeitstag sind stündliche SQL-Dumps erhältlich. Um Speicherplatz zu sparen werden diese noch mit bzip2 und der maximalen Kompressionsstufe archiviert.
Die eigentlichen Projektdateien werden stündlich per rsnapshot gesichert, sodass maximal eine Stunde Arbeit verloren gehen kann.
Einmal täglich werden die oben genannten Daten inklusive einem kompletten Abbild der SVN Repositories auf einen Backup-Server im Internet gesichert, sowie auf rotierende LTO-Bänder.
Die in diesem Artikel abgebildeten Bilder stammen ohne Ausnahme von iconfinder.net
Sehr interessante Architektur. Ich schreibe gerade eine Bachelor Thesis über Servervirtualisierung und mich wundert es, dass ein Microsoft Hyper-V zur Virtualisierung von Linux Maschinen eingesetzt wird. Darf ich fragen warum gerade Hyper-V und nicht ESXi oder XEN?
MfG
Gregor
Hi Gregor,
ich persönlich hätte auch ESXi bevorzugt jedoch stellt der Windows Server auch MS spezifische Dienste wie z.B. Exchange bereit.
Klar hätte man den Windows Server auch in einen virtuellen Server stecken können, jedoch wird hier alles was MS Serverprodukte angeht von einem externen Dienstleister betreut, der durch die Serviceverträge auch dafür sorgt, dass das Hostsystem reibungslos läuft.
Grüße nach Dortmund
Adrian
Hey Adrian,
das leuchtet natürlich ein! Danke für die Info.
Grüße nach Köln
gk
21. September, 2009