Staging Environment


Der Begriff Staging Environment (deutsch: Inszenierungsumgebung) bezeichnet eine Serverumgebung, die das Testen von Websites und Softwareanwendungen unter annähernd realen Bedingungen erlaubt. Ein Staging Environment besteht aus ähnlicher Hardware wie die Produktionsvariante, die die finale Version (Release) bereitstellt. Beim Staging wird bereits auf Teile der Datenbank zugegriffen und unter Umständen gibt es eine Reihe an Nutzern, die einen privilegierten Zugang zum System bekommen, um die Funktionen zu prüfen. Somit soll simuliert werden, wie das System sich verhält, wenn es unabhängig von der Entwicklungsumgebung, unter Einspeisung von Daten und unter Berücksichtigung der Infrastruktur getestet wird.

Allgemeine Informationen zum Thema

Das Staging ist ein Teil des Workflows bei den meisten Entwicklungsprojekten. Eine Staging Environment ist entsprechend ein Bestandteil des sogenannten Deployment-Prozesses, der die Inbetriebnahme von Webanwendungen und Softwarelösungen im Hinblick auf die Infrastruktur umfasst.[1] Es wird zwischen Entwicklungs- oder Arbeitsschritten und den dazugehörigen Systemen oder Umgebungen unterschieden. In der Regel gibt es für jeden Entwicklungsschritt eine eigene Serverumgebung. Diese muss nicht zwingend ein physischer Server sein, da es aus Kostengründen oft nicht möglich ist. Für das Staging reicht meist ein Virtueller Server aus, der auf dem Server, der auch die Website bereitstellt, gehostet wird – aber durch eine Sandbox abgeschirmt ist.[2] Entwicklungs- und Produktionssystem sollten klar voneinander getrennt werden, um etwaige Konflikte in der Praxis und Fehler bei der Migration der Datenbanken zu vermeiden.

Funktionsweise

Bei kleinen und mittleren Projekten in der Webentwicklung wird zwischen Development, Staging und Production unterschieden.[3] Teilweise existiert noch ein Testing Environment, das sich zwischen der Entwicklung und dem Staging befindet. Dies wird jedoch ausschließlich bei sehr großen Projekten realisiert, da die Kosten erheblich höher sind. Im anglophonen Sprachraum haben sich die Begriffe dev, qa, staging und production durchgesetzt.

  • Dev (Development): Dies ist die Arbeitsversion (working copy) der Software oder Webanwendung, die entweder auf einem gesicherten Server oder lokalen Rechner liegt. Entwickler können Änderungen am Quellcode vornehmen und einzelne Features hochladen. Da die Arbeitsversion meist mit Compiler, Debbugging- und Testingtools betrieben wird, ist sie ausschließlich in dieser Umgebung funktionsfähig. Entwickler verfügen auch oft über eine reduzierte Datenbasis, um bestimmte Funktionen zu überprüfen. Bei der Entwicklung eines Onlineshops kann beispielsweise ein Teil des Produktkataloges dazu dienen, die Metastruktur der Daten wie Felder für den Preis, die Verfügbarkeit oder verschiedene Produktvarianten in die Anwendung übertragen zu können. Wenn mehrere Entwickler an großen Projekten arbeiten, kommt meist zusätzlich ein Versionskontrollsystem wie Git, Mercurial oder Subversion zum Einsatz, um Änderungen und Updates zu synchronisieren.
  • QA (Quality and Assurance): Diese optionale Umgebung dient dazu, die Anwendung auf Bugs und Fehler im Code zu überprüfen, ohne dass sich dieser Arbeitsschritt auf die Development-Umgebung auswirkt. Testet zum Beispiel eine Person gerade eine Funktion und eine andere Person nimmt Änderungen vor, würde das System nicht mehr funktionsfähig sein. Deshalb werden beide Arbeitsschritte voneinander getrennt. Die Qualitätssicherung dient jedoch auch dazu, die Sicherheit des Systems zu gewährleisten. Häufig kommen ganze Teams zum Einsatz, die einen Zugang zum System erhalten – ähnlich wie bei einem Betatest, nur nicht mit realen Nutzern.
  • Staging: Sobald alle Fehler in der Anwendung beseitigt worden sind, kann die Arbeitskopie des Quellcodes in die Staging Environment migriert werden. Diese Version ist der Release-Kandidat der Anwendung. Üblicherweise ist die Staging Umgebung mit der Produktionsumgebung identisch, sodass Soft- und Hardware keine wesentlichen Unterschiede beim Gebrauch der Anwendung aufweisen. Letzteres hat zudem den Zweck, die Konnektivität innerhalb des Gesamtsystems zu überprüfen: Zum Beispiel der Zugriff auf Datenbanken und das Zusammenspiel mit der Peripherie. Da die Performance des Systems wesentlich von der Umgebung abhängt, werden beim Staging auch Ladezeiten und weitere Leistungskriterien begutachtet. Wenn die Qualitätssicherung wegfällt – und das dürfte bei den meisten Projekten der Fall sein –, wird beim Staging getestet. In diesem Fall ist das Staging gewissermaßen die Generalprobe, bevor die Anwendung auf die Produktionsumgebung migriert wird.
  • Production: Die Produktionsumgebung ist idealerweise eine Eins-zu-eins-Kopie der Staging Umgebung. In der Praxis ist dies zwar nicht immer möglich, aber die Hardware sollte ebenso wie die Software der im Staging verwendeten Bauteile sehr ähnlich sein. Nur so werden Konflikte ausgeschlossen. An dieser Stelle werden von Entwicklern keine Änderungen mehr vorgenommen, weil die ehemalige Arbeitskopie des Quellcodes bereits auf dem Liveserver liegt. Der Quellcode konnte veröffentlicht werden, weil er durch die verschiedenen Umgebungen ausgiebig geprüft, getestet und verbessert wurde.

Bedeutung für die Programmierung

Staging Environments kommen in den meisten Fällen lediglich auf Enterprise-Niveau zum Einsatz.[4] Je mehr Entwickler an einer Anwendung arbeiten, desto größer ist das Risiko für einen Systemcrash und den Verlust der Daten. Das kostet Zeit und Geld. Deshalb werden die verschiedenen Entwicklungsschritte einzeln durchgeführt. Bei kleineren Projekten werden Entwicklungs- und Produktionssystem isoliert, um die Kosten für die Bereitstellung der Ressourcen zu sparen. Denn Staging Systeme nehmen relativ viele Ressourcen in Anspruch: Die Hardware muss beschafft werden und sollte dem Produktionssystem möglichst ähnlich sein. Das System muss konfiguriert und mit den erforderlichen Daten aufgesetzt werden. Erst dann erfüllt es seinen Zweck: Das Produktionssystem zu simulieren, um die Anwendung unter möglichst realen Bedingungen testen zu können.[5]

Einzelnachweise

  1. What is a staging environment? programmerinterview.com. Abgerufen am 19.10.2015
  2. Web Development: What is Staging? commonplaces.com. Abgerufen am 19.10.2015
  3. Deployments Best Practices guides.beanstalkapp.com. Abgerufen am 19.10.2015
  4. Dev vs Stage environment vs Prod Environment programmers.stackexchange.com. Abgerufen am 19.10.2015
  5. What is the main purpose and sense to have staging server the same as production? stackoverflow.com. Abgerufen am 19.10.2015

Weblinks