Architekturstrategien für die Standardisierung von Tools und Prozessen

Gilt für diese Empfehlung aus der Checkliste „Operational Excellence“ des Azure Well-Architected Framework:

OE:04 Optimieren Sie die Softwareentwicklungs- und Qualitätssicherungsprozesse, indem Sie branchenerprobte Verfahren für Entwicklung und Tests befolgen. Um eine eindeutige Rollenzuweisung zu gewährleisten, standardisieren Sie Vorgehensweisen für alle Komponenten, wie etwa Werkzeuge, Quellcodeverwaltung, Anwendungsentwurfsmuster, Dokumentation und Stilhandbücher.

In diesem Leitfaden werden die Empfehlungen zum Definieren von Standards für Softwareentwicklungstools und -prozesse beschrieben. Die Definition konsistenter Methoden führt zu einem effizienten Workloadteam und einer qualitativ hochwertigen Arbeit. Leistungsstarke Teams verwenden branchenerprobte Tools und Prozesse, um verschwendeten Aufwand und potenzielle Codefehler zu minimieren.

Der erste Schritt zur Optimierung der Entwicklungsmethoden besteht darin, Tools und Prozesse zu standardisieren. Verwenden Sie nach Möglichkeit branchenbewährte Lösungen, anstatt interne Lösungen zu entwickeln. Um Ihre Praktiken weiter zu optimieren, übernehmen Sie Low-Code- und No-Code-Tools. Mit diesen Tools können Sie sich auf Ihre Anwendung konzentrieren und Zeit sparen. Implementieren Sie für alle Tools und Prozesse, die Sie standardisieren, Schulungen, damit Ihre Teams sie verstehen und effizient nutzen können. Berücksichtigen Sie die folgenden Empfehlungen, um Standards zu definieren, die zur Optimierung Ihrer Entwicklungsmethoden beitragen.

Verwenden Sie bekannte und ausgereifte Off-the-Shelf-Werkzeuge

Verwenden Sie bekannte und ausgereifte Off-the-Shelf-Werkzeuge und standardisieren Sie ihre Verwendung. Hochwirksame Entwicklungsteams nutzen die besten Tools der Klasse. Dieser Ansatz minimiert die Notwendigkeit, Lösungen für Planung, Entwicklung, Tests, Zusammenarbeit und kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) zu entwickeln. Viele Unternehmen bieten Entwicklern die Wahl zwischen einigen Tools, aber alle Optionen sind Standardtools für die Organisation und werden intern überprüft. Wählen Sie vor allem Tools aus, die den Anforderungen für Ihre Workload entsprechen. Off-the-Shelf-Werkzeuge sollten die folgenden Funktionen bereitstellen:

  • Arbeitsplanung und Backlogverwaltung

  • Versionskontrolle und Repositorys

  • CI/CD-Pipelines

  • Tests, z. B. Integration, Rauch, synthetischer Benutzer, Simulation, Chaos und andere Qualitätstests

  • Codeentwicklung

In einigen Fällen kann ein Tool oder eine Suite von Tools mehrere Funktionen bereitstellen. Stellen Sie sicher, dass Sie die Funktionen Ihrer Tools und deren Einschränkungen verstehen, damit sie Ihre Anforderungen über Funktionen hinweg erfüllen.

Ermitteln Sie, ob Sie in teure Tools oder Premiumversionen von Tools investieren sollten. Berücksichtigen Sie Zeit und Aufwand für die Entwicklung eigener Lösungen im Vergleich zu den Funktionen, die die Premium-Tools bieten. Berücksichtigen Sie Einmalkosten im Vergleich zu wiederkehrenden Kosten. In den meisten Fällen bieten Standardtools ihrem Team einen höheren Wert.

KI-Potenzial: Vergleichen Sie Standardlösungen, indem Sie mithilfe von KI Ihre Projektdokumentation und Designdateien analysieren. Verwenden Sie Copilot, um Faktoren wie Kosten, Lizenzierung, Support, ROI und Ausrichtung auf die Standards Ihrer Organisation zu bewerten. Führen Sie hochwertige Lösungen schnell ein und reduzieren Sie den Wartungsaufwand, indem Sie eine fortschrittliche agentische Lösung verwenden, um Tool-Updates, neue Angebote und Abkündigungen zu überwachen.

Verwenden Sie Low-Code-, No-Code- und KI-Tools, wenn sinnvoll. Low-Code- und No-Code-Tools sparen erfahrene Entwickler Zeit, indem sie es ihnen ermöglichen, funktionen einfach zu verbinden, anstatt den gesamten Codeentwicklungsprozess auszuführen. Diese Tools ermöglichen es auch Teammitgliedern des Workloads, die möglicherweise keine ausgebildeten Entwickler sind, zur Bedienung des Workloads beizutragen. KI-Tools können bei der Entwicklung, Überprüfung und Optimierung von Code hilfreich sein.

Verzweigungsstrategie standardisieren

Wählen Sie nach Möglichkeit ein trunkbasiertes Modell aus. Trunkbasierte Verzweigung ermöglicht die Synchronisierung des Workload-Entwicklungsteams und fördert die kontinuierliche Bereitstellung. Definieren Sie Branch-Richtlinien, um wichtige Branches wie den Main-Branch zu schützen. Weitere Informationen finden Sie unter Übernehmen einer Git Branching-Strategie und Branch-Richtlinien und -Einstellungen.

KI-Chance: Verringern Sie den Aufwand durch Standardserzwingungs- und Dokumentationsupdates, während Sie Entwicklern Anleitungen zum optimalen Repositorydesign bieten. KI analysiert Ihre Codebasis, um das richtige Verzweigungsmodell und die richtige Struktur basierend auf Abhängigkeiten und Buildmustern zu empfehlen. Verbessern Sie die Auffindbarkeit mit KI-generierten API-Dokumentationen und Diagrammen. Optimieren Sie Pull Requests durch die Vorhersage von Mergekonflikten, die Durchsetzung von Vorlagen und automatische Compliance-Prüfungen.

Bewerten von Metriken zur Quantifizierung der Entwicklungseffektivität

Softwareentwicklungs- und Qualitätssicherungsteams können sich nur verbessern, wenn sie ihre Wirksamkeit quantifizieren können. Um die Effektivität zu quantifizieren, müssen sie die Metriken identifizieren, die die Geschwindigkeit des Entwicklers messen und KPIs definieren. Beispiele für diese Metriken sind:

  • Bereitstellungshäufigkeit: Die Anzahl der Bereitstellungen, die jeder Entwickler täglich bereitstellt.

  • Lead Time: Die Zeit, die ein Task oder eine User Story benötigt, um vom Backlog bis zur Produktionsbereitstellung zu gelangen.

  • Mittlere Zeit für die Lösung: Die durchschnittliche Zeit, die zum Beheben von Fehlern oder Fehlern im Code aufgewendet wird.

  • Änderungsfehlerrate: Der Prozentsatz der Änderungen, die zu einem Fehler führen.

Damit die Beteiligten und das Workloadteam die Geschwindigkeit problemlos nachverfolgen können, visualisieren Sie KPIs mithilfe von Dashboards oder anderen Berichterstellungstools.

Standardisieren, wie Ihr Workloadteam Code schreibt, überprüft und dokumentiert

Standardisieren Sie, wie Ihr Workloadteam Code schreibt, überprüft und dokumentiert, indem Sie Stilrichtlinien verwenden. Ein Standardstil erleichtert die Zusammenarbeit und hilft beim Onboarding neuer Entwickler. Um effektiv zu arbeiten, müssen neue Entwickler wissen, wie das Workloadteam arbeitet. Ein Leitfaden mit klar definierten Standards kann den Schulungsprozess erleichtern. Definieren Sie im Stilhandbuch Standards für Entwicklungssprachen, Bibliotheken, Frameworks und andere Konventionen.

Wenn es praktisch ist, verwenden Sie Tools zum Erzwingen von Codeformatierungsstandards. Visual Studio bietet z. B. mehrere Tools , mit denen Code auf Stil, Qualität, Wartung, Entwurf und andere Probleme überprüft wird. Für Infrastruktur als Code (IaC) können Sie Checkov oder Terrascan für Terraform verwenden.

Um Konsistenz zu gewährleisten und potenzielle Verwirrungen zu vermeiden, sollten die Stilrichtlinien Standardbenennungskonventionen für Artefakte, Umgebungen, Verzweigungen, Builds und Durchläufe enthalten.

Außerdem sollten Sie Richtlinien und Standards für die zulässige Varianz in Ihren Umgebungen festlegen. Wenn es neue Sprachen, Frameworks oder andere Technologien gibt, die Teammitglieder zur Standardliste hinzufügen möchten, implementieren Sie einen Prozess für die Verwendung dieser Tools in einer Sandkasten- oder niedrigeren Umgebung. Testen Sie ihre Rentabilität, und ersetzen Sie gegebenenfalls vorhandene Technologien.

Verwenden Sie Architekturentscheidungsdatensätze (ADRs), um eine historische Aufzeichnung der Designentscheidungen Ihres Workloadteams zu behalten. ADRs helfen Ihren Teams, ein neues Verständnis der Arbeitsauslastung zu erhalten. Sie helfen auch neuen Teammitgliedern, mehr über die Design-Entscheidungen zu erfahren, die während des Lebenszyklus des Workloads getroffen werden. Stellen Sie sicher, dass ADRs versionsgesteuert sind.

Geben Sie in Ihrem ADR Folgendes an:

  • Spezifische Tools und Technologien, z. B. mithilfe von SQL oder NoSQL, die Ihr Team auswählt.

  • Die Gründe für die Entscheidungen Ihres Teams.

  • Weitere optionen, die berücksichtigt wurden, was dazu beiträgt, die endgültige Entscheidung zu kontextualisieren.

  • Funktionale und nicht funktionsfreie Anforderungen, die in Entscheidungen berücksichtigt werden.

  • Der Kontext des Entscheidungsprozesses, wie das Problem, das behoben wurde.

KI-Chance: Identifizieren Sie Abhängigkeiten, die herkömmliche Codeüberprüfungen häufig verpassen und die in der Regel nur bei Vorfällen oder Bereitstellungsfehlern auftreten.

Erfassen Sie explizite Abhängigkeiten mit Tools wie SonarQube, Roslyn und NDepend. Identifizieren Sie nicht dokumentierte oder implizite Abhängigkeiten mithilfe von GitHub Copilot, um die Codebasis und die referenzübergreifende Entwurfsdokumentation zu analysieren. Dieser Prozess hält Ihre Architekturdokumentation auf dem neuesten Stand.

Verwenden Sie für erweiterte Lösungen einen agent-basierten Ansatz, der historische Bauprotokolle, Vorfallprotokolle, Zeitpläne der Bereitstellung und Codebasismomentaufnahmen erfasst, um forensische Analysen im Laufe der Zeit zu analysieren.

Implementieren von Standards für die Behandlung von technischen Schulden

Entwickeln Sie eine Denkweise, dass technische Schulden absichtlich und für die Ergebnisse Ihres Workload-Teams notwendig sind. Diese Denkweise motiviert Ihr Team, den technischen Aufwand regelmäßig zu berücksichtigen und anzugehen, um eine Akkumulation zu vermeiden. Behandeln Sie technische Schulden als regelmäßig wiederkehrende Aufgabe im Backlog.

Angenommen, Ihr Team hat sich auf eine Bibliothek festgelegt. Im Laufe der Zeit müssen Sie zu einer anderen Bibliothek für neue Funktionen in der Workload wechseln. Dieser Übergang könnte zu technischen Schulden führen. Häufig können Übergänge wie dieser das Workload-Team dazu zwingen, zwei Technologien zu unterstützen, weil sie nicht vollständig reibungslos übergehen können. Das Workloadteam muss den Übergang priorisieren, weil Stakeholder zufrieden sind und weniger wahrscheinlich die technische Verschuldung berücksichtigen, wenn die Arbeitslast die neue Funktionalität erreicht.

KI-Chance: Identifizieren Sie technische Schulden, quantifizieren Sie ihre Auswirkungen und rechtfertigen Sie Abhilfemaßnahmen für die Beteiligten. Beginnen Sie mit off-the-shelf Tools wie CodeScene, Stepsize, GitHub Dependabot, WhiteSource und Snyk's DeepCode, die weniger zu implementieren sind. Um zusätzlichen Mehrwert zu erzielen, sollten Sie ein agentenbasiertes System verwenden, um Ihre Codebasis zu analysieren, Ergebnisse mit Telemetrie- und Incidentdaten zu korrelieren, Erkenntnisse außerhalb von Microsoft einzubinden, Änderungen im Ökosystem nachzuverfolgen und Entwickler zu benachrichtigen, wenn aktuelle Abhängigkeiten Risiken mit sich bringen.

Standardisieren, wie Sie die Versionsverwaltung auf Ihre Artefakte anwenden

Standardisieren Sie, wie Sie die Versionsverwaltung auf Ihre Artefakte anwenden und wie versionsverwaltung intern und extern verfügbar gemacht wird. Beispielsweise sollten clientseitige Systeme ihre ausgeführte Version auf der Benutzeroberfläche verfügbar machen. Diese Technik ist hilfreich, wenn das Workloadteam Probleme behebt, da der Kunde auf einfache Weise kommunizieren kann, welche Version sie verwenden. REST-Schnittstellen können Versionen für bestimmte Komponenten oder Datenbanken verfügbar machen. Sie können eine bestimmte Tabelle in den Metadaten für ein Schema verwenden, um die Schemaversion verfügbar zu machen.

Verwenden Sie branchenübliche Anwendungsdesignmuster , um sicherzustellen, dass Ihre Anwendung zuverlässig, leistungsfähig und sicher ist. Verwenden Sie diese Muster, um Zeit und Aufwand im Vergleich zur Entwicklung Eigener Lösungen für Ihre Anwendung zu sparen. Wählen Sie die Muster aus, die zu Ihrer Workload passen. Überprüfen Sie regelmäßig Entwurfsmuster, um sicherzustellen, dass Sie die richtigen Muster verwenden, während sich Ihre Workload weiterentwickelt.

Einen Shift-Left-Ansatz beim Testen implementieren

Implementieren Sie einen Shift-Left-Ansatz für Tests, indem Sie Komponententests frühzeitig und häufig während des gesamten Entwicklungsprozesses durchführen. Häufige Tests in jeder Entwicklungsumgebung helfen Entwicklern, Vertrauen in ihre Anwendungen zu gewinnen. Berücksichtigen Sie die folgenden Prinzipien bei der Erstellung Ihrer Teststrategie mit einem Shift-Left-Ansatz:

  • Schreiben Sie Tests auf der niedrigsten Ebene möglich. Bevorzugen Sie Tests mit den wenigsten externen Abhängigkeiten, und führen Sie Tests als Teil des Builds aus.

  • Schreiben Sie einmal Tests, und führen Sie Tests überall aus, einschließlich Der Produktion. Schreiben Sie Tests, die Sie in jeder Entwicklungsumgebung ausführen können, ohne Faktoren zu berücksichtigen, die für eine Umgebung spezifisch sind, z. B. verschlüsselte Schlüssel oder Konfigurationen.

  • Entwerfen Sie Ihre Arbeitsauslastung für Tests. Wenn Sie Ihre Anwendung entwickeln, müssen Sie die Testbarkeit als Anforderung festlegen.

  • Behandeln Sie Testcode als Anwendungscode. Wenden Sie die gleichen Qualitäts- und Entwicklungsstandards auf Anwendungscode und Testcode an. Speichern Sie Testcode zusammen mit Anwendungscode. Entwickeln und pflegen Sie Testcode zusammen mit Anwendungscode. Um die Qualität der Tests sicherzustellen, verwerfen Sie Tests, die nicht zuverlässig sind.

  • Berücksichtigen Sie die Verantwortung für Tests, die auf der Verantwortung für Workloads basiert. Ihr Workloadteam besitzt seine Tests und sollte sich nicht auf andere Teams verlassen, um ihren Code zu testen.

  • Automatisieren Sie Tests so weit wie möglich. Automatisierter Code entlastet Ihr Workloadteam und erzwingt konsistente Qualität.

Implementieren Sie eine Vielzahl von Testtypen, z. B. Komponenten-, Rauch-, Integrations- und Akzeptanztests. Für einen detaillierten Überblick über diese Arten von Tests siehe den Abschnitt Tests des Leitfadens für die Lieferkette der Arbeitslast.

KI-Chance: Entwickeln Sie Ihre Testsuite und Testumgebung basierend auf realen Nutzungs- und Szenarien, um die Qualität früher im Lebenszyklus zu verbessern und eine umfassende Kundenabdeckung sicherzustellen.

Erstellen Sie zweckorientierte Testumgebungen mit den richtigen Änderungen, Abhängigkeiten und anwendbaren Mock Services-Implementierungen, um eine bestimmte Änderung zu überprüfen. Beginnen Sie mit einer Bibliothek mit Vorlagen und Mock-Diensten, und entwickeln Sie sich dann zur autonomen Bereitstellung von Umgebungen aus benutzerdefinierten IaC ohne Entwicklereingabe.

KI kann wiederkehrende Muster bei manuellen Tests erkennen, einschließlich explorativer Sitzungen und Benutzerakzeptanztests. Automatisieren Sie vorab überprüfte allgemeine Pfade mithilfe von KI-generierten Tests.

Stellen Sie der KI Vorfallbeschreibungen, Postmortems und Stacktraces zur Verfügung, damit sie Vorfalldaten in proaktive Tests überführen kann, die Ihren Standards und Compliance-Anforderungen entsprechen. Um qualitativ hochwertige Testfälle zu erstellen, sollten Sie eine agentenbasierte Lösung in Betracht ziehen, die auf Vorfallsdaten und historischen Testläufen basiert.

Fordern Sie DevSecOps-Methoden als Teil Ihrer Standardbetriebsverfahren an. Ihr Workloadteam sollte die Sicherheitspraktiken im Zusammenhang mit der Softwareentwicklung und Qualitätssicherung verstehen. Sie müssen diese Praktiken ohne Ausnahme befolgen. Weitere Informationen finden Sie im Leitfaden zur Sicherheitsentwicklung.

Implementieren von Standards für Benennungs- und Kategorisierungsressourcen

Das Implementieren von Tagging- und Benennungskonventionen ist eine bewährte Methode zum Verwalten und Organisieren von Azure-Ressourcen. Tagging- und Benennungskonventionen helfen ihnen, Ressourcen basierend auf allgemeinen Attributen wie Umgebung, Anwendung, Besitzer oder Kostenstelle zu identifizieren, zu klassifizieren und zu gruppieren. Sie ermöglichen außerdem Sicherheit, Automatisierung, Berichterstellung und Governance von Ressourcen über Abonnements und Ressourcengruppen hinweg.

Einige der Vorteile der Verwendung standardisierter Tagging- und Benennungskonventionen sind:

  • Sie bieten Konsistenz und Klarheit für die Ressourcenidentifikation und -verwaltung, wodurch die Ermittlung und Suche über das Azure-Portal, PowerShell, CLI und APIs erleichtert wird.
  • Sie ermöglichen das Filtern und Gruppieren von Ressourcen für Abrechnungs-, Überwachungs-, Sicherheits- und Compliancezwecke.
  • Sie unterstützen die Verwaltung des Ressourcenlebenszyklus, z. B. Bereitstellung, Außerbetriebnahme, Sicherung und Wiederherstellung.
  • Sie sind für Sicherheitszwecke unerlässlich. Wenn Sie auf einen Sicherheitsvorfall stoßen, ist es wichtig, betroffene Systeme, die Funktionen, die diese Systeme unterstützen, und die potenziellen geschäftlichen Auswirkungen schnell zu identifizieren.

Weitere Informationen zur Verwendung von Benennungskonventionen für Ihre Cloudressourcen finden Sie unter Definieren Ihrer Benennungskonvention. Weitere Informationen zum Anwenden von Metadatentags auf Ihre Cloudressourcen finden Sie unter Define your tagging strategy.

Azure-Unterstützung

  • Azure DevOps ist eine Sammlung von Diensten, mit denen Sie eine zusammenarbeitende, effiziente und konsistente Entwicklungspraxis erstellen können. Azure DevOps bündelt folgende Lösungen:

    • Azure Pipelines bietet Build- und Releasedienste zur Unterstützung der CI/CD Ihrer Anwendungen.

    • Azure Boards ist ein webbasiertes Arbeitsverwaltungstool, das Agile-Praktiken wie Scrum und Kanban unterstützt.

    • Azure Repos ist ein Versionssteuerungstool, das das Git Verteilte Versionssteuerungssystem und das Team Foundation Version Control System unterstützt.

    • Azure Test Plans ist eine browserbasierte Testverwaltungslösung, die Funktionen bereitstellt, die für geplante manuelle Tests, Benutzerakzeptanztests, explorative Tests und Sammeln von Feedback von Projektbeteiligten erforderlich sind.

    • Azure Artifacts wird verwendet, um Entwicklern die effiziente Freigabe ihres Codes und die Verwaltung ihrer Pakete zu ermöglichen.

  • GitHub Actions for Azure ist ein Tool, mit dem Sie CI/CD-Prozesse automatisieren können. Sie wird direkt in Azure integriert, um Bereitstellungen zu vereinfachen. Sie können Workflows erstellen, die jede Pullanforderung an Ihr Repository erstellen und testen oder zusammengeführte Pullanforderungen in der Produktion bereitstellen.

  • GitHub Projects ist ein Arbeitsverwaltungstool, mit dem Sie Kanban-Boards, Berichte, Dashboards und andere Funktionen erstellen können.

  • Zu den Low-Code- und No-Code-Tools gehören:

  • Azure Resource Manager-Vorlagen und Bicep sind systemeigene Azure-Tools, mit denen Sie IaC bereitstellen können. Terraform ist ein weiteres von Azure unterstütztes IaC-Tool, mit dem Sie Infrastruktur bereitstellen und verwalten können.

  • Verwenden Sie den Azure Cosmos DB Emulator in Docker-basierten lokalen Umgebungen, um Abfrage-, Schema- und Integrationstests auf verschiedenen Plattformen zu verschieben. Dieser Ansatz kann die Cloudabhängigkeit während der frühen Entwicklung reduzieren, aber Sie benötigen dennoch eine Produktionsvalidierung für Paritätssensitives Verhalten.

  • Azure API Management Arbeitsbereiche können das integrierte Gateway über mehr Ebenen hinweg verwenden, wodurch die Kosten für teambasierte API-Governance auf gemeinsam genutzten Plattformen gesenkt werden. Legen Sie Zuständigkeiten für Designrichtlinien, gemeinsam genutzte Zuständigkeitsgrenzen und Laufzeitisolierung fest, bevor mehrere Teams auf eine Instanz angewiesen sind.

  • Bei großen API-Ständen reduzieren Azure API Management Wildcard-Hostnamen und Zertifikate die wiederholte Hostnamenverwaltung. Auch wenn die Domänenverwaltung einfacher ist, sollten die Zuständigkeit für den Zertifikatslebenszyklus und die Governance der Domänen klar geregelt bleiben.

  • Visual Studio ist ein robustes Entwicklungstool, das in Azure integriert und viele Sprachen unterstützt.

  • GitHub Copilot ist ein KI-Dienst, der als Partner in der Programmierung fungiert und während des Programmierens Vervollständigungsvorschläge bereitstellt. Copilot ist als Erweiterung in Visual Studio und mehreren anderen Entwicklungstools verfügbar.

  • Azure Load Testing ist ein vollständig verwalteter Lastentestdienst, den Sie verwenden können, um eine hohe Auslastung zu generieren, indem Sie Datenverkehr für Ihre Anwendungen simulieren, unabhängig davon, wo sie gehostet werden.

Organisationsausrichtung

Das Cloud Adoption Framework für Azure enthält allgemeine Richtlinien und Empfehlungen zum Kategorisieren und Benennen von Azure-Ressourcen sowie spezifische Regeln und Beispiele für verschiedene Ressourcentypen.

Checkliste für betriebliche Exzellenz

Lesen Sie die vollständigen Empfehlungen.