Virtualisierte Testumgebung bei dotfly

Virtualisierte Testumgebung

Teil 1: Infrastruktur und eingesetzte Software
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.

Aufbau
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:

- Webserver
  Zusätzlich zu der obligatorischen LAMP Kombination läuft noch eine PostgreSQL-
  und memcached-Instanz.
- Verwaltungsserver
  Der Verwaltungsserver stellt neben dem SVN Repositories noch den DNS-Server
  Bind9, sowie den Jabber-Server ejabberd bereit.
- Buildserver
  Als Continous Integration Lösung setzen wir PHPUnderControl
  (Cruisecontrol) von Manuel Pichler ein.

Das Ganze noch einmal als Grafik abgebildet:

Grafik: Virtualisierte Testumgebung

Einsatz
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:

1. Anlegen einer Subdomain im lokalen DNS-Server (Verwaltungsserver) und anschließendem Senden eines HUP-Signals an den Bind-Prozess
2. Dieselbe Subdomain wird noch einmal an einen DNS-Server im Internet übertragen und ist so schon nach wenigen Sekunden weltweit verfügbar.
3. Im lokalen Dateisystem wird unsere einheitliche Verzeichnisstruktur für Web-Projekte angelegt (Webserver).
4. Anlegen eines Apache-Vhosts (Webserver) und anschließendem Neuladen der Apache-Konfiguration
5. Optional wird automatisch ein SVN Repository angelegt (Verwaltungsserver) und in unserem Repository-Browser eingetragen. Zusätzlich passiert ein Checkout in das htdocs-Verzeichnis.
6. Optional wird eine neue MySQL oder PgSQL Datenbank angelegt.
7. Optional wird ein neues PHPUnderControl-Projekt angelegt (Buildserver), jedoch nur, wenn auch ein SVN Repository existiert.

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.

Backup Strategie
Datenbanken
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.

Projektdateien
Die eigentlichen Projektdateien werden stündlich per rsnapshot gesichert, sodass maximal eine Stunde Arbeit verloren gehen kann.

Verteiltes Backup
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