Freigeben über


Verwalten von Cloud-Skalierungsanalysen

Heute hat DevOps die Kultur der Meinung und Arbeit von Menschen verschoben und die Rate beschleunigt, mit der Unternehmen Wert erzielen, indem Sie Einzelpersonen und Organisationen dabei helfen, nachhaltige Arbeitspraktiken zu entwickeln und aufrechtzuerhalten. DevOps kombiniert Entwicklung und Betrieb und ist häufig mit Software-Engineering-Tools verknüpft, die kontinuierliche Integration (CI) und kontinuierliche Bereitstellung (Continuous Delivery, CD) unterstützen. Zu diesen Tools und Methoden gehören Quellcodemanager (z. B. Git, Apache Subversion oder Team Foundation Version Control) und automatische Build- und Übermittlungsmanager (z. B. Azure-Pipelines oder GitHub-Aktionen).

DevOps in Kombination mit Observability ist der Schlüssel zur Bereitstellung einer agilen und skalierbaren Plattform. DevOps bieten Teams die Möglichkeit, Quellcodeverwaltung, CI/CD-Pipelines, Infrastruktur als Code, Workflows und Automatisierung zu implementieren. Während die Observability Geschäftsinhaber, DevOps-Ingenieure, Datenarchitekten, Dateningenieure und Site Reliability Engineers (SREs) in die Lage versetzt, Probleme auf automatisierte Weise zu erkennen, vorherzusagen, zu verhindern und zu lösen, um Ausfallzeiten zu vermeiden, die andernfalls Produktionsanalysen und KI gefährden würden.

Quellcodeverwaltung

Die Quellcodeverwaltung stellt sicher, dass Code und Konfigurationen beibehalten werden und dass Änderungen nachverfolgt und versioniert werden. Die meisten Quellcodeverwaltungssysteme verfügen auch über integrierte Prozesse zur Überprüfung und Arbeit in verschiedenen Zweigen eines Code-Repositorys. Derzeit ist git der beliebteste Quellcodeverwaltungstyp, der ein verteiltes Versionssteuerungssystem ist, mit dem Einzelpersonen offline arbeiten und mit zentralen Repositorys synchronisieren können. Git-Anbieter verwenden in der Regel auch Branches und folgen der Pull-Request-Leitlinie zur Unterstützung des Änderungs- und Überprüfungsprozesses.

Verzweigungen isolieren Änderungen oder Funktionsentwicklungen, ohne dass sich dies auf andere Arbeiten auswirkt, die gleichzeitig auftreten. Die Verwendung von Zweigen sollte gefördert werden, um Features zu entwickeln, Fehler zu beheben und sicher mit neuen Ideen zu experimentieren. Pull-Requests führen Änderungen von einem Branch in den Standard-Branch zusammen und unterstützen einen kontrollierten Review-Prozess. Für Sicherheitszwecke sollte die Hauptzweigung Pullanforderungen verwenden, um Codeüberprüfungen sicherzustellen.

Von Bedeutung

Befolgen Sie die folgenden Richtlinien für Cloud-Analyse-Repositories im großen Maßstab:

  • Sichern Sie den Hauptzweig des Repositorys, indem Sie Verzweigungen und Pull-Requests verwenden, um eine kontrollierte Überprüfung sicherzustellen.
  • Azure DevOps- oder GitHub-Repositorys sollten für die Quellcodeverwaltung verwendet werden, um Änderungen am Quellcode nachzuverfolgen und mehreren Teammitgliedern das gleichzeitige Entwickeln von Code zu ermöglichen.
  • Anwendungscode- und Infrastrukturkonfigurationen sollten in ein Repository eingecheckt werden.

CI/CD-Pipelines

CI ermöglicht Es Teams, Quellcode automatisch zu testen und zu erstellen und schnelle Iterationen und Feedbackschleifen zu ermöglichen, um eine hohe Codequalität in CD sicherzustellen. Pipelines sind Möglichkeiten, die CI von Änderungen (Softwarecode oder Infrastrukturcode) und CD der gepackten/kompilierten Änderungen zu konfigurieren. Dies wird auch als Build und Release bezeichnet. Die CD beschreibt die automatische Bereitstellung von Anwendungen in einer oder mehreren Umgebungen. CD folgt in der Regel einem CI-Prozess und verwendet Integrationstests, um die gesamte Anwendung zu validieren.

Pipelines können mehrere Phasen mit verschiedenen Aufgaben enthalten und sowohl einfache als auch komplexe Genehmigungsabläufe umfassen, um die Compliance und Validierung sicherzustellen. Basierend auf den Einstellungen können Pipelines auch mit verschiedenen automatischen Triggern konfiguriert werden. Für die Implementierung im Unternehmensmaßstab und KI-Implementierung sollten die Produktionsschritte immer eine menschliche Vorabgenehmigung haben, wie dies im Betriebsmodell integriert ist. CI/CD-Pipelines sollten mit GitHub-Aktionen oder Azure-Pipelines erstellt werden, und sie sollten automatisierte Trigger sein.

Infrastruktur als Code

Der Begriff Code in IaC führt häufig zu Bedenken bei IT-Mitarbeitern ohne Entwicklerhintergrund, doch bezieht sich IaC nicht darauf, Code so zu schreiben, wie es typische Softwareentwickler tun. Es übernimmt jedoch viele der gleichen Tools und Prinzipien aus den Softwareentwicklungsprozessen, um Infrastruktur in einem vorhersehbaren Format zu liefern.

IaC unterstützt die Bereitstellung, Konfiguration und Verwaltung der Infrastruktur als Teil einer DevOps-Pipeline mit vollständigen Änderungssteuerelementen, Überwachungsverlauf, Tests, Validierungen und Genehmigungsprozessen, um sicherzustellen, dass Aufgaben an die entsprechenden Rollen für das Projekt delegiert werden können, ohne die Sicherheit und Compliance zu beeinträchtigen.

Die beiden Ansätze für IaC sind deklarativ und imperativ.

  • Deklarativ bezieht sich auf die Angabe des gewünschten Zustands der Infrastruktur und darauf, dass eine Orchestrierungs-Engine die erforderlichen Aktionen ausführt, um den gewünschten Zustand zu erreichen. In Azure erfolgt dies mit Azure Resource Manager-Vorlagen. Für diesen Ansatz stehen auch Abstraktionsebenen von Drittanbietern wie Terraform zur Verfügung.

  • Der imperative Ansatz bezieht sich auf das Ausführen bestimmter Befehle in einer definierten Reihenfolge. Für Azure kann dies mit der Befehlszeilenschnittstelle oder PowerShell erreicht werden, aber Software-Entwicklerkits für native Programmiersprache, z. B. .NET, Python und Java, sind auch verfügbar, wenn integrierte Lösungen erforderlich sind.

In Azure Resource Manager-Vorlagen befindet sich die Kernbereitstellung im Ressourcenabschnitt , und die Konfiguration der einzelnen Ressourcen wird in einem Eigenschaftenabschnitt definiert. Bei einer Azure Data Lake Storage Gen2 sieht die Konfiguration wie folgt aus:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.MachineLearningServices/workspaces/datastores",
            "name": "[concat(parameters('workspaceName'), '/', parameters('datastoreName'))]",
            "apiVersion": "2020-05-01-preview",
            "location": "[parameters('location')]",
            "properties": {
                "DataStoreType": "adls-gen2",
                "SkipValidation": "[parameters('skipValidation')]",
                "ClientId": "[parameters('clientId')]",
                "ClientSecret": "[parameters('clientSecret')]",
                "FileSystem": "[parameters('fileSystem')]",
                "AccountName": "[parameters('accountName')]",
                "TenantId": "[parameters('tenantId')]",
                "ResourceUrl": "[parameters('resourceUrl')]",
                "AuthorityUrl": "[parameters('authorityUrl')]"
            }
        }
    ]
}

Von Bedeutung

Jede Ebene von Cloud-Skalenanalysen wie Datenverwaltungs-Zielzone, Datenlandungszonen oder Datenanwendungen (die Datenprodukte erstellen) sollten mit einer deklarativen Sprache wie Azure Resource Manager oder Terraform definiert werden, in ein Repository eingecheckt und über CI/CD-Pipelines bereitgestellt werden. Auf diese Weise können Teams Änderungen an der Infrastruktur und Konfiguration von Azure nachverfolgen und versionieren und gleichzeitig verschiedene Architekturebenen unterstützen, um agil automatisiert zu werden. Dieser Leitfaden führt Teams dazu, Git-Repositorys zu verwenden, um immer Einblicke in den Zustand bestimmter Azure-Bereiche zu erhalten.

Workflows und Automatisierung

Teams sollten CI/CD-Pipelines in mehreren Stufen verwenden, um sicherzustellen, dass der entwickelte Code fehlerfrei und für die Produktion bereit ist. Einige bewährte Methoden sind eine Entwicklungsumgebung, eine Testumgebung und eine Produktionsumgebung. Diese Phasen sollten auch in Azure widerzuspiegeln sein, indem separate Dienste für jede Umgebung verwendet werden.

Das Plattformteam ist dafür verantwortlich, Bereitstellungsvorlagen bereitzustellen und zu verwalten, um schnell innerhalb einer Organisation zu skalieren und Bereitstellungen für Teams zu vereinfachen, die mit IaC nicht vertraut sind. Diese Vorlagen dienen als Basislinie für neue Artefakte innerhalb des Szenarios und müssen im Laufe der Zeit beibehalten werden, um bewährte Methoden und allgemeine Standards innerhalb des Unternehmens darzustellen.

Bereitstellungen für Tests und Produktion sollten nur über eine CI/CD-Pipeline und eine Dienstverbindung mit erhöhten Berechtigungen verwaltet werden, um allgemeine bewährte Methoden (z. B. Azure Resource Manager-Vorlagen) zu erzwingen.

Vorsicht

Datenanwendungsteams sollten nur Lesezugriff auf Test- und Produktionsumgebungen haben, und Bereitstellungen für diese Umgebungen sollten nur über CI/CD-Pipelines und Dienstverbindungen mit erhöhten Berechtigungen ausgeführt werden. Um den Weg zur Produktion zu beschleunigen, sollten Datenanwendungsteams Schreibzugriff auf die Entwicklungsumgebung haben.

Nächste Schritte

Plattformautomatisierung