© saicle/Shutterstock.com
PHP End to End – Teil 4

Zum Kunden: Überführung in den Produktionsbetrieb


Der Entwicklungszyklus endet bekanntlich erst, wenn die App im System des Kunden fehlerfrei läuft. Je unkomplizierter und leichtgewichtiger der Bereitstellungsprozess abläuft, desto leichter gelingt es, zeitnah neue Versionen einer Applikation bereitzustellen. Dieser Artikel beleuchtet die Optionen für das Deployment von PHP-Anwendungen.

Auch wenn in der Theorie das Thema DevOps seit nunmehr geraumer Zeit eine beachtliche Rolle spielt, sind die Entwicklung und der (spätere) Betrieb einer Applikation zwei verschiedene Sachen. Zum einem haben wir die Umgebung, in der wir die Applikation entwickeln, und zum anderen haben wir die Produktionsumgebung, in welcher die Applikation später laufen soll. Beide Umgebungen und die Nutzungsbedingungen können sich dabei recht deutlich unterscheiden. Zu nennen sind beispielsweise ein i. d. R. weniger restriktiv konfigurierter Server in Bezug auf Sicherheit während der Entwicklung und üblicherweise eine deutlich höhere Last, zum Beispiel durch eine größere Anzahl von Nutzern, im laufenden Betrieb. Man kann zwar während der Entwicklung versuchen, die Produktionsumgebung möglichst gut zu adaptieren, dennoch wird ein 100-prozentiger Ansatz hier nur selten gelingen.

Betrachten wir beispielsweise die unterschiedlichen Zugriffsrechte auf den Entwicklungs- und den Produktionsserver. Bereits während der Installation kann es schon zu Problemen kommen. Problematischer sind Zugriffsprobleme aufgrund der Annahme von fälschlicherweise vorhanden Rechten. Tritt ein solcher Fehler erst während der laufenden Produktion beim Anwender auf, ist das Problem groß, aber auch eine unterschiedliche Nutzerlast kann sich auswirken. Die typische Frage ist, wie wird die Applikation beispielsweise mit mehreren tausenden Nutzeranfragen in kürzester Zeitspanne fertig, wenn davon nur ein Bruchteil der Nutzerlast während der Softwareentwicklung simuliert wurde. Ein weiteres typisches Problem sind unterschiedliche Versionen. Wird die Applikation bereits für PHP 8 entwickelt, auf dem Server läuft dagegen die Version 7, dann sind Probleme vorprogrammiert. Das Problem tritt insbesondere dann auf, wenn PHP-Applikationen nicht für Unternehmen erstellt werden (hier kann man die Zielumgebung in begrenzten Umfang beeinflussen), sondern für den freien Markt verfügbar gemacht werden. Statt den aktuellen Versionen von PHP laufen – aus den unterschiedlichsten Gründen – noch deutlich ältere Versionen, wie PHP 5.*. Abbildung 1 stammt zwar noch aus dem Jahr 2020, das bedeutet PHP 8 wurde hier noch nicht berücksichtigt, dennoch dürfte sich das Bild bis zum heutigen Zeitpunkt nur minimal verändert haben.

krypczyk_end_1.tif_fmt1.jpgAbb. 1: Einsatz der PHP-Versionen [1]

Im letzten Teil unserer Artikelserie geht es nun um die finalen Aufgaben der Bereitstellung von PHP-Applikationen, welche etwas mehr Aufwand als ein Copy and Paste vom lokalen Server auf den Produktionsserver erfordern.

Problemlage

Bevor wir technisch einsteigen, werfen wir einen Blick auf die einzelnen Schritte einer Applikation auf dem Weg zum Nutzer. Hier können wir zunächst zwei bekannte Bereiche unterscheiden, die wir mit Development (Dev) und Betrieb (Ops) beschreiben können. Sie wissen es, seit geraumer Zeit bemüht man sich, diese beiden Bereiche miteinander im Sinne des Kunden zu verbinden. Der erste Schritt umfasst die eigentliche Entwicklung (Development) und das Testen (Test) der Applikation. Danach erfolgt die Vorbereitung der Übergabe an die Produktion (Staging) und der eigentliche Betrieb (Production). Annahmen und Eigenschaften der einzelnen Schritte haben wir in Tabelle 1 zusammengefasst. Ein optionaler Schritt (Pre-Production) ist eingefügt.

Dev

Ops

Development

Tests

Staging

Pre-Production (optional)

Production

Schreiben von Code; ausgerichtet auf die Produktivität des Entwicklungszyklus; sollte der Produktionsumgebung ähnlich sein, ist es oft jedoch nicht, i. d. R. lokale Entwicklung, statt auf Serverumgebung

Nicht in der Entwicklungsumgebung; keine Vermischung von Entwicklung und Tests; Entwickler sollten nicht selbst testen, damit es keine Vermischung von Zuständigkeiten gibt

Den Code in der Produktionsumgebung ohne Auswirkung für den Kunden testen; Ziel: Deployment auf dem Produktionssystem testen, bevor es live gestellt wird; die Applikation wird mit Produktionseinstellungen aber ohne Kundeninteraktion getestet

Deployment-Prozess bzw. Scripting testen; die fertige Applikation soll in der Produktionsumgebung ohne Kunden getestet werden

Laufender Betrieb; Entwicklungsteam hat i. d. R. keinen Zugriff, damit im laufenden Betrieb keine Änderungen am Quellcode stattfinden können

Tabelle 1: Charakteristik der Schritte für die Bereitstellung einer Applikation [2]

Kein Gerangel um Zuständigkeiten durch DevOps

Der Vollständigkeit zuliebe sei an dieser Stelle als kleine Erinnerung angemerkt, was gemeint ist, wenn von DevOps gesprochen wird. Der Begriff steht für die beiden Bereiche Development und Operation und steht für einen Schulterschluss zwischen den Mitarbeitern beider Abteilungen. Dieser Ansatz versucht, den traditionellen Graben zwischen diesen beiden wichtigen Bereichen der IT zu überwinden, der aus Zielkonflikten resultiert. Demnach ist der Entwicklungsbereich stark daran interessiert, die implementierten Features möglichst kurzfristig an die Nutzer der Software auszuliefern. Dem IT-Betrieb ist dagegen vorrangig an einem kontinuierlichen und sichern Betrieb der gesamten IT-Landschaft gelegen. Die Übernahme von Softwareupdates stellt in diesem Sinne stets einen Eingriff in das laufende System dar und kann dessen Stabilität bedrohen. Statt kurzfristiger und häufiger Releases, werden lange Laufzeiten und umfassend geplante Updates bevorzugt. Diese Form der Arbeitsteilung ist jedoch überholt, Software hat in der digitalen Welt heute einen anderen Stellenwert, als es noch vor Jahren der Fall war. Statt lediglich ein Werkzeug ist Software heute oft der Treiber von Innovationen. Unternehmen konkurrieren um die besten Lösungen auf dem Markt und setzen dabei zunehmend auf innovative IT-Lösungen. ...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang