DevOps ist eine Kombination von Denkweisen, Praktiken und Tools, mit denen Unternehmen schneller und einfacher Anwendungen und Services bereitstellen können. Die Weiterentwicklung und Verbesserung von Produkten gelingt damit in kürzerer Zeit als bei Unternehmen, die auf herkömmliche Prozesse für die Softwareentwicklung und Infrastrukturverwaltung bauen. Dank dieses Geschwindigkeitsvorteils können Unternehmen ihre Kunden besser bedienen und sich effektiver auf dem Markt durchsetzen.
Eines der zentralen Wesensmerkmale eines DevOps-Modells ist, dass die Entwicklungs- und Operations-Teams nicht mehr isoliert voneinander arbeiten. Manchmal werden die zwei Teams zu einem einzigen Team zusammengeführt, in dem die Engineers den gesamten Anwendungslebenszyklus – von der Entwicklungs- und Testphase bis hin zu Bereitstellung und Betrieb – mitbetreuen und so Fähigkeiten entwickeln können, die sich flexibel einsetzen lassen und nicht nur auf eine bestimmte Funktion beschränkt sind.
Bei manchen DevOps-Modellen arbeiten auch die Teams für Qualitätssicherung und Sicherheit über den gesamten Anwendungslebenszyklus enger mit den Entwicklungs- und Operations-Teams zusammen. Wenn Sicherheit im Fokus aller Beteiligten eines DevOps-Teams steht, wird dies manchmal als DevSecOps bezeichnet.
Dabei kommen Praktiken zur Automatisierung von traditionell manuellen, zeitaufwendigen Prozessen zum Einsatz. Der verwendete Technologie-Stack und die genutzten Tools ermöglichen eine schnelle und zuverlässige Ausführung und Weiterentwicklung von Anwendungen. Diese Tools ermöglichen Engineers auch, in Eigenregie Aufgaben zu erledigen (wie beispielsweise die Bereitstellung von Code oder Infrastruktur), für die sie üblicherweise auf die Unterstützung anderer Teams angewiesen waren. Das Ergebnis ist auch hier eine erhöhte Geschwindigkeit.
Beschleunigen Sie Ihre Prozesse, sodass Sie Ihren Kunden schneller innovative Ergebnisse liefern können. Passen Sie sich besser veränderten Marktbedingungen an und erreichen Sie Geschäftsergebnisse effizienter. Mit dem DevOps-Modell befähigen Sie Ihre Entwickler und Operations-Teams, Ihre Unternehmensziele zu verwirklichen. So ermöglichen Microservices und Continuous Delivery Ihren Teams, durch die Übernahme der vollständigen Verantwortung für Services und deren Steuerung Updates schneller zu veröffentlichen.
Erhöhen Sie die Häufigkeit und Geschwindigkeit von Versionen, sodass Sie Ihre Innovations- und Produktupdatezyklen beschleunigen können. Mit der schnelleren Hinzufügung neuer Funktionen und Behebung von Bugs gehen Sie rascher auf die Anforderungen Ihrer Kunden ein und verschaffen sich so einen Wettbewerbsvorsprung. Continuous Integration und Continuous Delivery sind Methoden zur Automatisierung von Software-Releases von der Build-Erstellung bis hin zur Bereitstellung.
Stellen Sie die Qualität von Anwendungsupdates und Änderungen an der Infrastruktur sicher. So können Sie Ihre beschleunigten Prozesse aufrechterhalten, ohne die positive Kundenerfahrung Ihrer Endnutzer zu beeinträchtigen. Durch Verwendung von Methoden wie Continuous Integration und Continuous Delivery überprüfen Sie die Funktionalität und Sicherheit jeder Änderung. Methoden zur Überwachung und Protokollierung liefern Ihnen Informationen zur Systemleistung in Echtzeit.
Betreiben und verwalten Sie Infrastruktur und Bereitstellungsprozesse jeder Größenordnung. Durch Automatisierung und konsistente Prozesse lassen sich komplexe oder sich wandelnde Systeme effizient und bei minimiertem Risiko verwalten. So hilft Ihnen beispielsweise Infrastruktur in Form von Code bei der Verwaltung von Entwicklungs-, Test- und Produktionsumgebungen auf eine reproduzierbare und effizientere Weise.
Entwickeln Sie effektivere Teams mithilfe einer DevOps-Kultur, die durch Werte wie Ownership und Verantwortlichkeit getragen wird. Die Entwicklungs- und Operations-Teams arbeiten eng zusammen, teilen Verantwortung und nutzen kombinierte Workflows. So werden Ineffizienzen beseitigt und Zeit gespart (z. B. durch weniger Übergaben zwischen den Teams oder das Programmieren von Code, der die Umgebung, in der er ausgeführt wird, bereits berücksichtigt).
Bleiben Sie agil, behalten Sie die Kontrolle und erfüllen Sie Compliance-Bestimmungen. Der Umstieg auf ein DevOps-Modell bedeutet nicht, dass Sie Abstriche bei der Sicherheit machen müssen. Dank Automatisierung von Compliance- %, granularer Steuerungsroutinen und Konfigurationsverwaltungstools bleibt Ihr Betrieb weiterhin sicher und bestimmungskonform. So können Sie beispielsweise durch Verwendung von Infrastruktur in Form von Code und Richtlinien in Form von Code Ihre Compliance-Vorgaben bedarfsgerecht definieren und nachverfolgen.
Software und das Internet haben die Geschäftswelt grundlegend verändert – Einkaufen, Unterhaltung, Banking usw. Software dient nicht mehr nur der Unterstützung von Geschäftsprozessen, sondern ist vielmehr zu einem wesentlichen Bestandteil jedes einzelnen Unternehmensbereichs geworden. Unternehmen interagieren mit ihren Kunden über als Onlineservice bereitgestellte Software oder Anwendungen sowie über eine Vielzahl von Geräten. Sie nutzen Software ebenfalls, um durch die Umgestaltung jedes Teilbereichs der Wertschöpfungskette wie Logistik, Kommunikation und operatives Geschäft betriebliche Effizienzen zu erhöhen. Herkömmliche Hersteller von physischen Waren mussten im 20. Jahrhundert im Zuge der industriellen Automatisierung ihre Konzeptions-, Herstellungs- und Lieferprozesse grundlegend ändern. Ganz ähnlich müssen Unternehmen heute neue Wege bei der Erstellung und Bereitstellung von Software beschreiten.
Der Umstieg auf DevOps erfordert einen grundlegenden Wandel bei Unternehmenskultur und Denkstrukturen. Das Kernstück von DevOps ist die Überwindung der Trennlinien zwischen zwei ehemals stark isoliert arbeitenden Unternehmensbereichen, Entwicklung und Operations. In manchen Organisationen gibt es unter Umständen nicht einmal separate Teams für Entwicklung und Operations – beide Aufgaben fallen in die Zuständigkeit der Engineers. In einer DevOps-Struktur arbeiten die beiden Teams zusammen mit dem Ziel, die Produktivität der Entwickler und die Zuverlässigkeit der betrieblichen Abläufe zu optimieren. Wesentlich sind häufige und offene Kommunikation, höhere Effizienz und eine verbesserte Servicequalität für den Kunden. Dabei übernimmt jeder Einzelne volle Verantwortung für die für den Kunden erbrachte Leistung, die häufig weit über das herkömmliche Verantwortlichkeitsmodell für einen Teilbereich des Endprodukts hinausgeht. Jedes Teammitglied fühlt sich für die optimale Erfüllung der Kundenanforderungen verantwortlich. Auch eine enge Einbindung der Qualitätssicherungs- und Sicherheitsteams ist möglich. Teams in Unternehmen, die das DevOps-Modell nutzen, fühlen sich unabhängig von der organisatorischen Struktur für den gesamten Entwicklungs- und Infrastrukturlebenszyklus zuständig.
Es gibt einige zentrale Verfahren, die es Unternehmen ermöglichen, ihre Innovationszyklen durch Automatisierung und Verschlankung der Prozesse in der Softwareentwicklung und Infrastrukturverwaltung zu beschleunigen. Die Nutzung der richtigen Tools ist für die meisten dieser Praktiken das A und O.
Eine zentrale Methode ist die Durchführung häufiger, jedoch kleiner Updates. So können Unternehmen ihren Kunden schneller Innovationen bereitstellen. Die so ausgelieferten Updates sind natürlich weniger umfassend als die im Rahmen herkömmlicher Releases üblichen umfangreichen Updates. Häufige, kleine Updates machen Bereitstellungen weniger riskant. Sie ermöglichen es den Teams, Bugs schneller zu adressieren, da die zum Fehler führende letzte Bereitstellung leicht identifiziert werden kann. Auch wenn die Frequenz und die Größe der Updates sicherlich variieren, stellen Unternehmen mit einer DevOps-Struktur weit häufiger Updates bereit als Unternehmen, die gängigen Entwicklungspraktiken folgen.
Die Nutzung einer Microservice-Architektur macht Unternehmensanwendungen noch flexibler und ermöglicht so noch schnellere Innovationszyklen. Das Geheimnis der Microservice-Architektur ist das Entkoppeln von großen, komplexen Systemen in einfache, unabhängige Projekte. Anwendungen werden in einzelne Komponenten (Services) unterteilt, wobei jeder Service einen bestimmten Zweck oder eine Funktion erfüllt und unabhängig von den anderen Services bzw. der Gesamtanwendung funktioniert. Diese Architektur verringert den Koordinationsaufwand für Anwendungsaktualisierungen. Werden die einzelnen Services nun von kleinen, agilen Teams betreut, die volle Verantwortung für sie übernehmen, kann sich eine erhebliche Dynamik entfalten, die dem Unternehmen zugute kommt.
Allerdings führt die Kombination von Microservices und mehr Updates zu signifikant mehr Bereitstellungen und damit möglicherweise zu betrieblichen Herausforderungen. Die Lösung sind DevOps-Praktiken wie Continuous Integration und Continuous Delivery, die sichere und zuverlässige Bereitstellungen ermöglichen. Methoden zur Infrastrukturautomatisierung wie Infrastruktur in Form von Code und Konfigurationsmanagement helfen dabei, häufigen Veränderungen durch elastische Ressourcen reaktionsschnell zu begegnen. Zudem können Engineers durch Überwachungs- und Protokollierungsmethoden die Performance von Anwendungen und Infrastruktur nachverfolgen und so schnell auf Probleme reagieren.
In Kombination ermöglichen diese Praktiken Unternehmen, ihren Kunden häufigere und zuverlässigere Updates anzubieten. Im Folgenden eine Übersicht über wichtige DevOps-Methoden:
Bei den folgenden Methoden handelt es sich um DevOps Best Practices:
- Continuous Integration
- Continuous Delivery
- Microservices
- Infrastruktur in Form von Code
- Überwachung und Protokollierung
- Kommunikation und Zusammenarbeit
Continuous Integration ist eine Praxis in der Software-Entwicklung, bei der Entwickler alle Codeänderungen regelmäßig in einem zentralen Repository zusammenführen. Diese Änderungen werden dann automatisiert erstellt und getestet. Die Hauptziele der Continuous Integration bestehen darin, Bugs schneller zu entdecken und zu beheben, die Software-Qualität zu optimieren und den Zeitraum zu minimieren, in dem neue Software-Aktualisierungen validiert und eingeführt werden.
Continuous Delivery (kontinuierliche Bereitstellung) ist eine Softwareentwicklungsmethode, bei der Codeänderungen automatisch erstellt, getestet und für eine Produktionsversion vorbereitet werden. Die CD ist eine Erweiterung der Continuous Integration. Dabei werden alle Codeänderungen nach dem Entwurf in einer Test- und/oder Produktionsumgebung bereitgestellt. Bei einer korrekten Implementierung der Continuous Delivery steht Entwicklern stets ein Erstellungsartefakt für die Bereitstellung zur Verfügung, das bereits einen standardisierten Testprozess durchlaufen hat.
Weitere Informationen zu Continuous Delivery und AWS CodePipeline »
Die Microservice-Architektur basiert darauf, Anwendungen auf Basis vieler kleiner Services aufzubauen. Jeder Service durchläuft seine eigenen Prozesse und kommuniziert mit anderen Services mittels eines einfachen Mechanismus über eine eindeutig definierte Schnittstelle, üblicherweise eine HTTP-basierte API. Grundlegendes Konzept der Microservices ist ihre Simplizität und Eindeutigkeit: Jeder Service erfüllt genau einen Zweck. Für die Erstellung von Microservices lassen sich unterschiedliche Frameworks oder Programmiersprachen nutzen. Anschließend können sie unabhängig voneinander, als ein Service oder aber als Gruppe von Services bereitgestellt werden.
Weitere Informationen zu Amazon Container Service (Amazon ECS) »
Infrastruktur in Form von Code ist eine Praxis, bei der Infrastruktur unter Verwendung von Code und Softwareentwicklungsmethoden wie Versionskontrolle und fortlaufender Integration bereitgestellt und verwaltet wird. Das API-basierte Cloudmodell ermöglicht Entwicklern und Systemadministratoren die bedarfsgerechte Interaktion mit der Infrastruktur auf Programmebene und macht eine manuelle Einrichtung und Konfiguration von Ressourcen überflüssig. Durch die codebasierte Schnittstelle mit der Infrastruktur und der Interaktion über gewohnte Tools können Engineers sie ähnlich handhaben wie Anwendungscode. Da Infrastruktur und Server durch Code definiert werden, können sie schnell über standardisierte Verfahren bereitgestellt, mit aktuellen Patches und Versionen versorgt oder reproduzierbar dupliziert werden.
Verwaltung Ihrer Infrastruktur in Form von Code mit AWS CloudFormation »
Entwickler und Systemadministratoren verwenden Code u. a. zur Automatisierung von Betriebssystem- und Hostkonfiguration oder betrieblicher Aufgaben. Durch die Verwendung von Code lassen sich Konfigurationsänderungen wiederholen und standardisieren. Entwickler und Systemadministratoren werden von der manuellen Konfiguration von Betriebssystemen oder Serversoftware entlastet.
Unternehmen, deren Infrastruktur sowie Infrastrukturkonfiguration innerhalb der Cloud in Form von Code vorliegen, können Compliance dynamisch und bedarfsgerecht überwachen und durchsetzen. Mittels Code beschriebene Infrastruktur lässt sich so automatisiert nachverfolgen, validieren und neu konfigurieren. So können Unternehmen Änderungen einfacher über Ressourcen hinweg verwalten und sicherstellen, dass Sicherheitsmaßnahmen ordnungsgemäß in der Infrastruktur verteilt und umgesetzt werden (Beispiele sind die Informationssicherheit oder PCI-DSS-oder HIPAA-Compliance). Dies ermöglicht den Teams ein zügigeres Arbeiten, denn nicht-konforme Ressourcen werden automatisch zur weiteren Untersuchung gekennzeichnet oder sogar automatisch korrigiert, sodass sie die Compliance-Vorgaben wieder erfüllen.
Unternehmen überwachen Metriken und Protokolle, um zu ermitteln, wie Anwendungs- und Infrastrukturperformance die Endbenutzererfahrung beeinflussen. Durch die Erfassung, Kategorisierung und anschließende Analyse von durch Anwendungen und Infrastruktur generierten Daten und Protokollen können Unternehmen verstehen, welche Auswirkungen Veränderungen oder Updates auf die Benutzererfahrung haben und so die Ursachen von Problemen oder unerwarteten Änderungen ermitteln. Aktive Überwachung wird zunehmend wichtiger, da Services rund um die Uhr verfügbar sein müssen und die Häufigkeit von Anwendungs- und Infrastrukturupdates zunimmt. Die Einrichtung von Alarmen oder die Durchführung einer Echtzeitanalyse der Daten ermöglicht Unternehmen außerdem eine proaktivere Überwachung ihrer Services.
Überwachung von Infrastrukturmetriken und -protokollen mit Amazon CloudWatch »
Aufzeichnen und Protokollieren von AWS-API-Aufrufen mit AWS CloudTrail »
Verbesserte Kommunikation und Zusammenarbeit über Teamstrukturen hinweg ist ein wesentliches Merkmal einer funktionierenden DevOps-Unternehmenskultur. Bereits die Nutzung von DevOps-Tools sowie die Automatisierung der Softwarebereitstellung sorgt für ein kollaboratives Klima, indem die Workflows und Verantwortlichkeiten von Entwicklung und Operations zusammengeführt werden. Auf dieser Grundlage etablieren die beteiligten Teams maßgeblich neue kulturelle Normen in puncto Informationsaustausch und offene Kommunikation über Chat, Bugtracking- oder Projektmanagementsoftware und Wikis. Dies ermöglicht eine schnellere Kommunikation zwischen Entwicklern, Operations und sogar anderen Teams wie Marketing und Vertrieb und letztendlich einen Schulterschluss aller Projektbeteiligten mit einem gemeinsamen Ziel.
Das DevOps-Modell basiert auf dem effektiven Einsatz von Tools, durch den Ihre Teams den Kunden schnell und zuverlässig Innovationen bereitstellen können. Diese Tools automatisieren manuelle Aufgaben, unterstützen Teams bei der Verwaltung komplexer und großer Umgebungen und geben Technikern die Kontrolle über die durch DevOps ermöglichte hohe Geschwindigkeit. AWS stellt speziell auf die Anforderungen von DevOps zugeschnittene und für die Nutzung in der AWS Cloud optimierte Services bereit. Mithilfe dieser Services werden Sie in die Lage versetzt, die oben beschriebenen DevOps-Praktiken für sich zu nutzen.