# Produktivsystem

Bei einem Produktivsystem – auch als Produktivumgebung bezeichnet – handelt es sich um eine Systemumgebung, in welcher Software für einen Arbeitsprozess, für einen Problemlöseprozess, für die Handhabung einer Struktur aus modellierten Geschäftsprozessen oder für einen sonstigen Routinearbeitsgang, der mit dem Computer bearbeitet wird, ausgeführt sowie Daten gespeichert und verarbeitet werden. Dabei wird in der Regel bereits lauffähige, ausgiebig getestete Software mit definiertem Anwendungszweck zum Einsatz gebracht. Üblicherweise werden sämtliche Softwarekomponenten, die für die Ausführung der Software benötigt werden, vor der Inbetriebnahme und vor dem ersten voll-funktionalen Run der Software, aufeinander abgestimmt, konfiguriert, zum Laufen gebracht, insgesamt zu einem funktionierenden Ensemble, das dann „Produktivumgebung“ genannt wird, zusammengebaut.
Eine Bereitstellungs-Pipeline (auch Deployment-Pipeline genannt) besteht aus einer Abfolge von technischen Umgebungen, auf denen der Softwarebereitstellungsvorgang durchgeführt wird. In der Praxis sind dies mindestens die drei technischen Umgebungen „Entwicklungsumgebung“, „Testumgebung“, „Produktivumgebung“. Nicht selten können es bis zu sechs technische Umgebungen („Entwicklungsumgebung“, „Build-Umgebung“, „Testumgebung“, „Qualitätssicherungsumgebung“, „Staging-Umgebung“, „Produktivumgebung“) oder gar mehr sein, je nach Aufwand. Im Softwarebereitstellungsvorgang wird die Software mittels Softwarehersteller-seitig vordefinierten Regeln implementiert und für Client-Anwendungen oder Benutzer bereitgestellt. Dabei wird via Software-Produktdefinition auch festgelegt, welche Prozesse zur Laufzeit dieser Software vom Anwender noch variiert oder in gewissen Grenzen gestaltet werden dürfen.
Im Unterschied zu einer Testimplementierung werden im Produktivsystem reale praktische Probleme (meist im Rahmen einer industriellen und/oder geschäftlichen Anwendung) gelöst oder ein laufender Prozess überwacht und gesteuert. In der Produktivumgebung wird die Software für den eigentlichen Einsatzzweck des Kunden in Betrieb genommen; – im Einsatz generiert die Software für den Kunden einen Geschäftswert. Die Funktionen der Software werden hierbei laufend mittels Logging, Monitoring und Auditing überwacht. Produktivsysteme können so groß sein, dass sie regelmäßig von einem Systemadministrator betreut werden müssen. Bevor jedoch ein Produktivsystem zum Einsatz kommt, muss es eine Reihe von strengen Testzyklen durchlaufen, um mögliche Fehler im Vorfeld abfangen und beheben zu können.
Die Netzwerkumgebung für das Produktivsystem wird von einem Administrator bereitgestellt und entweder vom Administrator oder, im Rahmen von „Continuous Deployment“, von einem DevOps-Entwickler verwaltet. Da es sich bei einem Produktivsystem um eine geschäftskritische Umgebung handelt, wird (aus Softwareherstellersicht) gemäß dem Leitsatz „never change a running system“ ein Steady State bevorzugt.
Bei der Kompatibilisierung von Softwarekomponenten, aber auch bei der Generalüberholung und Migration von Software für Modernisierungszwecke können Containervirtualisierungssysteme wie etwa Docker helfen, Produktivumgebungen zu stabilisieren. Es wäre daher nicht überraschend, wenn deren Bedeutung in Softwarebereitstellungsvorgängen in den kommenden Jahren wächst.