Cloud Computing, Containerisierung und DevOps greifen ineinander bzw. sind alle Teil einer modernen, agilen und serviceorientierten IT-Infrastruktur. Der neueste IaaS-Trend ist derzeit Infrastructure as Code (IaC). Durch IaC wird die Konsumierbarkeit von Cloud-Ressourcen für Nutzer nochmals deutlich vereinfacht. Zudem werden kontinuierliche Integrations- und Auslieferungspipelines in der Softwareentwicklung (CI/CD) optimal unterstützt, sodass mehrere Code Integrations am Tag möglich werden. Dieser Artikel soll Grundlagen zu DevOps und IaC sowie Zusammenhänge zwischen diesen neuen IaaS-Trends näher beleuchten:
Definitionen
DevOps ist ein Ansatz der agilen Softwareentwicklung und bedeutet kontinuierliche Entwicklung nach dem Prinzip “End-to-end Lifecycle Management” von der Planung bis zum Produktionsbetrieb.
DevOps Engineering erweitert die Aufgaben eines System-Administrators durch Fähigkeiten aus der Softwareentwicklung und dem Operations Engineering, um Anwendungen schneller, effektiver und somit kostengünstiger erstellen und ausführen zu können.
Typische Aufgaben eines DevOps-Engineers sind:
- IaaS-Management
- Multi-Cloud Management / Automation
- Continuous Integration/ Testing
- Entwicklungsumgebungen / Workflow-Definitionen
- Logging
Ein wichtiger Aspekt von DevOps ist Continous Delivery (CD): Continuous Delivery ermöglicht es, Release-Prozesse zu automatisieren und so die Release-Frequenz konstant zu halten. CD-Tools gibt es mittlerweile wie Sand am Meer, der Aufbau von Pipelines kostet jedoch Zeit und der Aufwand für Wartung und den Betrieb von dezentralen, verteilten CD-Tools kommt auch noch hinzu. Mit einer zunehmenden Teamgröße wächst für DevOps-Teams der Bedarf an standardisierten Lösungen, die einfach zugänglich und einfach zu nutzen sind, die Teams dabei aber nicht in ihren spezifischen Anforderungen einschränken.
Infrastructure as Code (IaC) ist ein Ansatz zur Verwaltung der Server-, Speicher- und Netzwerkinfrastruktur von Rechenzentren. Die Infrastruktur einer Entwicklungsumgebung wird in einem beschreibenden Modell (Netzwerke, virtuelle Maschinen und Dienste, Updates, Patches und Konfigurationen wie Load Balancer und Verbindungstopologien) als Code festgeschrieben, der über eine Infrastructure Provisioning Engine (z.B. GitLab) konfiguriert und bereitgestellt wird.
IaC und DevOps
IaC ist ein wichtiger Baustein für DevOps. Der Code, der die Infrastruktur steuert, ist dabei Teil eines Projekts und wird genauso behandelt wie jeder andere Code, einschließlich Versionskontrolle, virtualisierter Tests und kontinuierlicher Überwachung. Mit IaC werden Informationen zur Infrastrukturkonfiguration in standardisierten Dateien gespeichert, die von einer Software gelesen werden können und die den Zustand der Infrastruktur aufrechterhält. Betrieben in einer Kubernetes Container-Umgebung ermöglicht IaC zudem isolierte Testumgebungen für Continuous Integration (CI). Die Konfiguration und Verwaltung, die mit dem Deployment der Infrastruktur einhergeht, wird durch IaC erheblich vereinfacht. Als “reusable code” kann IaC zudem die Produktivität und Zuverlässigkeit verbessern, da manuelle Konfigurationsschritte entfallen. Denn bei der herkömmlichen Verwaltung der Rechenzentrumsinfrastruktur war für jede Konfigurationsänderung ein manuelles Eingreifen von Systemadministratoren erforderlich. Ohne großen Mehraufwand lassen sich somit mehrere hundert Maschinen in wenigen Minuten hochfahren, konfigurieren oder herunterfahren. IaC-Tools werden von Dienstleistern oder Cloud-Betreibern angeboten. Beliebte IaC-Tools sind beispielsweise Chef, Puppet, Ansible und Terraform.
Managed Infrastructure as Code liefert skalierbare, eigenständige Implementierungen, die Automatisierung, Überwachung und standardisierte Prozesse für eine kontinuierliche Integrations- und Auslieferungspipeline (CI/CD-Pipeline) enthalten. Cloud Ressourcen werden so für agile Entwicklungsteams bestmöglich konsumierbar bereitgestellt.
Vorteile von IaC und Managed IaC
Die Verwendung von IaC / Managed IaC bietet eine Vielzahl von Vorteilen für die DevOps basierte Softwareentwicklung:
- Geschwindigkeit
- Automatisierung
- Versionskontrolle
- effizientes Infrastruktur- und Konfigurationsmanagement
- Templates / Wiederverwendbarer Code
Die Verwendung vorhandener Code-Templates spart viel Zeit, Arbeit und verhindert Flüchtigkeitsfehler im Entwicklungsprozess. Anstatt vieler händischer Einzelschritte, wird einfach ein Prozess in Gang gesetzt, der DevOps-Arbeitsprozesse bestmöglich unterstützt. Es gehen keine Konfigurationen verloren. Einzelne Versionen der Installation werden automatisch gespeichert und sind im Falle eines Problems wiederherstellbar.
Fazit
Managed Kubernetes in Kombination mit Managed IaC bieten DevOps-Teams eine niedrige Zugangsschwelle zu anwendungsbereiten, skalierbaren, CI/CD unterstützenden und auf den Bedarf individuell abgestimmte Server-Ressourcen. Denn IaC setzt die gleichen Konzepte ein, die auch für das Management von Anwendungscode oder Releases für Betriebsumgebungen verwendet werden. Als wichtiger Baustein von DevOps kombiniert IaC automatisiertes Testen, Validieren und Bereitstellen, maximiert die Effizienz und reduziert menschliche Fehler, weil manuelles Konfigurieren entfällt. Die Verwendung von Code-Templates spart viel Zeit und vermeidet Fehler bei der Konfiguration der Infrastruktur. Infrastructure as Code ermöglicht somit einen konsistenten und beschleunigten Infrastrukturaufbau mit verbesserten Managementfunktionen für DevOps Engineers.
IaC und Kubernetes als gemanagte Form können Sie bei uns testen. Wir nehmen uns gerne Zeit, um über Ihre individuellen Anforderungen zu sprechen.