cicd_1

Continuous Integration & Delivery

Die Automatisierung von Builds, Tests, Reports und Deployments sorgt für stabile Updates, gibt bessere Einsicht in den Code bzw. seine Abhängigkeiten und sorgt auch für mehr Schutz des Quellcodes und kompilierter Assets. Geeignete Systeme und Tool(chain)s schaffen hier Abhilfe.

Stabile Builds

Steigt die Anzahl an entwickelten Komponenten, wird ein konsistenter Buildprozess immer wichtiger. Versionsunterschiede der genutzten Sprache bzw. unterschiedliches Setups auf den Entwicklermaschinen führen unter Umständen zu fehlerhaften Ergebnissen und Build Artefakten.

Die Integration externer Libraries in den eigenen Code ist absolut üblich. Nur sollten diese Libraries ebefalls näher untersucht werden. Schliesslich werden deren Funktionalitäten in die eigene Anwendung integriert. Ein Entwickler kann zwar seinen eigenen Code absichern, kann aber nichts an Lücken ändern, die sich mit Fremdbibliotheken in den Code eingeschlichen haben. Die Kontrolle von Build-Manifests der jeweiligen genutzen Sprache und sprachspezifischen Lintern senken die Wahrscheinlichkeit von importierten Sicherheitslücken und zeigen entsprechende Probleme früh auf.

Der Code selbst sollte nach gewissen Konventionen geschrieben sein, die alle Programmiersprachen mit sich bringen. Die Einhaltung dieser Coding-Guidelines sorgt nicht nur für generell einheitlichen Code, sondern ermöglicht auch einen schnellen Einstieg neuer Entwickler in bestehende Software. Mit zusätzlichen Codeanalysen, z.B. zyklomatischen Komplexität, verhindern Sie frühzeitig unnötig komplexen Code, welcher nur schwer zu warten ist. Automatisch ausgeführte Unittests sollten, wenn verfügbar, immer ausgeführt und überprüft werden.

Die Liste an Möglichkeiten den eigenen Code zu pflegen und zu analysieren ist lang und geht meist mit einer ganzen Toolchain an Helfern einher. Ich unterstütze Sie beim Setup geeigneter CI/CD Systeme und deren Konfiguration, dem Aufbau von Build-Pipelines und Workflows bis hin zum Artefakt Management und Deployment.

Deployments

Der Code ist geschrieben und kompilliert, auf Integrationsumgebungen geprüft und die entsprechenden Artefakte liegen auf einem Server bereit. Aber wie genau kommt die neue Software nun am verlässlichsten und auf dem sichersten Wege auf die Produktionsumgebung? Wer hat den vollen Zugriff auf die Produktionsserver und auf die entsprechend notwendigen Credentials, welche zum Setup notwendig sind?

Die gängiste Art und Weise (in den meisten KMUs) ist ein Entwickler, dem entsprechendes Vertrauen entgegengebracht wird. Von Hand auf der Kommandzeile werden die neuen Komponenten auf den Server gepusht und entsprechende Konfigurationsdateien manuell gepflegt. Das mag eine Weile gut gehen, wird sich aber früher oder später zum Problem entwickeln. CI/CD Systeme bieten auch hierfür diverse Tools und Möglichkeiten an um exakt diese Schritte zu automatisieren.

Ich unterstütze Sie bei der Planung und Umsetzung eines automatisierten Deployments. Das Aufspielen eines neuen Release bzw. aktualisierter Software kann somit auch von Nicht-Entwicklern per Knopfdruck erledigt werden.