Blog
Ermöglichung von DevOps-Teams für Azure-Cloud-Lösungen

Einführung
Die digitale Transformation ermöglicht es Unternehmen, Innovationen zu realisieren und Produkte und Dienstleistungen mit höherer Qualität zu liefern, um die Erwartungen der Kunden zu übertreffen (besser), die Preise zu senken (billiger) und die Markteinführungszeit zu verkürzen (schneller). Diese Transformation erfordert jedoch sowohl organisatorische als auch technologische Veränderungen.
In diesem Artikel erläutern wir eine organisatorische und plattformunabhängige Technologiearchitektur, die bei der Verwirklichung dieser Ziele der digitalen Transformation hilft. Die zweite Hälfte des Artikels enthält ein Beispiel für eine Implementierung dieser Architektur auf Azure.
Beschleunigen Sie Ihre DevOps-Einführung mit der einzigartigen Erfahrung unseres DevOps Bootcamps
Einführung von DevOps für die digitale Transformation
Die Schlüsselwörter für bessere, billigere und schnellere Produkte und Dienstleistungen sind Fluss und Wert, und das ist es, was mit einer DevOps-Arbeitsweise erreicht werden soll. Um uns auf die Schaffung von Fluss und Wert bei der Bereitstellung von Produkten und Dienstleistungen zu konzentrieren, verwenden wir die DASA DevOps-Prinzipien als Leitfaden (siehe Abbildung 1).
Abbildung 1: DASA DevOps-Prinzipien (Quelle: DevOps Agile Skills Association)
Diese Grundsätze konzentrieren sich auf Organisationen und die Personen in diesen Organisationen. Sie beschreiben, welche Aktionen, Verhaltensweisen und andere Aspekte von diesen Organisationen verlangt werden, um zu einer DevOps-Arbeitsweise zu wechseln oder diese zu übernehmen. Es würde zu lange dauern, die Prinzipien im Detail zu erklären, aber wir werden sie kurz erläutern, damit Sie die Überlegungen hinter den in diesem Artikel beschriebenen Architekturen verstehen können. Ausführlichere Informationen finden Sie auf der DASA-Website und in den Ressourcen.
Die Grundsätze wurden in der Reihenfolge ihrer Priorität aufgelistet. Das erste konzentriert sich auf die Schaffung von Mehrwert für den Kunden, denn dies ist ein grundlegender Wert für eine Organisation, um in diesem digitalen Zeitalter überleben zu können. Das zweite Prinzip bedeutet, Silos aufzubrechen, indem eine Organisation um Produkte und Dienstleistungen herum strukturiert wird und nicht um Prozesse und Fachwissen. Das dritte Prinzip besagt: "You build it, you run it" und bedeutet, dass Sie für die Produkte und Dienstleistungen verantwortlich sind, bis sie aufhören zu existieren. Prinzip Nummer vier zielt darauf ab, den Arbeitsfluss zu verbessern und die Abhängigkeiten zwischen Teams und Einzelpersonen zu verringern. Um sich in kleinen Schritten verändern zu können, muss ein rigoroser kontinuierlicher Verbesserungsprozess eingeführt werden, wie in Prinzip Nummer fünf beschrieben. Und nicht zuletzt bedeutet kontinuierliche Verbesserung auch, dass alles, was sich wiederholt, wenn möglich automatisiert wird. Auf diese Weise zielt Prinzip sechs darauf ab, die Qualität zu erhöhen und den Arbeitsfluss zu maximieren.
Damit Teams und Einzelpersonen diese Prinzipien anwenden können, müssen sie über eine Organisation verfügen, die darauf ausgerichtet ist, den Wertfluss zum Kunden zu erhöhen, oder sich in diese Richtung entwickeln. Darüber hinaus benötigen sie auch die technischen Ressourcen, die sie bei dieser Aufgabe unterstützen. In den nächsten beiden Abschnitten werden wir uns mit den organisatorischen und technischen Architekturen befassen, die dies ermöglichen.
Organisatorische Befähigung von DevOps-Teams
Betrachtet man ein Unternehmen vor der digitalen Transformation, so spielt die IT eine unterstützende Rolle für das Geschäft (siehe die linke Seite von Abbildung 2). Die Geschäftseinheiten haben einen rückstandsübergreifenden Bedarf, um ihre benötigten Produkte und Dienstleistungen in die Produktion zu bringen. Entwicklung und Betrieb sind in einer Change-and-Run-Organisation und anderen siloartigen Organisationsstrukturen getrennt. Diese Art der Organisation wirkt sich aufgrund von organisatorischen und technischen Abhängigkeiten negativ auf den optimalen Fluss in der Wertschöpfungskette der Softwarebereitstellung aus. Darüber hinaus führen die Silos zu Übergabemomenten und Rückkopplungen im Lieferprozess, was ebenfalls ineffizient ist.
Abbildung 2: Aktuelle und künftige Organisationsarchitektur
In der neuen Situation (siehe rechts in Abbildung 2) sind die Teams um autonome Geschäftsfähigkeiten herum organisiert, was bedeutet, dass sie ihre Produkte und Dienstleistungen entwickeln können, ohne von anderen Entwicklungen gestört zu werden oder zu stören. Die Teams sind funktionsübergreifend, so dass sie ihre Produkte und Dienstleistungen so lange entwickeln und betreiben können, bis sie nicht mehr benötigt werden. Technisch werden sie von einer Selbstbedienungsplattform (Cloud) unterstützt, die es ihnen ermöglicht, rigoros zu automatisieren und schnell zu innovieren, indem sie neue Plattformdienste in ihr Angebot aufnehmen. Dies geschieht in einer schrittweisen Arbeitsweise mit kontinuierlichen Verbesserungen.
DevOps-Teams technisch befähigen
Um Teams die Möglichkeit zu geben, nach den DevOps-Prinzipien zu arbeiten und zu handeln, ist ein hohes und ausgereiftes Maß an Autonomie und Agilität erforderlich. Dies stellt Anforderungen und Einschränkungen an die technische Architektur, aber auch an die Art und Weise, wie Governance und Kontrolle erreicht werden.
DevOps-Teams müssen in der Lage sein, die End-to-End-Verantwortung für ihr Wertversprechen und die entsprechende Implementierung von Architektur und Anwendungen zu übernehmen. Heutzutage sind die meisten Teams sehr gut in der Lage, dies für die traditionelle Softwareentwicklung zu tun und sich auf die Bereitstellung der Anwendung zu konzentrieren.
Eine digitale Transformation, die eine Cloud-Plattform einschließt, bietet neue Möglichkeiten. Die Praktiken müssen einen ähnlichen Ansatz auch für den infrastrukturellen Teil der Softwarelösungen übernehmen. DevOps-Teams werden dabei durch eine Self-Service-Cloud-Plattform unterstützt (siehe Abbildung 3).
Abbildung 3: Logische Architektur der Selbstbedienungsplattform (Cloud)
Vollständige Autonomie durch Infrastruktur-as-code
Moderne Cloud-Plattformen ermöglichen eine vollständige Automatisierung bei der Bereitstellung der von ihnen angebotenen Ressourcen. Diese Automatisierung ermöglicht es einem Team, die infrastrukturellen Aspekte einer Softwarelösung auf die gleiche Weise zu behandeln wie die Implementierung von Geschäfts- und Kundenfunktionen. Bei dieser Praxis der "Infrastructure as Code" werden Skripte und Vorlagen in einem für die Cloud-Plattform spezifischen Format erstellt, das gepflegt und getestet wird und Build- und Release-Pipelines wie herkömmlicher Code verwendet. Dieser Ablauf ermöglicht es einem Team, alle Aspekte der Anwendungsteile zu automatisieren, die sie erstellen und auf Cloud-Ressourcen hosten müssen. Außerdem kann das Team die Infrastruktur kontinuierlich verbessern, da es trivial wird, vorhandene Ressourcen nach Änderungen zu entfernen und neu bereitzustellen, anstatt zuvor bereitgestellte Ressourcen ändern und pflegen zu müssen. Ein Team kann völlig autonom werden, wenn es in der Lage ist, diesen Grad der Automatisierung in Cloud-Lösungen zu erreichen. Das Team kann Ressourcen für diese Lösungen als wertstromspezifische Cloud-Ressourcen bereitstellen und deprovisionieren (siehe den Wertstrom Cloud-Ressourcen A-D in Abbildung 3).
Beibehaltung von Governance und Kontrolle bei voller Autonomie
Die größte Herausforderung bei der Wertschöpfung nach der Einführung der vollständigen Automatisierung der Infrastruktur ist die Governance und Kontrolle über die Cloud-Plattform. Eine Self-Service-Cloud-Plattform sollte den Teams Autonomie und Agilität bieten und gleichzeitig ein angemessenes Maß an Governance und Kontrolle für ein Unternehmen bereitstellen. Während das Team in der Lage sein muss, agil zu sein, schnell zu handeln und unabhängig zu sein, muss das Unternehmen die Vorschriften einhalten, nachvollziehbare Prozesse bereitstellen und die Kontrolle über die Kosten und die Sicherheit des Cloud-Plattform-Hostings haben.
Glücklicherweise bieten Cloud-Plattformen verschiedene Funktionen, um dieses Maß an Kontrolle zu erreichen und gleichzeitig den Teams Selbstbedienungsfunktionen zur Verfügung zu stellen. Sinn und Zweck dieses Ansatzes ist es, den Wertstromteams die Möglichkeit zu geben, ihre eigenen Cloud-Ressourcen im Rahmen der von der Organisation angebotenen und geforderten Einschränkungen bereitzustellen. Das Gegenteil davon ist die Einrichtung einer einzigen Stelle im Unternehmen, z. B. eines Teams, bei der die Teams die benötigten Cloud-Ressourcen anfordern und erwerben müssen. Eine einzige Verwaltungsstelle blockiert und verlangsamt jedoch Teams, die Agilität und Geschwindigkeit wünschen.
Die Self-Service-Cloud-Plattform sollte übergreifende Funktionen bieten (siehe übergreifende Funktionen inAbbildung3), indem sie die der Cloud innewohnenden Funktionen für Überwachung, Kostenmanagement und Sicherheit nutzt. Jede Cloud-Plattform implementiert diese Funktionen auf unterschiedliche Weise. Von einem Cloud-unabhängigen Standpunkt aus betrachtet, sollten die Überwachungsfunktionen es sowohl den Teams als auch dem Unternehmen auf einer aggregierten Ebene ermöglichen, den Zustand und die Sicherheit der gehosteten Lösungen zu überwachen. Dazu gehören die Ressourcennutzung, der Besitz von Ressourcen und der aktive Sicherheitsstatus, um nur einige zu nennen.
Darüber hinaus kann ein gemeinsam nutzbarer Satz von Cloud-Ressourcen eine Struktur- und Abgrenzungsebene für die Teams bieten, auf der sie ihre Lösungen aufbauen können (siehe die gemeinsam genutzten Cloud-Ressourcen in Abbildung 3). Dies kann von gemeinsamen Sicherheitsfunktionen bis hin zu Netzwerktopologien reichen, die sicherstellen, dass bestimmte Qualitäts- und Sicherheitsstandards von den Teams automatisch eingehalten werden.
Beschränkung des Zugangs zu Ressourcen
Ein weiterer Aspekt, den es zu berücksichtigen gilt, ist die Verwendung von Autorisierung und rollenbasierter Zugriffskontrolle. Mithilfe dieser Sicherheitsaspekte ist es möglich, die Rechte von Auftraggebern zur Erstellung von Cloud-Ressourcen oder bestimmten Arten davon zu beschränken. Anstelle der vollständigen Automatisierung, Compliance und Sicherheit könnte man so weit gehen, den regulären Benutzerkonten alle Rechte zu entziehen, mit Ausnahme des reinen Lesezugriffs. Die Rechte zum Erstellen und Verwalten von Ressourcen werden nur an Service-Principals (nicht-menschliche Konten) vergeben, die als Identitäten für Build- und Release-Pipelines zugewiesen werden. Dies erzwingt die Verwendung der Pipelines für die Ressourcenverwaltung und verbietet direkte manuelle Eingriffe, was die Compliance und Nachvollziehbarkeit der Cloud-Lösung sowie das Sicherheitsniveau erhöht. Die strenge Autorisierung kann auf alle Umgebungen oder zumindest auf die kritischen Umgebungen, z.B. die Produktion, angewendet werden. Da kein Mensch Änderungen vornehmen kann und alles automatisiert ist, können Genehmigungsprozesse vereinfacht werden, um die ordnungsgemäße Verwendung von gesegneten Vorlagen und Skripten zu überprüfen. Mit der Zeit könnte sich herausstellen, dass eine Genehmigung gar nicht mehr erforderlich ist. In diesem Fall wird die Abschaffung der Genehmigung die Agilität und Geschwindigkeit der Wertströme noch weiter erhöhen. Die Verwendung strenger Genehmigungen sollte jedoch mit Vorsicht angewandt werden, da sie die Teams stark einschränken können, wenn sie zu rigoros angewandt werden, und einem Team effektiv die notwendigen Privilegien entziehen, damit es seine Cloud-Ressourcen selbst verwalten kann.
Umstellung auf Selbstbedienung mit einem Cloud-Plattform-Team
Ein spezielles Team kann bei der Umstellung auf die Self-Service-Cloud-Plattform helfen. Dieses "Cloud-Plattform-Team" kann die teamübergreifenden Self-Service-Funktionen und -Funktionalitäten beschleunigen. Der Zweck dieses Teams besteht darin, die übergreifenden Funktionen und die gemeinsamen Ressourcen zu implementieren sowie die Teams anzuleiten und ihnen bei der Einführung und Umstellung auf die Selbstbedienungsplattform zu helfen. Das Team kann "gesegnete" Vorlagen und Skripte für die Teams erstellen, die diese bei der Bereitstellung von wertstromgebundenen Ressourcen verwenden können. Diese Automatisierungsartefakte wurden getestet und sicherheitsgehärtet, um sicherzustellen, dass die Sicherheitsgrundlagen für die Teams standardmäßig erfüllt sind, wenn sie bei der Bereitstellung von Build- und Release-Pipelines verwendet werden. Die zugrundeliegenden gemeinsam genutzten Ressourcen geben den Teams genügend Freiraum und gewährleisten gleichzeitig eine sichere und konforme Implementierung der Cloud-Infrastruktur.
Das Cloud-Plattformteam ist ein temporäres Team und sollte sich der Bereitstellung der übergreifenden und gemeinsamen Funktionen widmen, die Wertstromteams einbinden und sich selbst überflüssig machen.
Die Wertstromteams können die Aufgaben des Cloud-Plattformteams als Gemeinschaftsleistung übernehmen. Da alle bereitgestellten Funktionen wie Code behandelt werden, kann die Art und Weise, wie Community-Beiträge geleistet werden, auch für die bereitgestellten Infrastruktur-Artefakte gelten.
Darüber hinaus gehen sie mit gutem Beispiel voran, indem sie das Verhalten und die Einstellung vorleben, die für die neue Arbeitsweise erforderlich sind. Bitte beachten Sie, dass die Auswirkungen auf den kulturellen Wandel nicht unterschätzt werden sollten. Um erfolgreich zu sein, kann es sogar von Vorteil sein, einen speziellen Coach in das Plattformteam aufzunehmen, um diesen Wandel zu beschleunigen.
Implementierung einer Self-Service-Cloud-Plattform auf Azure
In der ersten Hälfte dieses Artikels wurde erläutert, was organisatorisch und technisch erforderlich ist, um die Wertschöpfung und den Wertfluss für den Kunden zu maximieren. Dieser zweite Teil enthält ein Beispiel für eine Implementierung der technischen Architektur in Azure.
Die Microsoft Azure-Plattform in Verbindung mit Azure DevOps (früher bekannt als Visual Studio Team Services) ist gut geeignet, um die Self-Service-Cloud-Plattform zu implementieren. Azure bietet fortschrittliche Ressourcenverwaltungs- und Überwachungsfunktionen. Die Automatisierungs-Engine heißt Azure Resource Manager (ARM) und kann mit Hilfe von ARM-Vorlagen oder der Azure-Befehlszeilen-Schnittstelle (CLI) automatisiert werden. Beides ermöglicht die vollständige Automatisierung der Bereitstellung und Verwaltung von Azure-Ressourcen.
Auf der höchsten Ebene verwendet Azure das Konzept eines Unternehmens und von Abonnements. Das Unternehmen ist eine Repräsentation der Organisation, die Azure nutzt, und seine Abonnements sind administrative Einheiten für Eigentum und Rechte. Die Abonnements stimmen gut mit den Wertströmen überein, bei denen jedes Team Eigentümer oder Mitwirkender sein kann, je nachdem, ob volle oder fast volle Verwaltungsrechte erlaubt sind. Die Ressourcenverwaltung in Azure wird durch Sicherheitsrichtlinien auf verschiedenen Ebenen geregelt. Von der Datenebene bis zur Steuerungsebene können Sie die Autorisierung auf einer grob- und einer sehr feinkörnigen Ebene definieren. Indem Sie den Teams entsprechende Rechte erteilen, können sie alle Ressourcen überall innerhalb des Abonnements oder innerhalb von Ressourcengruppen als Mitwirkende erstellen. Letzteres ist eine Möglichkeit, den Teams die kontrollierte Erstellung von Ressourcen zu ermöglichen, da zusätzliche Berechtigungen auf der Ebene einer Ressourcengruppe festgelegt werden können. Dadurch wird vermieden, dass die Teams volle administrative Rechte für das Abonnement erhalten.
Für die Querschnittsfunktionen verfügt Azure über mehrere Funktionen, die die erforderlichen Überwachungs-, Compliance-, Sicherheits- und Kostenmanagementfunktionen bieten. Azure Monitor, Azure Security Centre und Azure Cost Management sind gebrauchsfertige Funktionen, die Informationen aus und über die Abonnements für die Wertströme kombinieren. Die Governance und Compliance kann auf dieser höheren Aggregationsebene erledigt werden. Azure DevOps ist zwar nicht Teil der Azure Cloud-Plattform an sich, aber es ist der zentrale Punkt für die Organisation der Build- und Release-Pipelines für die Bereitstellung. Aus Gründen der Compliance kann es die vollständige Rückverfolgbarkeit vom Code bis zur Hosting-Umgebung gewährleisten. Azure DevOps kombiniert die Quellcode-Verwaltung mit der Verfolgung von Arbeitselementen und Pipelines zu Umgebungen nach der Genehmigung und dem Passieren von Quality Gates. Durch die Nutzung dieser Funktionen können Teams die Compliance einhalten, da jede Änderung am Code und an den Umgebungen in Azure DevOps nachverfolgt und geprüft wird.
Abbildung 4: Übergreifende Funktionen in Azure
Das nächste Beispiel in Abbildung 5 veranschaulicht, wie gemeinsam genutzte Cloud-Ressourcen genutzt werden können, um eine sichere Standard-Self-Service-Cloud-Plattform bereitzustellen. Die allgemeine Idee des Szenarios in diesem Beispiel ist es, den Teams die Bereitstellung von Webressourcen zu ermöglichen und gleichzeitig die Kontrolle über die öffentliche Verfügbarkeit und die Sicherung ihrer Ressourcen zu behalten. Die Absicht ist, Freiheit zu gewähren und vor unerwünschter Offenlegung und Exposition interner, über das Netzwerk erreichbarer Ressourcen zu schützen.
Abbildung 5: Beispiel für eine hybride Self-Service-Plattform, die auf Azure implementiert wurde
Jeder Wertstrom und jedes Team erhält sein eigenes Abonnement. Innerhalb dieser Abonnements werden virtuelle private Netzwerke erstellt, um die Wertströme voneinander zu isolieren. Innerhalb der Abonnements werden Hosting-Pläne erstellt und das Team kann Webanwendungen nach eigenem Ermessen bereitstellen. Das Design dieser Webanwendungen lässt keine ausgehende Konnektivität zu. Dadurch wird vermieden, dass unmittelbar nach der Erstellung etwas preisgegeben wird, und es wird ein sicherer, standardmäßiger Ansatz geboten.
Um Webanwendungen zum ersten Mal freigeben zu können, müssen Änderungen auf der Ebene der gemeinsamen Ressourcen vorgenommen werden. Dies ist zwar bis zu einem gewissen Grad blockierend, bietet aber die Kontrolle darüber, welche Webanwendung wann auf das öffentliche Internet zugreifen darf. Auf diese Weise können Sie sicherstellen, dass nur genehmigte und validierte Webressourcen offengelegt werden. Dies muss nur einmal bei der ersten Freigabe geschehen, sollte also weder eine große noch eine dauerhafte Hürde im Wertstrom darstellen. Die technische Implementierung für die Beibehaltung des Zugriffs auf öffentlich zugängliche Webanwendungen ist die Web Application Firewall und das Gateway. Diese Azure-Ressource muss so konfiguriert werden, dass sie eingehenden und ausgehenden HTTP- und HTTPS-Verkehr zulässt, und zwar durch automatisierte Skripte und natürlich nach Genehmigung. Indem diese Ressource auf einer gemeinsam genutzten und kontrollierten Ebene gehalten wird, behält das Unternehmen die Kontrolle über web-exponierte Lösungen, während die Teams die Freiheit haben, beliebige Ressourcen bis zu dem Punkt zu erstellen, an dem sie extern freigegeben werden müssen.
Eine weitere Sicherheitsmaßnahme in diesem Beispiel ist die Verwendung von Application Service Environments (ASE). Das Szenario zeigt die Konnektivität zu einer lokalen Infrastruktur über ein Virtual Private Network (VPN) Gateway. Es ist nicht trivial, einen VPN-Tunnel zu firmeninternen Netzwerken zu erstellen. Dadurch, dass die Verbindung auf einer gemeinsamen Ressourcenebene gehalten wird, ist sie für die verschiedenen Wertströme und Teams wiederverwendbar und bietet einen einzigen Zugangspunkt zum lokalen Netzwerk. Das VPN Gateway bietet einen weiteren Kontrollmechanismus zur Sicherung des Zugriffs auf die firmeninternen Ressourcen, indem es erweiterte Zugriffsregeln für den erlaubten Netzwerkverkehr zu und von ihm festlegt. Jedes Value Stream Virtual Network erhält ein Peering zum gemeinsamen virtuellen Netzwerk, das die VPN- und Web Application Gateways umfasst.
Die gemeinsam genutzten Ressourcen werden vom anfänglichen Cloud-Plattform-Team erstellt, das sich wie alle anderen Wertströme verhält und arbeitet. Das Team existiert zwar noch, stellt aber einen anderen Wertstrom bereit, der aus den gemeinsam genutzten Ressourcen der Self-Service-Plattform besteht, die von den anderen Teams und Wertströmen genutzt werden können. In ähnlicher Weise werden auch die zugrunde liegenden VNETs und Peerings nicht von den Teams selbst, sondern vom Plattformteam erstellt.
Zusammenfassung
Unternehmen, die bessere und billigere Produkte und Dienstleistungen schneller bereitstellen wollen, müssen eine digitale Transformation vornehmen. Sie sollten eine DevOps-Arbeitsweise einführen oder darauf umsteigen, um den Wertfluss zum Kunden zu erhöhen. Um dies zu erreichen, sind organisatorische und technische Änderungen erforderlich, um Teams und Einzelpersonen zu befähigen. Ein zeitlich befristetes Cloud-Plattform-Team kann dabei helfen, die Umstellung zu bewerkstelligen. Die technischen Ressourcen können in Azure implementiert werden, wie das Beispiel einer Self-Service-Plattform in Azure zeigt. Wenn beide Aspekte (Organisation und Technik) zusammenhängend angewandt werden, sind die Teams und Einzelpersonen eines Unternehmens in der Lage, die Ziele der digitalen Transformation zu erreichen.
Beschleunigen Sie Ihre DevOps-Einführung mit der einzigartigen Erfahrung unseres DevOps Bootcamps

Verfasst von
Martijn van der Sijde
Contact