DevOps-Beratung und Platform Engineering
DevOps ist eine Arbeitsweise, bei der Software mit Automatisierung und gemeinsamer Verantwortung entwickelt, getestet und in Produktion gebracht wird. Den Umfang legen wir nach Ihrem Bedarf fest: mal eine CI/CD-Pipeline (Continuous Integration und Continuous Delivery) für eine einzelne Anwendung, mal eine Kubernetes-Plattform, die mehrere Teams gemeinsam nutzen, dazu Infrastrukturautomatisierung und Monitoring. Wir arbeiten in der Cloud, in Ihrem eigenen Rechenzentrum und in hybriden Umgebungen.
- Umgebungen
- AWS, Azure, Google Cloud, lokale Cloud-Anbieter, Rechenzentrum, hybrid
- Plattformen
- Kubernetes (EKS, AKS, GKE), OpenShift, Rancher
- Zusammenarbeit
- Projekt · laufende Beratung · Managed Services
- Erster Schritt
- Kostenloses Erstgespräch oder kostenloses Assessment
Wann kommt DevOps-Unterstützung ins Spiel?
Wenn Ihr Softwareteam und die Zahl Ihrer Systeme wachsen, muss auch Ihr Delivery-Prozess mitreifen. Wo wir ansetzen, entscheiden wir gemeinsam anhand Ihrer aktuellen Situation.
- Releases hängen von manuellen Schritten ab. Werden diese Schritte automatisiert, können Sie häufiger releasen, und Rollbacks werden planbar.
- Die Umgebungen unterscheiden sich voneinander. Entstehen Test- und Produktivumgebung aus denselben Definitionen, gibt es weniger unerwartete Unterschiede.
- Sie betreiben Kubernetes, und der Betriebsaufwand wächst. Versions-Upgrades, Kapazitätsplanung und ein einheitliches Betriebsmodell werden notwendig.
- Infrastrukturänderungen sollen dokumentiert werden. Nachvollziehen zu können, wer wann was geändert hat, ist für Betrieb und Audits gleichermaßen wichtig.
- Monitoring und Alerting brauchen einen neuen Ansatz. Metriken, Logs und Alarme in einem Setup bündeln, damit Probleme sichtbar werden, bevor Nutzer sie bemerken.
- Teams erledigen ähnliche Infrastrukturaufgaben getrennt. Gemeinsame Vorlagen und Self-Service-Umgebungen verringern wiederkehrende Arbeit und Wartezeiten.
Was ändert sich durch die Zusammenarbeit?
Ziel ist nicht, Tools zu installieren, sondern die tägliche Arbeit Ihres Teams zu verbessern. Die Tabelle fasst typische Ausgangslagen und den angestrebten Zielzustand zusammen.
Unsere Arbeitsprinzipien
- Infrastruktur, Delivery-Pipelines und Richtlinien werden als Code definiert.
- Änderungen werden geprüft und dokumentiert.
- Auch die Plattform selbst wird getestet und versioniert.
- Erfolg messen wir an Delivery-Kennzahlen, nicht an der Zahl installierter Tools.
- Wo möglich, setzen wir auf portable und offene Tools.
| Ausgangslage | Zielbild |
|---|---|
| Manuelle Release-Schritte | Eine wiederholbare, automatisierte Pipeline, die bei jeder Änderung läuft |
| Infrastrukturänderungen über die Konsole | Versionierter und geprüfter Infrastrukturcode |
| Unterschiedliche Pipelines in jedem Team | Gemeinsame Vorlagen und ein empfohlener Weg |
| Umgebungen auf Anfrage | Self-Service-Umgebungen mit vorab festgelegten Regeln |
| Verstreute Logs und Alarme | Zentrales Monitoring und aussagekräftige Alarme |
| Betriebswissen bei einzelnen Personen | Runbooks (Betriebshandbücher) und dokumentierte Abläufe |
Was leisten wir in DevOps und Platform Engineering?
Je nach Bedarf in einem einzelnen Bereich oder durchgängig von Anfang bis Ende.
Kubernetes-Plattform
Installation, Versions-Upgrades, Multi-Cluster-Management und Kapazitätsplanung auf EKS, AKS, GKE, OpenShift, Rancher oder in Ihrem Rechenzentrum.
CI/CD-Pipelines
Pipelines, die Build, Test, Security-Scans und Deployment automatisieren, auf gemeinsamen Vorlagen beruhen und teamübergreifend wiederholbar sind.
Infrastructure as Code (IaC) und GitOps
Terraform/OpenTofu für Infrastruktur, Ansible für die Serverkonfiguration, Argo CD oder Flux für Deployments; jede Änderung in Git erfasst.
Observability
Dashboards, die Metriken, Logs und Traces an einem Ort bündeln; aussagekräftige Alarme und Service Level Objectives (SLOs).
Interne Entwicklerplattform
Ein Self-Service-Setup, in dem Teams Umgebungen, Services und Pipelines innerhalb festgelegter Regeln selbst anlegen.
Containerisierung
Anwendungen in Container überführen und nach Kubernetes migrieren, gemeinsam mit Infrastruktur und Code geplant.
Was ist Platform Engineering, und wann brauchen Sie es?
Platform Engineering bedeutet, eine interne Self-Service-Plattform aufzubauen, die alle Teams gemeinsam nutzen, damit DevOps-Praktiken auch bei wachsender Teamzahl tragfähig bleiben. Statt Infrastruktur immer wieder neu aufzubauen, nutzen die Teams die vorbereiteten, freigegebenen Wege der Plattform.
Golden Path
Ein vorbereiteter, freigegebener Weg für einen neuen Service: Vorlage, Pipeline, Monitoring und Sicherheitsprüfungen sind von Anfang an dabei.
Self-Service
Teams legen Umgebungen, Datenbanken oder Pipelines innerhalb festgelegter Grenzen selbst an, ohne ein Ticket zu eröffnen.
Regeln in der Plattform
Sicherheits-, Kosten- und Compliance-Regeln sind in die Plattform eingebaut, sodass nicht jedes Team sie einzeln umsetzen muss.
Wann ist sie nötig?
Erledigen mehrere Teams ähnliche Infrastrukturaufgaben getrennt, braucht es eine Plattform; für ein einzelnes Team reicht gutes CI/CD oft aus.
Erst der Pilot, dann die Ausweitung.
Wir führen Änderungen schrittweise ein. Ergebnis und Erfolgskriterien jeder Phase werden zu Beginn festgelegt, und Sie verfolgen den Fortschritt anhand derselben Kriterien.
Was messen wir?
Die fünf Kennzahlen, mit denen das DORA-Forschungsprogramm die Software-Delivery-Performance misst. Welche davon wir verfolgen, wählen wir gemeinsam anhand Ihrer vorhandenen Daten aus:
- Deployment-Häufigkeit
- Durchlaufzeit von Änderungen
- Änderungsfehlerrate
- Wiederherstellungszeit nach fehlgeschlagenem Deployment
- Nacharbeitsquote bei Deployments
Bestandsaufnahme und Analyse
Wir prüfen Ihre aktuelle Architektur, den Release-Prozess, die Teamstruktur und die Risiken.
Ergebnis: Erkenntnisse und ZieleZielarchitektur und Roadmap
Wir wählen Tools und Plattformen mit dokumentierter Begründung aus und priorisieren die Arbeit.
Ergebnis: Architekturdokument, StufenplanPilot
Wir bauen mit einer Anwendung und einem Team durchgängig auf, messen und verbessern.
Ergebnis: Funktionierender Pilot und erste MesswerteAusweitung
Wir übertragen das im Pilot bewährte Setup auf weitere Services und Teams.
Ergebnis: Pipelines und UmgebungenÜbergabe und Betrieb
Wir schulen Ihr Team und übergeben die Runbooks; auf Wunsch betreiben wir die Umgebung als Managed Service gemeinsam mit Ihnen weiter.
Ergebnis: Dokumentation, geschultes TeamWas Sie am Ende eines DevOps-Projekts in der Hand haben.
Die Ergebnisse richten sich nach dem Projektumfang; sie sind dokumentiert, für Ihr Team nutzbar und werden in Ihren eigenen Tools übergeben.
Architekturdokumentation
Zielarchitektur, Entscheidungsprotokolle und ihre Begründung.
Infrastrukturcode
Terraform- und Ansible-Code, Module und eine Nutzungsanleitung.
CI/CD-Definitionen
Pipelines, Vorlagen und Deployment-Strategien.
Monitoring-Dashboards und Alarme
Einsatzbereite Dashboards, Alarmregeln und SLO-Definitionen.
Runbooks
Abläufe für Incident Response, Backup, Rollback und Upgrades.
Schulung und Wissenstransfer
Praxisnahe Sessions für Ihr Team, mit Aufzeichnungen.
Wir arbeiten mit Ihren bestehenden Investitionen.
Wir prüfen zuerst die vorhandenen Tools und empfehlen einen Wechsel nur, wenn er einen klaren Nutzen bringt.
Container und Orchestrierung
- Kubernetes
- OpenShift
- Rancher
- Amazon EKS
- Azure AKS
- Google GKE
- Docker
- Helm
CI/CD und GitOps
- GitLab CI
- GitHub Actions
- Jenkins
- Azure DevOps
- Argo CD
- Flux
Infrastructure as Code (IaC)
- Terraform
- OpenTofu
- Ansible
- Packer
Platform Engineering
- Backstage
- Crossplane
- HashiCorp Vault
Observability
- Prometheus
- Grafana
- Loki
- OpenTelemetry
- Elastic / OpenSearch
Cloud und Virtualisierung
- AWS
- Microsoft Azure
- Google Cloud
- Lokale Cloud-Anbieter
- VMware
- Proxmox
Wo setzen wir an, je nach Größe Ihres Teams?
KMU und kleine Teams
Meist beginnt die Arbeit mit einer CI/CD-Pipeline für eine Anwendung, Basis-Monitoring und Backups; Ziel ist ein schlankes, leicht zu betreibendes Setup.
Wachsende Softwareteams
Mit wachsender Teamzahl den Release-Prozess durch gemeinsame Vorlagen, Kubernetes und Self-Service-Umgebungen skalierbar machen.
IT-Teams in Unternehmen
Spezialisierte Unterstützung in einem bestimmten Bereich neben Ihrem Team; Designs, die Modernisierung und regulatorische Anforderungen berücksichtigen.
Damit das erste Gespräch ergiebig wird.
Nichts davon ist Voraussetzung; alles, was Sie bereits haben, macht das erste Gespräch konkreter.
Was Sie vorbereiten können, falls vorhanden
- Vorhandene Architekturdiagramme und eine Liste der Umgebungen
- Eine kurze Beschreibung Ihres Release-Prozesses und Beispiele für jüngste Ausfälle
- Teamstruktur: wer wofür verantwortlich ist
- Regulatorische oder kundenseitige Anforderungen
Fragen zur DevOps-Beratung
Quellen und Standards
- Leitfaden zu den DORA-Metriken (öffnet in neuem Tab)Kennzahlen zur Software-Delivery-Performance
- Kubernetes-Dokumentation (öffnet in neuem Tab)Offizielle Projektdokumentation
- OpenTofu-Dokumentation (öffnet in neuem Tab)Open-Source-Tool für Infrastructure as Code
- Argo-CD-Dokumentation (öffnet in neuem Tab)Continuous Delivery mit GitOps
- Google SRE: Service Level Objectives (öffnet in neuem Tab)Das SLO-Konzept
Lassen Sie uns Ihren Bedarf gemeinsam klären.
Im kostenlosen Erstgespräch besprechen wir Ihre aktuelle Situation und Ihre Ziele und teilen unsere erste Einschätzung sowie mögliche nächste Schritte noch im selben Gespräch.
- Ein fachliches Gespräch mit Spezialisten für Ihr Thema
- Eine erste Einschätzung Ihrer Situation und mögliche Ansätze
- Wenn es passt, ein nächster Schritt: Assessment, Projektangebot oder Beratung
- Bei Bedarf eine Vertraulichkeitsvereinbarung vor dem Gespräch
- Rückmeldung innerhalb von 4 Geschäftsstunden
DevOps-Beispiele aus der Praxis
Anhand beispielhafter Szenarien zeigen wir Schritt für Schritt, wie Strukturen funktionieren, die wir häufig aufbauen.
CI/CD-Pipeline vom Code bis zur Produktion
Eine Änderung gelangt automatisiert und kontrolliert vom Merge Request bis in die Produktion. Für jeden Schritt gilt ein Prüfkriterium; ist es nicht erfüllt, stoppt die Pipeline.
Merge Request
Die Änderung kommt auf einem eigenen Branch; sobald ein Merge Request geöffnet wird, startet die Pipeline automatisch.
- $ git push origin feature/payment-limit
- Merge request !214 opened
- Pipeline #4821 started
Build und Test
Die Anwendung wird als Container-Image gebaut; Unit- und Integrationstests laufen.
- $ docker build -t registry.example.local/payments-api:1.9.0 .
- => naming to registry.example.local/payments-api:1.9.0
- $ pytest -q
- ✓ 214 passed in 38.2s
Sicherheitsscan
Das Image wird auf bekannte Schwachstellen geprüft; bei einem hohen oder kritischen Befund stoppt die Pipeline.
- $ trivy image --severity HIGH,CRITICAL --exit-code 1 payments-api:1.9.0
- Total: 0 (HIGH: 0, CRITICAL: 0)
- ✓ quality gate passed
Deployment in die Testumgebung
Das neue Versions-Tag wird in das Konfigurations-Repository geschrieben; Argo CD synchronisiert die Testumgebung mit dieser Definition.
- $ argocd app sync payments-api-staging
- Sync Status: Synced
- ✓ Health Status: Healthy
Schrittweiser Produktions-Rollout
Nach der Freigabe erhält die neue Version zunächst einen kleinen Teil des Traffics; bleiben die Metriken im Zielbereich, wird der Anteil erhöht.
- $ kubectl argo rollouts get rollout payments-api
- Step: 1/3 SetWeight: 10
- $ kubectl argo rollouts promote payments-api
- ✓ SetWeight: 100 Status: Healthy
Monitoring
Fehlerrate und Antwortzeit werden auf Dashboards verfolgt; bei Überschreiten eines Schwellenwerts wird ein Alarm ausgelöst, und die vorherige Version kann wiederhergestellt werden.
- PromQL: error rate (5 min)
- → 0.0021 (threshold 0.01)
- ✓ within service level objective
- GitLab CI
- Docker
- Trivy
- Argo CD
- Argo Rollouts
- Prometheus
Umgebungsaufbau mit Terraform und Ansible
Eine neue Umgebung wird im Code definiert, geprüft und anschließend aufgebaut. Terraform verwaltet die Infrastrukturressourcen, Ansible die Konfiguration innerhalb der Server.
Definition
Netzwerk, virtuelle Maschinen und Load Balancer werden mit Terraform-Modulen definiert; Unterschiede zwischen Umgebungen stehen in Variablendateien.
- $ terraform fmt -check && terraform validate
- ✓ Success! The configuration is valid.
Plan
Die Pipeline erstellt die geplante Änderung als Plan und hängt ihn an den Merge Request an.
- $ terraform plan -out=tfplan
- Plan: 12 to add, 0 to change, 0 to destroy.
Review
Ein Teammitglied prüft den Plan und gibt ihn frei; die Freigabe bleibt dokumentiert.
- Merge request !87 · 1 approval
- ✓ review completed
Ausführung
Der freigegebene Plan wird exakt so angewendet, wie er geprüft wurde; die State-Datei liegt gesperrt in einem Remote-Speicher.
- $ terraform apply tfplan
- ✓ Apply complete! Resources: 12 added, 0 changed, 0 destroyed.
Serverkonfiguration
Betriebssystemeinstellungen, Pakete und Dienste werden mit Ansible auf allen Servern einheitlich eingerichtet.
- $ ansible-playbook -i inventories/prod site.yml
- web-01 : ok=38 changed=6 unreachable=0 failed=0
- web-02 : ok=38 changed=6 unreachable=0 failed=0
Drift-Prüfung
Ein geplanter Job vergleicht die Umgebung regelmäßig mit dem Code, um manuelle Änderungen zu erkennen.
- $ terraform plan -detailed-exitcode
- ✓ No changes. Your infrastructure matches the configuration.
- Terraform / OpenTofu
- Ansible
- GitLab CI
Kubernetes-Deployment mit GitOps
Wie die Anwendung im Cluster läuft, ist in Git definiert; Argo CD synchronisiert den Cluster mit dieser Definition. Ein Rollback bedeutet, die Änderung in Git zurückzunehmen.
Soll-Zustand in Git
Version, Anzahl der Replikate und Einstellungen sind im Konfigurations-Repository definiert.
- # values-prod.yaml
- image.tag: 1.9.0
- replicaCount: 3
Abweichungen erkennen
Argo CD vergleicht den Zustand im Cluster laufend mit der Definition im Repository und zeigt die Abweichung an.
- $ argocd app get payments-api-prod
- ! Sync Status: OutOfSync from main (a41c9e2)
Synchronisierung
Die freigegebene Änderung wird auf den Cluster angewendet; Kubernetes ersetzt die alten Replikate nacheinander durch neue.
- $ argocd app sync payments-api-prod
- deployment.apps/payments-api configured
- ✓ Synced · Healthy
Rollback
Tritt ein Problem auf, wird die Änderung in Git zurückgenommen und die vorherige Definition erneut angewendet. Die Daten sind davon nicht betroffen; für sie gibt es einen eigenen Backup-Plan.
- $ git revert a41c9e2 && git push
- ✓ Synced to main (7be2d10)
Nachvollziehbarkeit
Jede Änderung bleibt mit Urheber, Zeitpunkt und Grund in der Git-Historie erhalten.
- $ git log --oneline -2
- 7be2d10 Revert "payments-api 1.9.0"
- a41c9e2 payments-api 1.9.0
- Argo CD
- Helm
- Kubernetes
- Git
Monitoring, Service-Level-Ziele und Alarmierung
Alarme beruhen auf der Servicequalität, die Nutzer erleben, nicht auf Servermetriken. Die Rufbereitschaft wird nur benachrichtigt, wenn tatsächlich ein Eingreifen nötig ist.
Datenerfassung
Metriken, Logs und Request-Traces der Anwendung werden mit OpenTelemetry in einem einheitlichen Format erfasst.
- $ kubectl get pods -n observability
- otel-collector-6d9f 1/1 Running
- prometheus-0 2/2 Running
Service-Level-Ziel
Für die Erfolgsquote aus Nutzersicht wird ein Ziel festgelegt, z. B. 99,9 % erfolgreiche Anfragen in 30 Tagen.
- SLO: successful requests ≥ 99.9% / 30 days
- error budget: 43 min 12 s
Alarm
Wird das Fehlerbudget schnell aufgebraucht, wird die Rufbereitschaft benachrichtigt; kurze Schwankungen lösen keinen Alarm aus.
- ! ALERT ErrorBudgetBurn severity=page
- burn rate 14.4x (1 h) · 14.4x (5 min)
- → on-call engineer notified
Diagnose
Dashboards, Logs und Request-Traces werden für dasselbe Zeitfenster geöffnet; die Schritte im Runbook (Betriebshandbuch) werden befolgt.
- {app="payments-api"} |= "timeout"
- 12:04:31 upstream timeout: bank-service 3000ms
Post-Incident-Review
Ursache und dauerhafte Verbesserungen werden schriftlich festgehalten und geteilt; Alarme und Dashboards werden bei Bedarf angepasst.
- Incident #23 · duration 18 min
- ✓ action: timeout and retry settings updated
- OpenTelemetry
- Prometheus
- Alertmanager
- Grafana
- Loki