Zum Inhalt springen

Softwareumgebungen einfach erklärt

Porträt von Dominik Pisch

Dominik Pisch

Geschäftsführer

Aktualisiert am

In der kontinuierlichen Entwicklung von Apps und Webseiten haben unterschiedliche Stakeholder verschiedene Ansprüche an die Softwareumgebungen. So ist es beispielsweise notwendig, dass Entwickler für neue Features Änderungen am System vornehmen können, gleichzeitig aber die bestehende App oder Webseite für normale Nutzer erreichbar bleibt. Dies wird gewährleistet, indem die Software auf verschiedenen Softwareumgebungen eingesetzt wird. Welche das sind und wofür und wann diese benötigt werden, wird im folgenden Artikel erklärt.

Ablaufdiagramm: die Entwicklungsumgebung baut Version 1.0 und 2.0, die zur Veröffentlichung in die Produktivumgebung übergehen.
Beispiel einer einfachen Softwareumgebung

Entwicklungsumgebung

Die Entwicklungsumgebung ist die Umgebung, in der die Software gebaut und verändert wird: Hier arbeiten die Entwickler, ohne dass Nutzer etwas davon mitbekommen.

Jede App oder Webseite benötigt mindestens einen im Internet erreichbaren Server und eine Datenbank, um Daten bereitzustellen. Für die erste Entwicklung einer Software reicht ein solcher Server vollkommen aus. Dieser ermöglicht es, dass die App sicher zur Datenbank kommuniziert und die Erreichbarkeit der Webseite bereits während der Entwicklung geprüft werden kann. Während der Entwicklung kann dann der Server auf die Bedürfnisse der App und umgekehrt angepasst werden. Sollte sich herausstellen, dass die Wünsche der Kunden stark vom tatsächlichen Stand abweichen, so ist bis zu diesem Zeitpunkt nur der nötigste Aufwand in die Softwareumgebung geflossen und die Projektkosten wurden geringgehalten. Wenn die App dagegen wie gewünscht fertiggestellt werden konnte, dann muss diese der Öffentlichkeit zur Verfügung gestellt werden. In diesem Fall bietet es sich an, mit der Produktivumgebung eine zweite Softwareumgebung zu erstellen.

Produktivumgebung

Die Produktivumgebung (auch Produktivsystem oder Produktionsumgebung genannt) ist die Umgebung, in der die veröffentlichte Software läuft und mit der die Nutzer tatsächlich arbeiten.

Da die veröffentlichte App oder Software mit dem produktiven Server kommuniziert, ist es unerlässlich, dass dieser immer online und funktionstüchtig ist. Ausfälle der Produktivumgebung bedeuten, dass die App der Nutzer nicht korrekt funktioniert. Durch die Trennung von der Entwicklungsumgebung können auch die Daten getrennt gehalten werden. Damit kommen die Endnutzer nicht mit Testdaten in Kontakt. Der Produktivserver kann auch gezielt skaliert werden, wenn die Last durch viele Nutzer steigt. Das ist bei der Entwicklungsumgebung nicht notwendig, da im Regelfall eine gleichbleibende Anzahl an Entwicklern auf das System zugreift.

Durch die Trennung von der Entwicklungsumgebung kann die App oder Software auch weiterentwickelt und eventuelle Probleme behoben werden. Dabei agieren die Entwickler mit den Entwicklungsservern und erweitern diese oder passen Funktionen an. Die Produktivumgebung bleibt davon unberührt, sodass der veröffentlichte Stand weiterhin funktioniert, auch wenn im Hintergrund stetig weiterentwickelt wird. Wenn schließlich ein Stand erreicht ist, der als neues Update veröffentlicht werden soll, dann kann der Stand vom Entwicklungssystem auf das Produktivsystem gezogen werden und das neue Update für die App oder Software veröffentlicht werden. So wird das System iterativ weiterentwickelt.

Für viele Fälle reichen diese beiden Softwareumgebungen bereits aus, manchmal ist es jedoch sinnvoll, weitere Serverschichten einzusetzen, um die Qualität der Updates stärker abzusichern.

Testumgebung

Eine Testumgebung ist eine eigene Umgebung, in der Entwicklungsstände geprüft werden, bevor sie veröffentlicht werden – getrennt von der Entwicklung und vom Produktivbetrieb.

Um zu prüfen, ob die entwickelten Features für die App oder Software so funktionieren, wie erwartet, werden Softwaretests durchgeführt. Hier werden einzelne Komponenten geprüft. Da während stetiger Entwicklung sich der Stand der App oder Software permanent verändert, kann mit einer Testumgebung in regelmäßigen Intervallen der Entwicklungsstand festgehalten und überprüft werden, ohne dass die Nutzer damit in Kontakt kommen. Wenn ein Entwicklungsstand abgesegnet wurde, ist bestätigt, dass dieser zur Veröffentlichung bereit ist. Dies bringt allerdings auch einen beträchtlichen Mehraufwand für das Testen und Bereitstellen der Umgebung mit sich. Sollten Updates nur unregelmäßig entwickelt werden, so kann dies auch in der Entwicklungsumgebung getestet werden. In dem Fall pausiert die Entwicklung an kritischen Features, bis die Tests abgeschlossen sind.

Staging-Umgebung

Eine Staging-Umgebung ist eine möglichst exakte Kopie der Produktivumgebung, auf der ein Update unter realen Bedingungen geprüft wird, bevor es live geht.

Schließlich gibt es noch die Möglichkeit, eine Staging-Umgebung aufzusetzen. Bei dem Kopieren des Entwicklungsstands auf das Produktivsystem können auch immer Fehler auftreten. Diese sollten auch bemerkt und behoben werden, bevor die Nutzer damit in Kontakt kommen. Dafür wird mit der Staging-Umgebung eine Kopie des Produktivsystems erstellt, die als Generalprobe für den Ernstfall gilt. Dort kann geprüft werden, ob das neue Update der App oder Software tatsächlich wie beabsichtigt funktioniert. Schließlich kann auch das Verhalten des Systems unter großer Last getestet werden, ohne dass man dafür den Produktivserver belasten müsste. Das bietet sich insbesondere dann an, wenn durch Marketingmaßnahmen ein starkes Nutzungswachstum erwartet wird.

Zusammenfassung

Die Entwicklungsumgebung bildet das grundlegende System, mit dem die App oder Software entwickelt werden kann. Zur Veröffentlichung ist es notwendig, eine gesonderte Produktivumgebung aufzusetzen, damit die Entwicklung von der veröffentlichten App oder Software getrennt werden kann.

Testumgebungen ermöglichen insbesondere auch in größeren Projekten spezifische Tests von Entwicklungsständen und mit Staging-Umgebungen können Probleme bei der Veröffentlichung von neuen Updates bereits im Vorhinein identifiziert und behoben werden.

Ablaufdiagramm mit vier Spalten: Entwicklungs-, Test-, Staging- und Produktivumgebung, mit Feedback-Schleifen und Veröffentlichung.
Beispiel einer komplexen Softwareumgebung

Bei in2bit sind getrennte Staging- und Produktivumgebungen sowie tägliche verschlüsselte Backups mit Restore-Tests fester Bestandteil unserer Wartungsverträge. Wenn Sie überlegen, einen Prozess in individuelle Software zu überführen, planen wir die passende Umgebungsstruktur von Anfang an mit, am besten in einem kostenlosen Erstgespräch. Mehr aus der Praxis: Mock-ups und App-Entwicklung mit Flutter.