Bei Syntro setzen wir stark auf Continuous Integration (kontinuierliche Integration, CI) und Continuous Delivery (kontinuierliche Auslieferung, CD). Dabei verwenden wir Werkzeuge wie Ansible (für das wir eine spezifische Rolle zum Deployment von Silverstripe bereitstellen) und Docker, sowie verschiedene Paket-Manager, welche uns das Erstellen, Weiterentwickeln, Updaten und schlussendlich das Bereitstellen von Projekten ungemein erleichtern.
Wie in der Einleitung erwähnt, stehen CI für Continuous Integration und CD für Continuous Deployment oder Continuous Delivery. Häufig trifft man auch den Begriff Pipeline in diesem Zusammenhang an.
CI beschreibt dabei die kontinuierliche Arbeit an einem Projekt. Dabei arbeiten mehrere Personen gleichzeitig an verschiedenen Features, welche nach Abschluss getestet und zum existierenden Status einer Applikation hinzugefügt werden. Dadurch kann eine Applikation stetig wachsen, ohne dabei die Nutzer zu beeinträchtigen.
CD kann zwei Bedeutungen haben. Steht das D für Deployment, so wird der aktuelle Zustand kontinuierlich auf ein produktives System übertragen, wo er den Endnutzern zur Verfügung steht. Das bedeutet im Klartext, dass alle Anpassungen, neuen Funktionen und Fehlerbehebungen sofort, nachdem sie getestet wurden an den Nutzer ausgeliefert werden. Steht das D für Delivery, so wird damit ein zusätzlicher Schritt eingeführt, um den neuesten Stand nur bei manuellem Input auf ein produktives System zu übertragen. Dies ist z.B. bei versionierter Software der Fall, wobei regelmässig eine neue Version mit allen neuen Features zusammengefasst wird (sprich "Version 2 kann neu X und Y"), welche dann zum Beispiel auf ein Live-System übertragen oder als Patch an den Kunden ausgeliefert wird.
Für Software aller Art bieten sich solche automatisierten Abläufe (Pipelines) an, um effizient neue Funktionen zu entwickeln und somit das Produkt ständig zu verbessern.
Auch wenn kleine Projekte (in unserem Fall meist Webseiten) häufig als statisch erscheinen, sind sie es meist nicht. Das Anwenden einer gut abgestimmten CI/CD Pipeline kann helfen, folgende Punkte einfacher und effizienter zu handhaben:
In den meisten Fällen lässt sich eine CI/CD Pipeline einfach umsetzen. Die Basis bildet ein sogenanntes Version-Control-System (VCS), welches die Arbeit von mehreren Entwicklern am gleichen Projekt ermöglicht. Meistens wird in Softwareprojekten bereits ein VCS (meist Git) verwendet. Mittels Repositories lässt sich Code einfach remote abspeichern. Bekannte Lösungen sind zum Beispiel Github oder die quelloffene Alternative Gitlab.
Basierend auf diesen Lösungen lässt sich mit wenig Aufwand eine einfache CI/CD Pipeline aufbauen. Github bietet dazu z.B. sogenannte «Actions» an, welche es erlauben, bei verschiedenen Ereignissen (z.B. beim Hinzufügen einer neuen Funktion) Aktionen auszuführen. Das können einfache Tests bis hin zu komplexen Deployment-Prozessen sein. Eine einfache Pipeline sollte nach unserer Erfahrung mindestens folgende Aktionen beinhalten:
Desweiteren sollte ein Regelset eingeführt werden, welches die einfache Zusammenarbeit aber auch die Kontrolle des erstellten Codes ermöglicht. Dazu eignet sich zum Beispiel der «Git-flow-Workflow» besonders gut.
Wir beraten dich gerne zu allen möglichen Aspekten der Bereitstellung, Wartung und Weiterentwicklung von Web-basierten Projekten.
Nimm dazu einfach Kontakt mit uns auf!