Direkt zum Seiteninhalt springen

Wie wir Software entwickeln Teil 2: Lokale Ent­wick­lungs­um­ge­bung

Im ersten Teil unserer Serie über unseren Weg, gute Software zu entwickeln, haben wir die Wichtigkeit der Nutzung einer Versionsverwaltung beleuchtet. In dem heutigen Beitrag geht es darum, wie wir schnell und unkompliziert Projekte lokal aufsetzen, um überhaupt arbeitsfähig zu sein. 

Moderne Web-Applikationen nutzen zahlreiche Komponenten; damit überhaupt etwas im Browser angezeigt werden kann, benötigen wir einen Web-Server wie Apache oder Nginx, PHP in der jeweils korrekten Version, eine Datenbank aber auch zahlreiche weitere Software, um Bilder zu manipulieren, APIs anzusprechen oder einen Suchserver wie z.B. solr. Und natürlich benötigen wir all dies - idealerweise in einer identischen oder zumindest sehr ähnlichen Konfiguration - auf jedem einzelnen Entwicklungsrechner. 

Zusätzlich müssen die Daten des Live-Systems zumindest halbwegs aktuell auf die Entwicklungsumgebung eingespielt werden können; z.B. um einen Fehler nachstellen zu können, der seine Ursache im Code oder aber auch durch eine falsche Eingabe von Daten haben kann. 

Um diesen Anforderungen gerecht zu werden, haben wir schon früh mit Virtualisierungssystemen gearbeitet und schließlich mit DDEV, einem dockerbasierten lokalen Entwicklungssystem, unsere Lösung gefunden. 

Zum einen können wir über Docker-Container alle Softwarekomponenten, die wir für ein Projekt benötigen, zusammenstellen. Auch mehrere Projekte gleichzeitig mit sehr unterschiedlichen Voraussetzungen sind kein Problem, was manchmal für das gleichzeitige Testen von Client-/Serverkomponenten unabdingbar ist.

Auch die gesamte DDEV-Konfiguration ist bei uns unter Versionskontrolle; das bedeutet, dass ein Entwickler ein neues Projekt innerhalb von Minuten aus der Versionskontrolle aus-checkt und mittels eines Befehls eine arbeitsfähige Kopie auf der lokalen Maschine hat. Damit haben wir die Setupzeiten für Projekte optimiert. 

Auch ein aktueller Datenbankstand und File-Assets (jeweils vom Vortag) werden mit einem Befehl von einem Zwischenspeicher auf den lokalen Rechner synchronisiert. Selbst sehr umfangreiche Projekte haben wir damit in weniger als 15min auf dem Rechner eines Entwicklers arbeitsfähig. Bei Bedarf werden die Daten automatisch anonymisiert, darauf gehe ich in einem späteren Teil dieser Reihe nochmals genauer ein.

Für unsere Kunden bedeutet das: Schnellere Ergebnisse und weniger Onboarding-Zeit. Unsere Entwickler freuen sich über einen standardisierten Projektaufbau und können sich auf das Wesentliche konzentrieren, ohne Zeit im Projektsetup verschwenden zu müssen. 

Durch den standardisierten Aufbau unserer Projekte finden sich unsere Entwickler in kürzester Zeit in all unseren Projekten zurecht. Das Aufsetzen eines neuen Projekts dauert nicht länger, als sich eine frische Tasse Kaffee aus der Küche zu holen - und frisch koffeiniert und mit dem lauffähigen Projekt stürzen sich unsere Entwickler gerne in die Aufgaben. :) 

Im nächsten Teil dieser Artikelserie stellen wir sicher, dass die Software überall läuft und nicht nur auf dem Entwicklungsrechner.