Release Engineering wird oft mit DevOps verwechselt. Es gibt einen guten Grund. Die Rollen und Verantwortlichkeiten überschneiden sich oft. DevOps kann als Obermenge des Release Engineerings betrachtet werden.
Release-Engineering
Release Engineering ist eine Disziplin, die sich auf die Bereitstellung von Software konzentriert. Es versucht, qualitativ bessere Software zu einem zuverlässigen und vorhersehbaren Preis zu entwickeln. Sein Auftrag besteht darin, die Software-Build- und Release-Pipeline zu verbessern. Hier sind einige Dinge, auf die das Release-Engineering Wert legt:
- Implementiert Versionskontrolle - Release-Engineering versucht, dem Code Rückverfolgbarkeit und Zuverlässigkeit zu verleihen. Der Code wird also in Versionskontroll-Repositorys wie Git, SVN, Perforce usw. verwaltet. Entwicklungsteams verwenden diese Versionskontrollsysteme, um die Codeentwicklung besser zu verfolgen.
- Automatisiert Build- und Release-Pipelines – Das Release-Engineering konzentriert sich darauf, Automatisierungstools zu finden, um die Geschwindigkeit und Zuverlässigkeit des Release-Prozesses zu verbessern. Vom ersten Code-Commit über die Versionskontrolle bis zum Endprodukt, das den Kunden erreicht, verbessert das Release-Engineering den Prozess ständig. Continuous Integration und Continuous Delivery (CI/CD) spielen eine wichtige Rolle in modernen automatisierten Build/Release-Systemen.
- Konfigurationsmanagement – Während sich der Softwarecode durch verschiedene Zyklen der Entwicklung, des Tests, der Bereitstellung und der Produktion bewegt, stellt das Konfigurationsmanagement sicher, dass die Produktattribute während des gesamten Softwarelebenszyklus konsistent sind consistent.
- Produktion und Bereitstellung - Jede Software, die in einer Produktionsumgebung an den Kunden geht, muss eng mit ihrem Ursprung verbunden sein. Wenn es also ein Problem gibt, können Unternehmen es bis zur Quelle zurückverfolgen.
DevOps
DevOps hat ein breiteres Mandat. Es konzentriert sich auf die Schaffung einer funktionsübergreifenden Zusammenarbeit zwischen Teams.
In der Vergangenheit arbeiteten Entwicklungsteams und Betriebsteams in eigenen Silos. Wenn Entwicklungsteams ihren Code in der Produktion einsetzten, gab es hitzige Diskussionen darüber, wer die Verantwortung für Produktionsprobleme übernehmen würde. Außerdem möchte das Entwicklungsteam, dass die neuesten und coolsten Funktionen bereitgestellt werden, während das Betriebsteam keine Risiken eingehen möchte. Es führte zu ständigen Konflikten zwischen den beiden Gruppen.
Der Zweck von DevOps-Praktiken bestand darin, Entwicklung und Betrieb näher zusammenzubringen. Hier sind einige Dinge, auf die sich DevOps konzentrieren:
- Infrastruktureinrichtung und -bereitstellung – Traditionell planten und bereitgestellten IT-Abteilungen die Infrastruktur. DevOps-Philosophie fördert einen stärker entwicklerzentrierten Ansatz. Die Pipeline wurde erstellt, um den Entwicklungsprozess zu erleichtern, um die verschiedenen Phasen und Zyklen reibungslos zu durchlaufen. Entwickler haben mehr Verantwortung für das Verhalten ihrer Anwendungen in der Produktion.
- Konfigurationsmanagement – DevOps-Teams haben einen umfassenderen Blick auf das Konfigurationsmanagement. Während Release-Engineering es möglicherweise nur für die Softwareprodukte verwendet, finden DevOps-Praktiken Wege, um das Konfigurationsmanagement für jeden Aspekt eines Unternehmens zu implementieren. Der Zweck besteht darin, der gesamten Organisation durch Automatisierung zu einem reibungsloseren Betrieb zu verhelfen.
- CI/CD – Continuous Integration und Continuous Delivery ist ein großer Teil der DevOps-Philosophie. Eine ausgereifte DevOps-Praxis verwendet CI/CD, um traditionelle IT-Aufgaben zu automatisieren, indem Infrastruktur als Code verwendet wird.
- Organisatorische Überwachung und Verbesserungen – DevOps-Praktiken konzentrieren sich auf das Sammeln von Daten zu Prozessen zur Analyse und Verbesserung analyze. Daher ist es eine wichtige DevOps-Verantwortung, Daten zu sammeln, in umsetzbare Informationen umzuwandeln und sie zur Verbesserung bestehender Prozesse zu verwenden.
Abschließend
Aufgrund der Überschneidung von Bedenken hinsichtlich der Verbesserung von Softwareprozessen wird Release Engineering oft mit DevOps verwechselt. Aber DevOps haben einen größeren Umfang. Während das Release-Engineering als separate Abteilung leben kann, erfordert DevOps eine stärkere Integration in den Gesamtworkflow des Unternehmens. Es ist einfacher, eine Release-Engineering-Praxis einzurichten, da die Schritte konkret sind. DevOps erfordert ein Verständnis des Organisationsverhaltens, der Arbeitskultur und der Infrastruktur. Bei erfolgreichem DevOps geht es nicht nur um das Produkt, sondern um die gesamte Organisation.
Weiteres Studium
Auf dem Weg zu Definitionen für Release Engineering und DevOps