© istockphoto.com/Tomacco, © istockphoto.com/akindo
Anforderungen an Build-Systeme im Jahr 2017

PSH Build Middleware Management


Das Thema Build-Skripte wird im PHP-Umfeld immer wichtiger – dank Virtualisierung, dem verstärkten Einsatz von Middleware in der Applikationsarchitektur und dem Aufkommen von immer neuen Tools, die Teilaspekte der Applikationsentwicklung und -pflege drastisch vereinfachen.

Der Status quo im Jahr 2017 ist ein ganz anderer als noch vor zwei oder mehr Jahren. Diese neuen Anforderungen auf bereits bestehenden Systemen abzubilden, fällt dabei zusehends schwerer. Im folgenden Artikel wollen wir eine Abgrenzung dieser neuen Anforderungen wagen und mit PSH einen möglichen Lösungsvorschlag präsentieren.

Aktuelle Build-Systeme, wie z. B. Ant, bieten viele Möglichkeiten, um Prozesse zu automatisieren, doch benötigen für einen effektiven Einsatz einen zeitintensiven Einarbeitungsaufwand. Zusätzlich müssen in der Regel Abhängigkeiten wie Java o. Ä. installiert sein, die die eigentliche Applikation gar nicht zur Ausführung benötigt. Build-Systeme entwickeln sich zusehends zu einer Middleware, da sie immer mehr Systeme und Dienste miteinander verknüpfen müssen (Abb. 1).

shopware_psh_1.tif_fmt1.jpgAbb. 1: Middleware im PHP-Umfeld

Auf der einen Seite müssen verschiedene Environments für die Entwicklung und Continuous Integration provisioniert werden, andererseits muss die Applikation abhängig von dem Environment spezifisch konfiguriert werden können. Die Instanzen unterscheiden sich in der Regel durch unterschiedliche Zugangsdaten und Pfad­angaben. Des Weiteren ist zum Beispiel in einem automatisch generierten Release-Package PHPUnit nicht notwendig. Aus den beschriebenen Szenarien ergeben sich schnell verschiedene Kombinationsmöglichkeiten von Environments und notwendigen Skripten (Tabelle 1).

Environment

Skripte

Local

Initialisierung der Applikation, Ausführung der Testsuite, Cache der Applikation leeren

Local Docker

Initialisierung der Applikation, Ausführung der Testsuite, Cache der Applikation leeren, Docker-Container verwalten, Continuous Integration, Softwarequalitätsmetriken überprüfen

Vagrant/Windows

Entwicklung, Releasepackage erstellen

Continuous Integration Docker

Ausführung der Testsuite, Cache der Applikation leeren, Daily-Builds, Softwarequalitätsmetriken überprüfen, Releasepackage bauen

Live

Aktualisierung der Applikation

Tabelle 1: Applikationsumgebungen

Aus unserem Entwicklungsalltag und Erfahrungen aus mehreren Open-Source-Projekten ergeben sich nachfolgend dargestellte Anforderungen an ein Build-System, die sich mit den meisten Anforderungen von Webanwendungen decken.

Einfache Orchestrierung von Services und Systemen

Es gibt für einen Programmierer verschiedene Möglichkeiten, eine Entwicklungsumgebung aufzusetzen. Die geläufigsten sind Vagrant, Docker oder eine vollständige lokale Installation aller notwendigen Serverdienste. Wie man in Abbildung 2 sehen kann, sind für das Aufsetzen einer lokalen Docker-Umgebung für die Entwicklung verschiedene Schritte notwendig: Zuerst müssen die benötigten Docker-Container gebaut und gestartet werden, danach ist eine Initialisierung der Applikation, in der Regel mit Composer, notwendig. Abschließend kommt meist ein Grunt-Prozess zum Einsatz, der die notwendigen *.css- und *.js-Dateien für das Frontend generiert. Diese Schritte werden durch kleinere Shell-Skripte ausgeführt und somit orchestriert.

shopware_psh_2.tif_fmt1.jpgAbb. 2: DEV-Build einer Applikation

Das Build-System als dünne Garantieschicht

Ein ideales Build-System legt sich wie eine dünne Haut auf die entwickelte Software und bringt keine unnötige Komplexität mit ein. Es informiert im Build-Prozess zuverlässig über Fehler und unterstützt den Entwickler bei der Automatisierung des Prozesses mit hilfreichen Werkzeugen. Ein exemplarischer CI-Prozess ist in Abbildung 3 zu sehen. Auch hier werden im ersten Schritt die benötigten Docker-Container ...

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

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang