Das Wort „DevOps“ ist eine Kombination aus „Development“ (Entwicklung) und „Operations“ (Betrieb). Das Wort hat jedoch eine breitere Bedeutung als nur die Kombination dieser beiden Konzepte.
DevOps ist ein Ansatz für die Softwareentwicklung und -bereitstellung, der eine schnellere Markteinführung ermöglicht als herkömmliche Ansätze. Im Idealfall bringt er auch andere Vorteile mit sich, z. B. eine höhere Teamproduktivität, eine höhere Qualität der gelieferten Produkte und die Möglichkeit, DevSecOps einzusetzen (und damit eine bessere Sicherheit zu gewährleisten).
Die vielleicht grundlegendste Praxis wird durch ihren Namen angedeutet. Unternehmen, die DevOps einsetzen, heben die traditionelle Trennung zwischen Entwicklung und Betrieb auf. In einigen „DevOps-Läden“ arbeiten die beiden Teams eng zusammen. In anderen wurden die beiden Teams zusammengelegt, und dieselben Ingenieure übernehmen eine Vielzahl von Aufgaben, von der Entwicklung über die Bereitstellung bis hin zum Betrieb.
Es ist auch üblich, dass Tests und Qualitätssicherung in die Entwicklung integriert werden, mit einer engen Feedbackschleife, um die Softwarequalität zu verbessern und den Entwicklungszyklus zu beschleunigen. Idealerweise wird auch die Sicherheit in den gesamten Entwicklungsprozess integriert, und da DevOps inzwischen zum Mainstream geworden ist, gehen viele Unternehmen noch einen Schritt weiter und führen auch DevSecOps ein. Dies ist ein positiver und ermutigender Trend.
Im Folgenden wird eine Reihe weiterer DevOps-Praktiken erläutert. DevOps ist keine formale Methodik, und die Unternehmen, die sie anwenden, haben unterschiedlich viele Praktiken übernommen. Die hier aufgeführten Praktiken sind jedoch in der DevOps-Community weit verbreitet.
Anstatt große monolithische Anwendungen zu erstellen und zu unterstützen, lassen sich Entwicklungsgeschwindigkeit und Qualität durch die Einführung von Microservice-Architekturen erheblich steigern. Die Anwendungen bestehen aus einer Reihe kleinerer unabhängiger Dienste, die über klar definierte Schnittstellen miteinander kommunizieren.
Umfassende Änderungen an der Codebasis sind langsam und können beim Testen/Qualitätssicherung viele Probleme verursachen. Stattdessen praktizieren die meisten DevOps-Unternehmen kontinuierliche Integration („Continuous Integration“, CI). Die Entwickler führen ihre Änderungen regelmäßig in das zentrale Repository zurück, und es werden häufig automatisierte Builds und Tests durchgeführt. Dies erleichtert das Auffinden von Softwarefehlern und anderen Problemen. Die Softwarequalität wird erhöht, während der Zeitaufwand für das Testen verringert wird.
Anstatt nur selten größere Versionen von Softwareprodukten zu veröffentlichen, erstellen und veröffentlichen DevOps-Organisationen regelmäßig kleinere Updates, die automatisierte Tests durchlaufen und dann zur aktuellen Produktionsversion werden. Dieser Prozess der kontinuierlichen Auslieferung (Continuous Delivery, CD) stellt sicher, dass immer die neuesten Funktionen zur Auslieferung bereitstehen und Kunden und Interessenten sofort angeboten werden können.
Außerdem ermöglicht er den Unternehmen eine enge Feedbackschleife mit den Benutzern; Reaktionen und Anfragen können schnell empfangen und sofort beantwortet werden. Dieser CI/CD-Zyklus wiederholt sich immer wieder und verbessert so schnell den Funktionsumfang und die Qualität der Software.
Die einzigartigen Anforderungen von DevOps erfordern einzigartige Werkzeuge. Die Automatisierung ist ein besonders wichtiger Aspekt von DevOps, und viele spezialisierte Tools wurden zu diesem Zweck entwickelt.
Die herkömmliche Wartung der IT-Infrastruktur ist mit DevOps nicht vereinbar, da sie arbeitsintensiv und zeitaufwändig ist. Sie kann auch zu anderen Problemen führen: Server veralten, und es sammelt sich Unrat an, was zu Inkonsistenzen und potenziellen Sicherheitslücken führt. Infrastructure-as-Code (IaC) ist ein anderer Ansatz: Infrastruktur und Ressourcen werden programmatisch erstellt und verwaltet.
Dadurch kann die Infrastruktur je nach Bedarf automatisch bereitgestellt und zerstört und mit Softwaretools wie der Versionskontrolle verwaltet werden. Dies erhöht die Geschwindigkeit der Verwaltung, die Konsistenz der Infrastruktur, die Replizierbarkeit von Umgebungen und andere wichtige Faktoren wie die Möglichkeit, eine unveränderliche Infrastruktur zu verwenden.