Effiziente Software-Bereitstellung

Software in weniger als fünf Minuten bereitstellen

Stell dir vor, Software-Updates könnten in weniger als fünf Minuten bereitgestellt werden – mit minimalem Aufwand und maximaler Zuverlässigkeit. Genau das haben wir erreicht, und wir möchten unsere Reise zu einer effizienteren Software-Bereitstellung mit dir teilen.

Durch ein manuelles Deployment geht viel Zeit verloren

Unsere Firmenwebsite faktly.ch ist ein zentraler Bestandteil unseres Unternehmensauftritts. Doch jedes Mal, wenn wir Änderungen vornehmen oder neue Funktionen hinzufügen wollen, stehen wir vor demselben Problem. Ein manuelles Deployment auf einem eigens dafür eingerichteten Server. Dieser Prozess war zeitaufwändig und fehleranfällig, dauerte zwischen 10 und 30 Minuten und band wertvolle Ressourcen, die wir besser hätten nutzen können.

Ein neuer Weg muss her

Wir erkannten, dass dieser Ansatz nicht nachhaltig war. In einer Zeit, in der Geschwindigkeit und Effizienz entscheidend sind, konnten wir es uns nicht leisten, so viel Zeit mit repetitiven Aufgaben zu verbringen. Also beschlossen wir, unseren Deployment-Prozess grundlegend zu überdenken.

Die Suche nach einer Lösung

Unser Ziel war klar. Wir wollten einen automatisierten, zuverlässigen und skalierbaren Deployment-Prozess etablieren. Dazu begannen wir, uns mit modernen Technologien und Methoden zu beschäftigen, die in der Softwareentwicklung und -bereitstellung als Best Practices gelten.

Unsere Reise zur effizienten Bereitstellung umfasste mehrere Schritte

1. Aufbau eines Kubernetes-Clusters mit Terraform (Infrastructure as Code)

  • Mit Terraform konnten wir unsere Infrastruktur als Code definieren und somit konsistent und reproduzierbar aufbauen.
  • Dadurch waren wir in der Lage, unsere Umgebung schnell zu skalieren und Änderungen einfach zu verwalten.

2. Konfigurationsmanagement mit Ansible und Installation von Helm Charts

  • Ansible ermöglichte es uns, die Konfiguration unserer Server zu automatisieren.
  • Wir installierten essenzielle Komponenten wie Cert-Manager, NGINX Ingress und ArgoCD mithilfe von Helm Charts.
  • Letsencrypt SSL-Zertifikate werden dank Cert-Manager zum Kinderspiel

3. Einrichtung eines Deployment-Repositories mit Helm Charts

  • Wir erstellten ein separates Repository, das unsere Kubernetes-Manifestdateien in Form eines Helm Charts enthält.
  • Dieses Repository dient als Single Source of Truth für unsere Deployments.

4. Automatisiertes Deployment mit ArgoCD

  • ArgoCD überwacht unser Manifest-Repository und aktualisiert automatisch unseren Kubernetes-Cluster, sobald Änderungen festgestellt werden.
  • Dies implementiert das GitOps-Prinzip, bei dem Git als einzige Quelle für den aktuellen Systemzustand dient.

5. Integration von GitLab CI/CD

  • Mit wenigen Git-Befehlen können wir nun ein Deployment auslösen.
  • Unsere GitLab CI/CD-Pipeline baut das Docker-Image und aktualisiert die Version im Manifest-Repository.
  • ArgoCD erkennt die Änderung und führt das Deployment automatisch durch.

Das Ergebnis

Durch diese Automatisierung haben wir unseren Deployment-Aufwand von 10 bis 30 Minuten auf weniger als 5 Minute reduziert.

Dazu führen wir lediglich folgende Befehle aus:

git last-tag
NEW_VERSION=1.1.1
git switch develop
git flow release start $NEW_VERSION
git push
git flow release finish $NEW_VERSION
git switch develop
git push --tags

Selbstverständlich findet zwischen Release start und finish die Entwicklung statt

Unsere Erfahrung zeigt, wie entscheidend Automatisierung und die richtigen Tools für die moderne Softwareentwicklung sind. Durch die Optimierung unseres Deployment-Prozesses können wir schneller auf Marktanforderungen reagieren, die Qualität unserer Software erhöhen und unsere Ressourcen effizienter nutzen.

Handlungsempfehlung

Wenn du ähnliche Herausforderungen hast, könnten diese Schritte auch für dich hilfreich sein:

  • Identifiziere manuelle und zeitaufwändige Aufgaben in deinem Deployment-Prozess
  • Tools wie Terraform ermöglichen eine konsistente und reproduzierbare Infrastruktur-Verwaltung
  • Mit Ansible oder ähnlichen Tools (Salt, Chef, Puppet) kannst du die Einrichtung von Servern und Diensten automatisieren
  • ArgoCD und GitOps-Prinzipien erleichtern das automatische Deployment von Änderungen
  • Automatisiere den Build- und Testprozess mit Tools wie GitLab CI/CD, um schnelle und zuverlässige Releases zu gewährleisten

Hol dir Unterstützung

Möchtest du deine Software-Bereitstellung ebenfalls optimieren und von unseren Erfahrungen profitieren? Kontaktiere uns für eine unverbindliche Beratung. Gemeinsam können wir maßgeschneiderte Lösungen entwickeln, die deinen spezifischen Anforderungen entsprechen.

Die Reise zur effizienten Software-Bereitstellung hat uns gezeigt, wie viel Potenzial in der Automatisierung steckt. Indem wir unseren Prozess revolutioniert haben, können wir uns jetzt auf das konzentrieren, was wirklich zählt:

Innovative Lösungen für unsere Kunden zu entwickeln

Weitere Beiträge

image
25 Oct 2024

Befreie dein Team aus dem Deployment-Dilemma und schaffe Luft für Innovation

Mit gezielter Unterstützung löst du das Deployment-Problem und gibst deinem Team den Fokus zurück, um wirklich voranzukommen

image
03 Oct 2024

Effizienz im Fokus

Werkzeuge und Methoden für maximale Produktivität

image
14 Sep 2024

Effiziente Software-Bereitstellung

Wie wir unseren Deployment-Prozess automatisiert und somit revolutioniert haben