Workflows

Planen, entwickeln, testen & deployen

Planen: Kanban

Spätestens wenn die Haupt-Entwicklungsphase vorbei ist, verliert man schnell den Überblick über die noch offenen Kleinigkeiten. Anpassungen und Bugs werden nebenbei via Mail, WhatsApp, Facebook, Telefon oder persönlich kommuniziert und geraten schnell in die Vergessenheit – Zeit sie an einer zentralen Stelle zu sammeln.

Trello bietet ein kostenfreies Kanban Tool für genau diesen Zweck:
Wenn es schnell gehen muss, können Aufgaben als Schlagwort hinzugefügt werden – für eine genaue Planung können die erzeugten "Karten" um Checklisten, Mitarbeiterzuordnung, Abgabedatum etc. angereichert werden.

Jede Karte durchwandert die Listen von links nach rechts: Backlog, Todo, In Progress, To Test, Release, bis es schließlich die Liste Erledigt erreicht.

Durch Benachrichtigungen (wahlweise via Mail, App oder Online) geht so keine Aufgabe verloren und jeder Projektbeteiligte wird mit einem Blick auf den aktuellen Stand gebracht.

Ein Screenshot eines Trello Boards
Update-Changelog eines Composer Updates

Entwickeln: Composer

Das Rad neu erfinden, das möchte keiner. Doch das Arbeiten mit fertigen Plugins und Paketen bringt immer Abhängigkeiten, Probleme beim Updaten und die (Sicherheits-)Updates selbst werden zum unnötigen Kostenfaktor.

Das Tool "Composer" organisiert die Abhängigkeiten der Packages automatisch und lädt anhand der gegebenen Systemkonfiguration automatisch die passenden Versionen herunter – Mit einem einzigen Konsolenbefehl.

So bleibt Ihr System immer auf dem aktuellen Stand und Updates können sogar automatisch über einen Cronjob installiert werden.

Entwickeln: Revisionssicherheit

Annähernd jeder kennt den Klischeespruch "In meiner lokalen Entwicklungsumgebung geht es ¯\_(ツ)_/¯", wenn über Programmierer gesprochen wird. Doch auch Programmierer sind nur Menschen und wenn Änderungen in 3 Systemen (lokal, Test, Live) vorgenommen werden müssen, kommt es Zwangsläufig zu Fehlern beim Kopieren.

Das Versionierungstool GIT erkennt automatisch Änderungen im Code. Sind alle Aufgaben einer Änderung durchgeführt, so lässt sich einfach eine neue Version des Projektes erstellen, die später identisch auf Test- und Livesystem ausgerollt werden kann. Die "Gefahrenquelle Mensch" entfällt somit.

Ältere Versionen sind zudem endlos verfügbar und so kann per Klick ein Feature, das früher von Ihrer Homepage entfernt werden sollte, wieder online gehen; Ohne dass es erneut programmiert werden muss.

Ein weiterer Vorteil: Es kann in verschiedenen "Branches" gearbeitet werden: Neue Features können so unabhängig voneinander entwickelt werden und in der Zwischenzeit angefallene allgemeine Änderungen müssen nicht doppelt programmiert und bezahlt werden. Ist ein Feature fertig für den Livebetrieb, so wird es in den Hauptbranch "gezogen" und geht mit 2 Minuten Aufwand online.

Alle in GIT durchgeführten Änderungen werden mit einem Kommentar versehen. So haben andere Entwickler, sowie Projektmanager Einblick in alle Veränderungen des Systems und im Notfall immer die Möglichkeit den aktuellen Code des Projektes herunterzuladen und daran zu arbeiten.

Änderungshistorie eines GIT Repository
Fehlerausgabe der PHPCS Prüfung

Entwickeln: Code-Quality

In der Entwicklung ist das Thema Wartbarkeit sehr wichtig. Quelltext sollte immer den Standards entsprechen und so den Einstieg möglichst einfach machen, sollte mal ein Kollege Hand anlegen müssen, oder wenn nach langer Pause Änderungen durchgeführt werden müssen. In wartbarem Code ist die Fehlersuche zudem weniger Zeitaufwändig und damit kostengünstiger.

Um dies zu erreichen, kann der Quelltext automatisch auf strukturelle (fehlende Kommentare, falsche Formatierung, unklare Variablen- und Dateibenennungen) als auch auf logische Regelverstöße (zu komplexe Klassen, unbenutzer Code, etc.) überprüft werden.

Dies kann übrigens mit dem zuvor erwähntem Versionierungstool GIT kombiniert werden: Wird ein sog. "Pre-Commit-Hook" hinterlegt, wird der Code automatisch geprüft, bevor eine neue Version erstellt wird. Sollten die Änderungen Fehler enthalten, werden sie niemals das Livesystem zu Gesicht bekommen, sofern sie nicht behoben werden.

Entwickeln: Gulp

Das Backend haben wir nun bereits optimiert – Zeit sich dem Frontend zu widmen: Jede Website besteht aus Javascript und CSS Dateien. Das Einbinden von 30 Asset-Dateien ist für SEO tödlich, werden alle Angaben in einer Datei zusammengefasst, herrscht Chaos.

Gulp verbindet beide Vorteile miteinander: Es erlaubt, CSS und JS komfortabel in mehreren Dateien zu verwalten und fasst alles in einer einzigen, komprimierten und optimierten Datei zusammen.

Außerdem können in Gulp (Less/Sass) Variablen und Funktionen definiert werden. Eine Änderung an Schriftgrößen oder Farben muss somit nur noch an einer zentralen Stelle vorgenommen werden, statt alle Angaben zu überarbeiten.

Ein Gulp Kompilierungsvorgang
Ein fehlgeschlagener PHPUnit Test

Testen: PHPUnit

Das Testen vor der Abnahme eines Projekts oder Features ist wichtig, aber zeitaufwändig.

PHPUnit ermöglicht es, Funktionen und Features eines Projektes automatisiert zu testen.

Einmal definiert, können die Tests beliebig oft ausgeführt werden und wie im Kapitel "Code-Quality" können die Tests automatisch vor Erstellung einer neuen Version ausgeführt werden und Fehler im Livebetrieb so von vornherein ausschließen.

Das Testen kann sich jetzt auf auf die Teile der Seite konzentrieren, die nicht automatisch geprüft werden können.

Deployen: Dev, Test, Live

Vertrauen ist gut, Kontrolle ist besser. Ob man Betriebsblindheit des Programmierers oder eventuelle Missverständnisse im Vorhinein verhindern möchte: Neue Features sollten immer getestet werden, bevor sie in den Livebetrieb gehen. Daher hat sich für mich ein dreistufiger Deploymentprozess bewährt:

Develop: Hier wird entwickelt. Es kann teilweise vorkommen, dass die Seite nicht erreichbar oder fehlerhaft ist, aber dies hat keine Auswirkungen auf andere Systeme.

Test/Stage: Ist eine neue Version aus Entwicklersicht fertig für den Livebetrieb, wird es ins Stagesystem gespielt. Hier herrscht die gleiche Konfiguration wie auf dem Liveserver und so kann unter Livebedingungen getestet werden und auch Fehler in der Kompatibilität werden rechtzeitig erkannt.

Live/Master: Waren alle Tests erfolgreich, wir die neue Verison ins Livesystem gespielt.

GIT unterstützt diesen Deploymentprozess, indem verschiedene Branches erstellt werden können. So können neue Features selektiv in die drei Systeme übernommen werden.

Screenshot vom Versionierungstool GIT
Screenshot vom Errormanagement Center Sentry

Wartung: Sentry

Herzlichen Glückwunsch! Die aktuelle Version ist nun online!

Ab jetzt funktioniert die Seite, wie in der Planung besprochen. Wenn dennoch Fehler auftreten sollten, weil Fehlerkombinationen nicht bedacht wurden, externe Services ausfallen oder Updates am Server Inkompatibilität erzeugen, dann kann das System Sentry helfen.

Sobald ein Fehler auf der Website auftritt, wird in Echtzeit eine Benachrichtigung an das Team erstellt und ein Eintrag im zentralen System erzeugt. Der Programmierer oder die Redakteure können sofort reagieren und den Fehler beheben.

Sentry ist für eine geringe Anzahl von Benachrichtigungen kostenlos und somit ausreichend für kleine und mittelgroße Websites.