So entwickeln wir hochwertige und langlebige digitale Produkte

Enzo Volkmann

von Enzo Volkmann am 01.05.2020

5 Minuten Lesezeit

Es gibt einige Merkmale, die uns als Agentur von Anfang an besonders auszeichnen. Neben unseren ausgefallenen und handgemachten Designs und einer hochwertigen technischen Umsetzung gehört dazu vor allem unser Arbeitsprozess und wie wir mit den Projekten umgehen.

In diesem Artikel möchte ich die wesentlichen Bestandteile unseres Arbeitsprozesses darstellen, die für eine dauerhaft hohe Qualität der Projekte und für die Erstellung von langlebigen digitalen Produkten verantwortlich sind. Dabei spielt es keine Rolle, ob es sich um eine kleine Webseite oder ausgereifte Webanwendung mit vielen Komponenten und angeschlossenen Systemen handelt: Alle Projekte und Kunden bekommen die gleiche Aufmerksamkeit und unterliegen im Kern den selben Prozessen.

Für die Auswahl eines geeigneten Dienstleisters und eine produktive Zusammenarbeit spielen in erster Linie Vertrauen und Transparenz eine Rolle. Mit diesem Artikel möchte ich dazu etwas beitragen und freue mich auf jegliche Form der Rückmeldung.

Hintergrund: Webseite ist nicht gleich Webseite

Als Nutzer sieht man meistens nur das Ergebnis eines Software-Projektes: die fertige Webseite oder Anwendung. Wie es in den Prozessen dahinter aussieht und welche Werkzeuge bei der Erstellung und Pflege zum Einsatz kommen, kann sich gravierend unterscheiden.

Im ersten Moment mag das keine allzu große Rolle spielen, schließlich kommt es auf Optik, die Features und die Akzeptanz beim Endnutzer an. Ebenso könnte man argumentieren, dass kleine Projekte durch einen ausgereiften Prozess zu viel Overhead, also eine vermeintlich unnötige Verwaltungsebene bekommen.

Bei genauerem Hinsehen und vor allem auf lange Sicht lohnt es sich aber durchaus, einen hohen Standard anzusetzen. Im Endeffekt profitieren davon sowohl die Entwickler, die einen entspannteren Arbeitsablauf haben, als auch die Nutzer und Kunden, da das Produkt immer dem neuesten Stand entspricht und auf einer sicheren und soliden Basis aufgebaut wurde.

Teil 1: Versionskontrolle

Jedes Projekt unterliegt einem Versionskontrollsystem (wir nutzen Git), das dafür sorgt, dass wir historische Zustände des Projektes nicht verlieren und genau wissen, welcher Stand gerade online ist. Zudem bietet es die Möglichkeit, dass mehrere Entwickler komfortabel zusammen an einem Projekt arbeiten können, ohne Konflikte hervorzurufen.

Sämtlicher Quellcode unserer Projekte ist so aufgebaut, dass wir die fertige Webseite (oder Webanwendung) zu jedem Zeitpunkt daraus generieren können. Das macht uns unabhängig von einzelnen Hostinganbietern (z.B. für Webseiten) und bringt zudem die Sicherheit, dass Projekte nicht „verloren gehen“ können, wenn es zu einem Serverausfall oder sonstigen Ereignissen kommt, die das veröffentlichte Projekt gefährden könnten.

Teil 2: Automatisierte Tests und Veröffentlichungen

Bei uns erfolgt die Veröffentlichung von Projekten (z.B. das Hochladen einer Webseite auf den Webserver) nicht manuell, sondern wird von einem sogenannten Continuous Delivery System übernommen. Die genaue Vorgehensweise, wie ein Projekt für die Veröffentlichung vorbereitet werden muss, auf welche Server die Dateien hochgeladen werden müssen und ob gegebenenfalls je nach Projekt noch weitere Schritte notwendig sind, ist im Projekt selbst festgehalten und versioniert (siehe Teil 1).

Das ermöglicht es uns, jederzeit ohne großen Aufwand und ohne das Spezialwissen einzelner Personen, einen gewissen Stand eines Projektes zu veröffentlichen. Zudem eliminiert es viele potenzielle Fehlerquellen, wie etwa das Vorhandensein von Hosting-Zugangsdaten oder das Wissen darüber, wie ein Projekt im Einzelfall vorzubereiten ist.

Ein weiterer Vorteil dieser Vorgehensweise ist, dass wir bereits vor der Veröffentlichung eines Projektes im Internet sicherstellen können, dass alles funktioniert und dass es keine Fehler gibt. Denn die Veröffentlichung findet erst statt, wenn das Projekt erfolgreich gebaut und getestet werden konnte.

Der Start eines Prozesses im CD-System kann von diversen Ereignissen gesteuert werden. In erster Linie sind das Änderungen am Quellcode, die wir als Entwickler erstellen, es können aber auch beliebige Drittsysteme integriert werden wie zum Beispiel Content-Management- oder Shop-Systeme. Je nach Projekt und Anforderungen sind uns hier so gut wie keine Grenzen gesetzt.

Teil 3: Getrennte Test- und Produktivumgebungen

Es ist gängige Praxis, dass man für die Entwicklung von Software- und Webprojekten getrennte Test- und Produktivumgebungen hat. Das heißt beispielsweise, dass die öffentliche Webseite (die von Besuchern gefunden werden kann) unabhängig ist von einer zweiten Test- oder Entwicklungsvariante der Webseite, die nur für uns als Entwickler und den Kunden selbst sichtbar ist.

So können neue Funktionalitäten erstellt und getestet werden, ohne Auswirkungen auf die produktive Variante des Projektes.

In der Regel reicht es aus, neben der Produktivumgebung noch eine weitere Test-Variante zu betreiben und dies ist auch der Standard für die meisten unserer Projekte. Sollte es erforderlich sein, sind weitere Instanzen (zum Beispiel für durch eine Qualitätsprüfung) kein Problem.

Die Steuerung, welcher Stand des Quellcodes auf welche Umgebung veröffentlicht wird, ist eng verzahnt mit den in den Teilen 1 und 2 beschriebenen Mechanismen. Im Versionskontrollsystem arbeitet man in der Regel auf mehreren parallelen Zuständen des Projektes (sogenannte Branches) und kann zusätzlich ausgewählte Zustände eindeutig markieren (mit einem sogenannten Tag).

In der Konfiguration des CD-Systems ist dann wiederum festgelegt, wie auf die verschiedenen Szenarien reagiert werden soll und es wird beispielsweise über das Vorhandensein eines Tags gesteuert, dass der entsprechende Code für die Produktivumgebung bestimmt ist.

Teil 4: Automatisierte Updates

Wir erfinden bei unseren Projekten das Rad nicht neu, sondern nutzen entsprechende Frameworks, die für die Webseiten und Anwendungen die Grundlage bilden (z.B. Angular und Nest). Über diese Basis-Frameworks hinaus hat jedes Projekt mehr oder weniger weitere Abhängigkeiten zu anderen Software-Bestandteilen. 

Da sich diese Open-Source-Projekte ebenfalls weiterentwickeln, ist es wichtig, diese Neuerungen mitzunehmen und möglichst immer die aktuellsten Versionen zu nutzen. Bei der Vielzahl unserer Projekte und der Anzahl der Abhängigkeiten in jedem davon (ungefähr 20 bis 50) ist es manuell schwer möglich und extrem zeitaufwendig, regelmäßig auf die neuen Versionen zu aktualisieren.

Aus diesem Grund nutzen wir hier ebenfalls eine Automatisierung (Renovate), die für jedes Projekt regelmäßig prüft, ob Aktualisierungen vorliegen. Falls ja, kommen wieder Teil 1 und Teil 2 zum Tragen. Es wird automatisch geprüft, ob die Neuerung ohne manuellen Eingriff kompatibel ist (das ist meistens der Fall) und wenn ja, wird die Neuerung eingebaut.

Fazit

Für eine produktive und langfristige Zusammenarbeit tragen wir als Agentur Sorge dafür, dass die Projekte unserer Kunden nach bestmöglichen Standards verwaltet, entwickelt und betrieben werden. Schlussendlich vertrauen unsere Kunden uns mit Ihrer Webseite, Ihrem Onlineshop oder einer Spezial-Anwendung einen Teil Ihres Geschäfts an und wir müssen diese mit Sorgfalt und vorausschauend behandeln.

Daher haben wir in verschiedenen Bereichen unseres Entwicklungsprozesses Maßnahmen ergriffen, um eine gleichbleibend hohe Qualität und Aktualität der Projekte zu gewährleisten und die Arbeit aus Entwickler-Perspektive möglichst angenehm und automatisiert zu gestalten. Letztendlich profitieren davon alle Beteiligten eines Projektes.

Natürlich sind die vier Teilbereiche in diesem Artikel recht oberflächlich dargestellt und es gibt in jedem davon eine Menge Details, über die man sprechen kann. Ich freue mich daher über Nachfragen, Vorschläge und Kommentare, gerne auch im persönlichen Gespräch.


Enzo Volkmann
Enzo Volkmann

Backend Hacker

Veröffentlicht am 01.05.2020 um 19:40 Uhr