Empfehlungen für die Standardisierung von Tools und Prozessen

Gilt für diese Checkliste für azure Well-Architected Framework Operational Excellence:

OE:04 Optimieren Sie die Softwareentwicklungs- und Qualitätssicherungsprozesse der Workload mit branchenerprobten Praktiken für die Durchführung von Entwicklungs- und Testaktivitäten. Standardisieren Sie Methoden für eindeutige Rollenbezeichnungen für Komponenten wie Tools, Quellcodeverwaltung, Anwendungsentwurfsmuster, Dokumentation und Formatvorlagen.

Verwandter Leitfaden: Verbessern der Buildgeschwindigkeit Verwenden der kontinuierlichen | Integration

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

Wichtige Entwurfsstrategien

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 bei der Optimierung Ihrer Entwicklungspraktiken helfen.

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

Verwenden Sie bekannte und ausgereifte Off-the-Shelf-Werkzeuge und standardisieren Sie ihre Verwendung. Hochwirksame Engineering-Teams übernehmen die besten Tools in 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

  • Versionssteuerung 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 die Zeit und den Aufwand der Entwicklung Eigener Lösungen im Vergleich zu Features, die die Premium-Tools bereitstellen. Berücksichtigen Sie einmalige Kosten im Vergleich zu wiederkehrenden Kosten. In den meisten Fällen bieten off-the-shelf Tools ihrem Team einen höheren Wert.

Verwenden Sie bei praktischer Praxis Code-, No-Code- und KI-Tools low-code. 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 auch Workload-Teammitgliedern, die möglicherweise nicht geschulte Entwickler zum Betrieb der Workload beitragen können. KI-Tools können bei der Codeentwicklung, Überprüfungen und Optimierung helfen.

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 Richtlinien für die Verzweigung, um wichtige Branches – wie den Mainbranch – zu schützen. Weitere Informationen finden Sie unter Übernehmen einer Git Branching-Strategie und Branch-Richtlinien und -Einstellungen.

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: The time that it takes for a task or user story to go from the backlog to a production deployment.

  • 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.

Um Projektbeteiligten und dem Workloadteam zu helfen, geschwindigkeitsschnell nachzuverfolgen, 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 einen Stilleitfaden verwenden. Ein einheitlicher Stil erleichtert die Zusammenarbeit und hilft bei der Einarbeitung neuer Entwickler*innen. Um effektiv arbeiten zu können, müssen neue Entwickler*innen wissen, wie das Workload-Team 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, sollte die Formatvorlage Standardbenennungskonventionen für Artefakte, Umgebungen, Verzweigungen, Builds und Ausführungen 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 neuen Teammitgliedern auch, mehr über die Entwurfsentscheidungen zu erfahren, die während des Lebenszyklus der Workload 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.

Implementieren von Standards für die Behandlung von technischen Schulden

Machen Sie sich bewusst, dass technische Schulden gewollt und für die Ergebnisse Ihres Workload-Teams notwendig sind. Diese Denkweise motiviert Ihr Team dazu, technische Schulden regelmäßig zu überprüfen und anzugehen, um eine Anhäufung zu vermeiden. Behandeln Sie technische Schulden als regelmäßig wiederkehrende Aufgabe im Backlog.

Angenommen, Ihr Team wurde in einer Bibliothek standardisiert. 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 dies das Workload-Team verlassen, das zwei Technologien unterstützt, da sie nicht vollständig reibungslos übergehen können. Das Workloadteam muss den Übergang priorisieren, da die Arbeitsauslastung, wenn die neue Funktionalität erreicht wird, zufrieden sind und weniger wahrscheinlich die technische Verschuldung berücksichtigen.

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 Ihrer Workload zugute kommen. Überprüfen Sie regelmäßig Entwurfsmuster, um sicherzustellen, dass Sie die richtigen Muster verwenden, während sich Ihre Workload weiterentwickelt.

Implementieren eines Shift-Left-Ansatzes für Tests

Implementieren Sie einen shift-left-Ansatz zum Testen, indem Sie Komponententests frühzeitig und häufig während des gesamten Entwicklungsprozesses durchführen. Häufige Tests in jeder Entwicklungsumgebung helfen Entwickler*innen, Vertrauen in ihre Anwendungen zu gewinnen. Um Ihre Teststrategie mit einem Shift-left-Ansatz zu erstellen, sollten Sie die folgenden Prinzipien berücksichtigen:

  • Schreiben Sie Tests auf der niedrigsten Ebene möglich. Favorisieren 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 geheime 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 verwalten Sie Testcode mit Anwendungscode. Um die Qualität der Tests sicherzustellen, verwerfen Sie Tests, die nicht zuverlässig sind.

  • Erwägen Sie den Testbesitz, der auf dem Workloadbesitz 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. Der automatisierte Code erleichtert die Belastung Für Ihr Workloadteam und erzwingt eine konsistente Qualität.

Ausführliche Anleitungen zur Implementierung einer DevOps-Teststrategie finden Sie unter "Shift Testing left with unit tests".

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 die Azure-Portal, PowerShell, CLI und APIs hinweg 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-Erleichterung

  • Azure DevOps ist eine Sammlung von Diensten, mit denen Sie eine zusammenarbeitende, effiziente und konsistente Entwicklungspraxis erstellen können. Azure DevOps bündelt die folgenden 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-Versionskontrolle-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 Tools mit geringem Code und codefreiem Code 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.

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

  • GitHub Copilot ist ein KI-Dienst, der als Paarprogrammierer fungiert und Während des Codes Vorschläge zum AutoVervollständigen-Stil 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 operative Exzellenz

Lesen Sie den vollständigen Satz von Empfehlungen.