DevOps mit Microsoft Azure – eine Übersicht der Services
Bevor wir uns den DevOps Services in der von Microsoft Corporation entwickelten Unternehmens-Cloud Azure widmen, sollten wir zunächst den Begriff DevOps etwas genauer klären. Der Begriff DevOps beschreibt einen Ansatz zur Verbesserung von Entwicklungsmethoden in der IT-Technologie und wurde ursprünglich aus Development (englisch für Entwicklung) und Operations (englisch für Betrieb) zusammengesetzt. Trotz der Begrifflichkeit Operations ist DevOps keine spezielle Businessbranche, sondern entspricht einer professionellen IT-Philosophie. Dieser Verbesserungsansatz verfolgt das Ziel, durch automatisierte und kontinuierliche Prozesse die Entwickler, Tester und Systemadministratoren zu unterstützen sowie ihre Arbeit schneller und effizienter zu gestalten.
Um besser zu verstehen, was hinter DevOps steckt, hilft es meist den Einsatz der DevOps-Methodik in der Praxis etwas ausführlicher zu durchleuchten.
Einsatz von DevOps in der Praxis
DevOps ist eine der beliebtesten Arten der Interaktion unter den Entwicklern unterschiedlichster Disziplinen. Dabei umfasst diese Praxis eine Reihe von Prozessen für die Erstellung, Wartung und weiteren Betrieb von Software. Die Prozesse erstrecken sich hierbei über den gesamten Produktlebenszyklus – von der Anforderung bis hin zu Bereitstellung der Software. Es ist zu erwähnen, dass jeder Prozess ineinander nahtlos eingreift und ohne andere Prozesse nicht existieren kann. Darauf baut das Hauptwesen der interdisziplinären Interaktion zwischen Softwaretools, Entwicklern und einzelnen Fachbereichen. DevOps besteht aus den folgenden Aufgaben, die DevOps-Spezialisten in der Lage sein müssen zu lösen:
- Unmittelbare Entwicklung von Software zur Lösung bestimmter Entwicklungsanforderungen
- Testen von Zwischenversionen oder vorgefertigten Softwareprodukten
- Praxisnaher Betrieb und Prüfung von fertigen Produkten
Durch Entwicklung, Test und Betrieb werden alle Bedingungen geschaffen, die für die qualitativ hochwertige Nutzung der einen oder anderen Software erforderlich sind.
Beispiel der Skill-Anforderungen eines DevOps-Spezialisten: DevOps-Spezialisten sollten Netzwerke (Routing, Switching) auf CCNA-Ebene kennen, Linux beherrschen (CLI, Grundprinzipien der Datenbankzugriffe) und programmieren können. Sie sollten Allrounder-Entwickler sein. Wünschenswert sind Kenntnisse im Front-End und zum Teil im Back-End. Zudem sollten sie sich idealerweise mit Python gut auskennen. Zudem ist es wichtig, dass ein Spezialist ein gutes methodisches Wissen im DevOps-Bereich aufweist und gute Soft-Skills mitbringt.
Welche Kernziele verfolgt DevOps?
Die Kernziele, die mittels DevOps erreicht werden können, lassen sich wie folgt zusammenfassen:
Dank des DevOps können die Releases bei gleichbleibender oder höherer Qualität in kürzeren Zeitintervallen bereitgestellt werden. Das gilt selbstverständlich sowohl für finale Software-Releases als auch für alle Arten von Patches sowie für Hotfixes.
Unternehmen, die mit DevOps-Methoden entwickeln, zeigen eine niedrigere Abbruchquote bei neuen Entwicklungsprojekten.
Sehr gut abgestimmte DevOps-Prozesse können Bereitstellungen von Software sogar im Minutentakt ermöglichen. Das führt mittel- bis langfristig zu schnellerer Release-Verfügbarkeit über alle Entwicklungsphasen hinweg bis hin zur Steigerung der Entwicklungsqualität. Somit macht DevOps für die Entwickler und Publisher den Release-Prozess deutlich einfacher.
Falls bei der Erstellung eines Produkts doch ein Bug aufgetreten ist, ist die Wiederherstellung viel einfacher als zuvor. Die fehlerhaften Bestandteile lassen sich mit Hilfe der automatischen Produktgenerierungen ganz einfach durch andere ersetzen, ohne das gesamte Release zu gefährden.
DevOps Services in Microsoft Azure
Microsoft Azure wird kontinuierlich um funktionale und verwendbare Elemente erweitert, um diese für die Unternehmensumgebung so vielseitig wie möglich zu gestalten. Ende 2018 wurde eine neue Reihe von Azure DevOps-Tools eingeführt. In diesem Beitrag werden wir herausfinden, was die DevOps-Tools den Vertretern der IT-Sphäre bieten. Insbesondere werden wir auf die wichtigsten Services wie Azure Boards, Azure Pipeline und Azure Repos genauer eingehen, die in der neu erstellten Ressource enthalten sind.
Welche DevOps Services sind in Azure an Bord?
Microsoft Azure hat sich in den letzten Jahren zu einer beliebten Plattform für DevOps Prozesse hochgearbeitet und hat mittlerweile die meisten Werkzeuge an Board, die ein DevOps-Spezialist oder Entwickler aus unterschiedlichen Entwicklungsrichtungen, sei es Web-Technologie, Datenbanken oder mobile App-Entwicklung, für die tägliche Arbeit benötigen. Zudem bietet Azure DevOps kleinen Teams, die aus bis zu fünf Entwicklern bestehen, die DevOps Dienste komplett kostenfrei an. Das sorgt für mehr Attraktivität und erhöht die Beliebtheit in der Developer-Szene.
An Board hat Azure eine Reihe an nützlichen Instrumenten. Hierzu zählen Azure DevOps Services – die Kommandozentrale oder die Servicebündelung der DevOps Plattform, Azure Pipelines – Oberfläche zum Automatisieren und Bereitstellen von Software, Azure Boards – die Planungs- und Trackingumgebung für das Produktteam, Azure Repos – Verwaltung und Versionierung von Code, Azure Test Plans – integrierte Testumgebung für den Code und Azure Artifacts – Verwaltung von Codeartefakten.
Azure Pipelines
Pipelines stellt eine leistungsstarke CI-/CD-Lösung ("CI" wie englisch für Continuous Integration und "CD" wie englisch für Continuous Delivery) zum kontinuierlichen Erstellen, Testen und Bereitstellen von Software dar. Laut Microsoft lässt es sich mit Azure Pipelines und auf dem DevOps Portal sprachen- und plattformunabhängig entwickeln. Unterstützt werden dabei Anwendungen auf Basis von Node.js, Python, Java, PHP, Ruby, C / C ++, .NET, Android und iOS sowohl in der lokalen Infrastruktur als auch auf jeder Cloud-Plattform. Auch die Ausführung paralleler Code-Builds unter Linux, MacOS und Windows stellt hierfür kein Problem dar. Pipelines ermöglichen eine zeit- und ortsunabhängige automatische Erstellung und Bereitstellung von Software. Auch clusterübergreifende Containertools zur Bereitstellung und Verteilung von Software wie Kubernetes oder Docker können nach Belieben in die Pipelines integriert werden. Für Open Source-Projekte ist die Lösung sogar kostenlos auf dem GitHub Marketplace verfügbar und unterstützt bis zu 10 parallele Code-Build und Release Jobs und dabei ohne jegliche zeitliche Begrenzung.
Azure Repos
Azure Repos ist ein Tool zur Versionskontrolle innerhalb von DevOps und unterstützt eine unbegrenzte Anzahl von Git-Repositories (verteilte Versionskontrolle), die in der Cloud gehostet werden können. Auch auf Team Foundation Version Control (TFVC) basierende zentrale Versionskontrolle kann in Azure Repos verwendet werden. Je nach Projektanforderungen kann zwischen GitHub und TFVC entschieden werden. Mit Hilfe von Azure Repos ist es möglich aus einer integrierten Entwicklungsumgebung (IDE) heraus den Code nach dem Pull-Request zu prüfen, bestimmte Code-Zweige für eine bessere Übersicht mit eingeschränkten Zugriffsrechten zu versehen oder den Code dank der gemeinsamen Reviews mit Teamkollegen zu verbessern. Die semantische Codesuche in Azure Repos unterstützt die Entwickler dank der eingebauten Suchmöglichkeit nach Klassen und Variablen sehr effizient bei der Suche nach Codeinhalten.
Azure DevOps
Azure DevOps ist eine konsequente Weiterentwicklung von Produkten wie Visual Studio Team Services (VSTS) und Team Foundation Server (TFS) sowie ihre Zusammenführung in der Azure Cloud. VSTS wird durch DevOps Services ersetzt – alle Dienste werden hierbei in der Cloud zur Verfügung gestellt und bieten ein Höchstmaß an Skalierbarkeit und Sicherheit. Azure DevOps Server, vormals bekannt als TFS, ist ein On-Premise SQL-Server – hierbei verbleiben die Daten innerhalb eines Netzwerks und gewährleisten die höchste Integrität für hochsensible Daten. Sowohl Azure DevOps Services als auch Azure DevOps Server haben ein und denselben Serviceumfang. Der Unterschied besteht lediglich darin, wo die Daten gespeichert und wie diese verwaltet werden. Ob Cloud-Hosting oder On-Premise DevOps Services, darüber entscheiden letztendlich die Compliance Anforderungen des Unternehmens. Die genannten Services stellen eine Reihe von hybriden Tools für die Bereitstellung der DevOps-Methodik dar. Die Lösungen stellen eine außerordentlich effektive und produktive Interaktion zwischen Entwicklern und IT-Administratoren während der Entwicklung, des Betriebs und des Testens von Software zur Verfügung. Durch den Einsatz von DevOps kann das Unternehmen wettbewerbsfähiger und effizienter werden, indem die Zeit für die Bereitstellung von Software für den Endkunden verkürzt und die Mittel optimiert werden, da mittels DevOps die Release-Zyklen schneller erfolgen und das Produkt nicht wiederholt angepasst werden muss.
Azure Boards
Azure Boards macht das Tracking, Planen und Besprechen von Arbeitsabläufen innerhalb des Entwicklungsteams zu einem Kinderspiel. Es ist ein Tool, das sowohl Kanban- als auch Scrum-Boards unterstützt und eine Workflow-Visualisierung ermöglicht. Damit wird die Verwaltung von agilen Entwicklungsprozessen gemäß der Agile-Methodik besonders effektiv umgesetzt. Für den Fall, dass eine Open-Source Anwendung entwickelt wird, bietet Azure-Boards eine Integrationsmöglichkeit für GitHub. Azure Boards lässt benutzerspezifische Anpassungen zu, so dass für das Team je nach Entwicklungsmethodik und Anforderungen das optimale Design der Boards aufbereitet werden kann. Dank der intuitiven Handhabung (Drag & Drop) und leistungsstarker Analyse- und Reportingwerkzeuge behalten die Projektmanager den Status und die Integrität ihres Projektes immer im Blick.
Azure Test Plans
Azure Test Plans ist eine integrierte und explorative Testumgebung in DevOps zur Verbesserung der Codequalität durch systematische und kontinuierliche Durchführung von geplanten Testszenarien. Dieser Dienst unterstützt auch ein skriptbasiertes und manuelles Abtesten vom Code.
Azure Artifacts
Azure Artifacts ist ein Service, mit dem Maven-, npm- und NuGet-Pakete sowohl aus öffentlichen als auch privaten Quellen in die Entwicklungslösung integriert und freigegeben werden können. Die Pakete können, falls erforderlich, nur mit einem Click zu den bestehenden Pipelines hinzugefügt werden. Mit Artefakten können Teams beliebiger Größe Pakete erstellen, hosten und untereinander freigeben, um den Code effizienter zu gestalten.
Fazit - Azure DevOps Services
Jeder der vorgestellten Azure DevOps-Dienste unterstützt jede Programmiersprache, Plattform und Cloud. Da die Dienste hybrid sind, können sie in einer privaten oder öffentlichen Cloud oder im lokalen Rechenzentrum eines Unternehmens ausgeführt werden. Die Lösungen können untereinander interoperabel eingesetzt werden, um die Entwicklungseffizienz zu steigern und einem ganzheitlichen DevOps-Ansatz gerecht zu werden. Dank der Unterstützung der Tools von Drittanbietern in der Azure-Cloud wie Jenkins, Terraform, Ansible und Chef kommt Microsoft dem ganzheitlichen Ansatz ganz nahe. Da Azure DevOps ein Azure Service ist, haben die Kunden durch die Cloud-Anbindung eine weltweite Reichweite, Sicherheit und Performance auf einem Unternehmenslevel sowie einen 24-Stunden-Support von Microsoft.
Die Verwendung von DevOps bietet zahlreiche Vorteile. In der Praxis lässt sich beispielsweise mit Hilfe von Azure DevOps Services die Produktion derart automatisieren und optimieren, dass deutlich schnellere Release-Zyklen bei gleichzeitiger Qualitätssteigerung des Endprodukts erzielt werden können. In den einzelnen Entwicklungsphasen kann mit verschiedenen Details und Elementen des Systems experimentiert werden, ohne dabei die kreative Denkweise eines Entwicklers zu stören oder einzuschränken. Die Integration von DevOps in die Geschäftsprozesse verspricht außerdem dank der abteilungsübergreifenden Zusammenarbeit, vollumfänglichen Produktverantwortung und cross-funktional organisierten Teams (Ende zu Ende Verantwortung) eine größere Transparenz in Entwicklungsprozessen und damit einhergehende höhere Kundenorientierung. Die Entwicklung von Endprodukten ist jetzt viel einfacher als früher – dank der Azure DevOps Services!