Während Entwickler - viele schon agil unterwegs - die aktuellsten Features ihrer Software möglichst schnell in Produktion bringen wollen, bremsen verantwortungsvolle IT-Operatoren diesen Elan häufig durch Anforderungen nach Stabilität, Sicherheit und damit Verfügbarkeit aus. Die unterschiedlichen Sichtweisen führen - insbesondere bei organisatorischer Trennung von Entwicklung und Betrieb - zu Missverständnissen, langen Release-Zyklen und damit unzufriedenen Kunden/Nutzern. Spät erkannte Fehler durch unterschiedliche Laufzeitumgebungen (Test, Staging, Produktion) und Verfügbarkeitsengpässe von "Kopfmonopol-Trägern" (z.B. durch Überlastung oder Krankheit) tun ihr Übriges.

Wie kann DevOps helfen?

Das Kofferwort DevOps signalisiert die Verbindung der beiden Bereiche/Tätigkeitsfelder Development (Entwicklung) und Operations (IT-Betrieb). Sehr stark vereinfacht könnte man sagen, es geht um die intensive Abstimmung zwischen denen, die Software erstellen und denen, die diese Software auf einer geeigneten Plattform betreiben. Eine Selbstverständlichkeit, werden Sie korrekterweise anmerken. Das allein wäre aus unserer Sicht aber zu kurz gesprungen.

 

PLAN & CODE
  • Entwicklung der Software/des Services
  • Erstellung automatisierbarer Tests, die geschäftskritische Funktionalitäten auf Korrektheit prüfen
  • Containerisierung und Orchestrierung: Der Einsatz der Containertechnologie (z.B. Docker, CRI-O, rkt) ist mittlerweile in vielen Bereichen Standard. Anwendungssoftware wird immer häufiger in Form von mehreren unabhängigen Microservices realisiert. Dem damit einhergehenden, deutlich höheren Orchestrierungsaufwand (Interaktion, Sicherheit, Verfügbarkeit) begegnet man mit Tools wie z.B. Kubernetes/Open Shift. Features wie Automatic Failover, Load-Balancing, A/B-Testing und Canary-Deployments - um nur einige zu nennen - werden damit zur Selbstverständlichkeit.
  • Infrastructure-As-Code: Nicht nur die Anwendungs-Software, sondern die gesamte für den Test, das Staging und den Produktionsbetrieb notwendige Infrastruktur (VMs, Netzwerke, Kubernetes/Openshift, etc.) inklusive ihrer Konfiguration wird automatisiert bereitgestellt und gewartet. Egal ob in der Cloud (AWS, Azure, GCE) oder OnPremise im eigenen Rechenzentrum. Der entstehende Code (z.B. Terraform, Ansible) wird zusammen mit dem Anwendungs-Code im gleichen Repository versioniert und somit die exakte Nachvollziehbarkeit des kompletten Systems sichergestellt.
  • Automate everything: Jeder manuelle Schritt und sei es nur ein einfacher Mausklick, verzögert den Prozess der Softwarentwicklung und ist fehleranfällig. Dies gilt insbesondere auch für die manuelle Bereitstellung notwendiger Infrastruktur und deren Konfiguration. Automatisierung macht Änderungen nachvollziehbar, schnell und testbar.
BUILD & TEST

Build Pipeline:

  • Continuous Integration (CI): Build, statische Code-Analyse, Security-Check, Test und Erstellung der nächsten, auslieferbaren Software-Version inkl. aller umgesetzten Code-Änderungen
RELEASE & DEPLOY

Deployment Pipeline:

  • Continuous Delivery: Continuous Integration + Deployment in Produktion durch manuelle Freigabe
  • Continuous Deployment: Continuous Integration + Deployment in Produktion voll automatisch
OPERATE & MONITOR
  • Betrieb/Überwachung der eingesetzten Laufzeitumgebungen und der entwickelten Software/Services
  • Frühzeitig Engpässe und/oder Ausfälle erkennen (z.B. mit Prometheus/Grafana) und rechtzeitig entsprechende Massnahmen ergreifen (z.B. bedarfsgerechte horizontale Skalierung)
  • Konfiguration entsprechender Alert-Manager ermöglicht die verzugsfreie Information der Verantwortlichen via Slack, Mail, SMS etc.

SIE MÖCHTEN IHRE PROJEKTE WEITERENTWICKELN?

Gerne stehe ich Ihnen für eine persönliche Beratung zur Verfügung.

Holger Endres
Senior DevOps Engineer
+49 40 88173-2614
 

GEMEINSAM. INNOVATIONEN. ENTWICKELN.

Wir begleiten Sie! Vom ersten Schritt bis zur ganzheitlichen Lösung.