Was ist DevOps?
In einem traditionellen Softwareentwicklungsmodell schreiben Entwickler große Mengen an Code für neue Funktionen, Produkte, Fehlerkorrekturen usw. und geben ihre Arbeit dann zur Bereitstellung an das Betriebsteam weiter, in der Regel über ein automatisiertes Ticket-System. Das Betriebsteam erhält diese Anfrage in seiner Warteschlange, testet den Code und stellt ihn für die Produktion bereit - ein Prozess, der Tage, Wochen oder Monate dauern kann. Wenn bei diesem traditionellen Modell Probleme bei der Bereitstellung auftreten, schickt das Team ein Ticket an die Entwickler zurück, um ihnen mitzuteilen, was sie beheben sollen. Nachdem dieses Hin und Her geklärt ist, wird die Arbeitslast schließlich in die Produktion übernommen.
Dieses Modell macht die Softwarebereitstellung zu einem langwierigen und fragmentierten Prozess. Entwickler sehen den Betrieb oft als Hindernis, das den Zeitplan für ihre Projekte verlangsamt, während sich die Betriebsteams als Abladeplatz für Entwicklungsprobleme fühlen.
DevOps löst diese Probleme, indem es Entwicklungs- und Betriebsteams über den gesamten Softwarebereitstellungsprozess hinweg zusammenführt. So können sie Probleme früher erkennen und beheben, Tests und Bereitstellung automatisieren und die Markteinführungszeit verkürzen.
DevOps ist nicht
- Eine Kombination aus dem Entwicklungs- und dem Ops-Team: Es gibt immer noch zwei Teams, sie arbeiten nur auf kommunikative, kooperative Weise.
- Ein eigenes, separates Team: So etwas wie einen "DevOps-Ingenieur" gibt es nicht. Obwohl einige Unternehmen ein DevOps-Team als Pilot einsetzen, wenn sie versuchen, zu einer DevOps-Kultur überzugehen, bezieht sich DevOps auf eine Kultur, in der Entwickler, Tester und Betriebsmitarbeiter während des gesamten Lebenszyklus der Softwarebereitstellung zusammenarbeiten.
- Ein Werkzeug oder eine Reihe von Werkzeugen: Obwohl es Tools gibt, die gut mit einem DevOps-Modell zusammenarbeiten oder die DevOps-Kultur fördern, ist DevOps letztlich eine Strategie und kein Tool.
- Automatisierung: Obwohl sie für eine DevOps-Kultur sehr wichtig ist, macht Automatisierung allein DevOps nicht aus.
DevOps Definiert
In einem DevOps-Modell kodieren die Entwickler nicht mehr riesige Funktionspakete, bevor sie sie blindlings an Operations zur Bereitstellung übergeben, sondern sie liefern häufig kleine Mengen an Code für kontinuierliche Tests. Anstatt Probleme und Anfragen über ein Ticket-System zu kommunizieren, treffen sich die Entwicklungs- und Betriebsteams regelmäßig, tauschen Analysen aus und sind gemeinsam für alle Projekte verantwortlich.
CI/CD-Pipeline
DevOps ist ein Zyklus aus kontinuierlicher Integration und kontinuierlicher Bereitstellung (oder kontinuierlicher Bereitstellung), auch bekannt als CI/CD-Pipeline. Die CI/CD-Pipeline integriert Entwicklungs- und Betriebsteams, um die Produktivität durch die Automatisierung von Infrastruktur und Workflows sowie die kontinuierliche Messung der Anwendungsleistung zu verbessern. Es sieht so aus:

- Kontinuierliche Integration verlangt von den Entwicklern, dass sie mehrmals täglich Code in ein Repository für automatisierte Tests integrieren. Jeder Check-in wird durch einen automatisierten Build überprüft, so dass die Teams Probleme frühzeitig erkennen können.
- Continuous Delivery, nicht zu verwechseln mit Continuous Deployment, bedeutet, dass die CI-Pipeline automatisiert ist, der Code aber manuelle technische Prüfungen durchlaufen muss, bevor er in der Produktion implementiert wird.
- Kontinuierliche Bereitstellung geht noch einen Schritt weiter. Anstelle von manuellen Prüfungen durchläuft der Code automatisierte Tests und wird automatisch bereitgestellt, so dass Kunden sofortigen Zugriff auf neue Funktionen haben.
DevOps und Sicherheit
Ein Problem bei DevOps ist, dass die Sicherheit oft durch die Maschen fällt. Entwickler arbeiten schnell, und ihre Arbeitsabläufe sind automatisiert. Die Sicherheit ist ein separates Team, und die Entwickler wollen nicht für Sicherheitsprüfungen und -anfragen verlangsamt werden. Infolgedessen stellen viele Entwickler die Software bereit, ohne die richtigen Sicherheitskanäle zu durchlaufen, und machen dabei unweigerlich gefährliche Sicherheitsfehler.
Um dieses Problem zu lösen, setzen Organisationen DevSecOpsein. DevSecOps greift das Konzept von DevOps auf - die Idee, dass Entwickler und IT-Teams während der Softwarebereitstellung eng zusammenarbeiten sollten, anstatt getrennt voneinander - und erweitert es um die Sicherheit und die Integration automatisierter Prüfungen in die gesamte CI/CD-Pipeline. Dadurch wird das Problem der Sicherheit, die wie eine äußere Kraft wirkt, gelöst und die Entwickler können ihre Geschwindigkeit beibehalten, ohne die Datensicherheit zu gefährden.