Empfehlungen für die Standardisierung von Tools und Prozessen

Gilt für diese Checklistenempfehlung für Azure Well-Architected Framework Operational Excellence:

OE:04 Optimieren Sie Softwareentwicklungs- und Qualitätssicherungsprozesse, indem Sie bewährte Methoden für Entwicklung und Tests befolgen. Für eine eindeutige Rollenbezeichnung standardisieren Sie Methoden für Komponenten wie Tools, Quellcodeverwaltung, Anwendungsentwurfsmuster, Dokumentation und Stilhandbücher.

Verwandte Anleitung: Verbessern der Buildgeschwindigkeit | Verwenden von Continuous Integration

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.

Wichtige Entwurfsstrategien

Der erste Schritt zur Optimierung von Entwicklungsmethoden ist die Standardisierung von Tools und Prozessen. Verwenden Sie nach Möglichkeit branchenerprobte Lösungen, anstatt interne Lösungen zu entwickeln. Um Ihre Methoden weiter zu optimieren, verwenden 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 Tools von der Stange

Verwenden Sie bekannte und ausgereifte Tools von der Stange und standardisieren Sie deren Verwendung. Hochwirksame Entwicklungsteams nutzen die besten Tools der Klasse. Dieser Ansatz minimiert die Notwendigkeit, Lösungen für Planung, Entwicklung, Tests, Zusammenarbeit sowie Continuous Integration und Continuous Delivery (CI/CD) zu entwickeln. Viele Unternehmen bieten Entwicklern die Wahl zwischen wenigen Tools, aber alle Optionen sind Standardtools für die organization und werden intern überprüft. Wählen Sie am wichtigsten Tools aus, die die Anforderungen für Ihre Workload erfüllen. Standardtools sollten die folgenden Funktionen bieten:

  • 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 funktionsübergreifend erfüllen.

Bestimmen Sie, ob Sie in teure Tools oder Premiumversionen von Tools investieren sollten. Berücksichtigen Sie den Zeit- und Aufwand bei der Entwicklung Ihrer eigenen Lösungen im Vergleich zu Den Features, 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.

Verwenden Sie Low-Code-, No-Code- und KI-Tools, wenn sie sinnvoll sind. Low-Code- und No-Code-Tools sparen erfahrene Entwickler Zeit, da sie funktionen problemlos integrieren können, anstatt den gesamten Codeentwicklungsprozess durchzuführen. Diese Tools ermöglichen es auch Workload-Teammitgliedern, die möglicherweise nicht geschulte Entwickler sind, zum Betrieb der Workload beizutragen. KI-Tools können bei der Codeentwicklung, -überprüfung und -optimierung helfen.

Standardisieren Ihrer Verzweigungsstrategie

Wählen Sie nach Möglichkeit ein trunkbasiertes Modell aus. Trunkbasierte Verzweigung hält das Workload-Entwicklungsteam synchron und fördert Continuous Delivery. Definieren Sie Branchrichtlinien, um wichtige Branches zu schützen, z. B. den Standard Branch. Weitere Informationen finden Sie unter Übernehmen einer Git-Verzweigungsstrategie und Branchrichtlinien und -einstellungen.

Auswerten von Metriken zur Quantifizierung der Entwicklungseffizienz

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

  • Bereitstellungshäufigkeit: Die Anzahl der Bereitstellungen, die jeder Entwickler jeden Tag bereitstellt.

  • Durchlaufzeit: Die Zeit, die benötigt wird, bis eine Aufgabe oder ein Benutzerabschnitt vom Backlog zu einer Produktionsbereitstellung wechselt.

  • Durchschnittliche Zeit bis zur Lösung: Die durchschnittliche Zeit, die für die Behebung 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 mithilfe eines Stilleitfadens, wie Ihr Workloadteam Code schreibt, überprüft und dokumentiert. 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 Stilleitfaden mit klar definierten Standards kann den Trainingsprozess vereinfachen. Definieren Sie im Stilleitfaden Standards für Entwicklungssprachen, Bibliotheken, Frameworks und andere Konventionen.

Wenn dies praktisch ist, verwenden Sie Tools, um Codeformatierungsstandards zu erzwingen. Visual Studio bietet beispielsweise mehrere Tools zum Überprüfen von Code auf Stil, Qualität, Wartbarkeit, Entwurf und andere Probleme. Für Infrastructure-as-Code (IaC) können Sie Checkov oder Terrascan for Terraform verwenden.

Um Konsistenz zu gewährleisten und potenzielle Verwirrungen zu vermeiden, sollte die Formatvorlage Standardbenennungskonventionen für Artefakte, Umgebungen, Branches, Builds und Ausführungen enthalten.

Sie sollten auch Richtlinien und Standards für die zulässige Varianz in Ihren Umgebungen festlegen. Wenn es neue Sprachen, Frameworks oder andere Technologien gibt, die Workload-Teammitglieder der Standardliste hinzufügen möchten, implementieren Sie einen Prozess für die Verwendung dieser Tools in einer Sandbox oder einer niedrigeren Umgebung. Testen Sie deren Durchführbarkeit, und ersetzen Sie ggf. vorhandene Technologien.

Verwenden Sie Architekturentscheidungsdatensätze (Architecture Decision Records, ADRs), um die Entwurfsentscheidungen Ihres Workloadteams im Verlauf zu protokollieren. ADRs helfen Ihren Teams, ein neues Verständnis der Workload zu erhalten. Außerdem helfen sie neuen Teammitgliedern, mehr über die Entwurfsentscheidungen zu erfahren, die während des Lebenszyklus der Workload getroffen werden. Stellen Sie sicher, dass ADRs versionsgesteuert sind.

Schließen Sie in Ihre ADR Folgendes ein:

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

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

  • Andere Optionen, die berücksichtigt wurden, helfen, die endgültige Entscheidung zu kontextualisieren.

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

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

Implementieren von Standards für technische Schulden

Denken Sie, dass technische Schulden absichtlich und notwendig für die Ergebnisse Ihres Workloadteams sind. Diese Denkweise motiviert Ihr Team, technische Schulden 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 für eine Bibliothek standardisiert. Im Laufe der Zeit müssen Sie zu einer anderen Bibliothek wechseln, um neue Funktionen in der Workload zu erstellen. Dieser Übergang kann zu technischen Schulden führen. Häufig können solche Übergänge dazu führen, dass das Workloadteam zwei Technologien unterstützt, da es nicht vollständig reibungslos übergehen kann. Das Workloadteam muss den Abschluss des Übergangs priorisieren, da die Beteiligten zufrieden sind und weniger wahrscheinlich die technischen Schulden berücksichtigen, wenn die Workload die neue Funktionalität erreicht.

Standardisieren der Anwendung der Versionsverwaltung auf Ihre Artefakte

Standardisieren Sie, wie Sie Die Versionsverwaltung auf Ihre Artefakte anwenden und wie Die Versionsverwaltung intern und extern verfügbar gemacht wird. Beispielsweise sollten clientorientierte Systeme ihre ausgeführte Version auf der Benutzeroberfläche verfügbar machen. Dieses Verfahren ist hilfreich, wenn das Workloadteam Probleme behebt, da der Kunde einfach mitteilen kann, welche Version er verwendet. 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 branchenerprobte Anwendungsentwurfsmuster , 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, wenn sich Ihre Workload weiterentwickelt.

Implementieren eines Shift-Left-Ansatzes für Tests

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, um Ihre Teststrategie mit einem Shift-Left-Ansatz zu erstellen:

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

  • Schreiben Sie Tests einmal, 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 Geheimnisse oder Konfigurationen.

  • Entwerfen Sie Ihre Workload für Tests. Wenn Sie Ihre Anwendung entwickeln, müssen Sie die Testbarkeit als Voraussetzung 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 von Testcode mit Anwendungscode. Verwerfen Sie tests, die nicht zuverlässig sind, um die Qualität der Tests zu gewährleisten.

  • Erwägen Sie den Testbesitz, der auf dem Besitz der Workload basiert. Ihr Workloadteam besitzt die 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 eine konsistente Qualität.

Ausführliche Anleitungen zum Implementieren einer DevOps-Teststrategie finden Sie unter Verschieben von Tests mit Komponententests.

Fordern Sie DevSecOps-Methoden als Teil Ihrer Standardbetriebsverfahren an. Ihr Workloadteam sollte die Sicherheitsmethoden im Zusammenhang mit der Softwareentwicklung und Qualitätssicherung kennen. Sie müssen diese Vorgehensweisen ausnahmslos befolgen. Weitere Informationen finden Sie im Leitfaden zum Lebenszyklus der Sicherheitsentwicklung.

Implementieren von Standards für die Benennung und Kennzeichnung von Ressourcen

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

Die Verwendung standardisierter Tagging- und Benennungskonventionen bietet folgende Vorteile:

  • Sie bieten Konsistenz und Klarheit bei der Ressourcenidentifizierung und -verwaltung und erleichtern die Ermittlung und Suche über die Azure-Portal, PowerShell, CLI und APIs hinweg.
  • 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 aus Sicherheitsgründen 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 Definieren Ihrer Taggingstrategie.

Azure-Erleichterung

  • Azure DevOps ist eine Sammlung von Diensten, mit denen Sie eine zusammenarbeitsorientierte, 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 Versionskontrolltool, das das verteilte Versionskontrollsystem von Git 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 das Sammeln von Feedback von Projektbeteiligten erforderlich sind.

    • Azure Artifacts wird verwendet, damit Entwickler ihren Code effizient freigeben und ihre Pakete verwalten können.

  • GitHub Actions für Azure ist ein Tool, mit dem Sie CI/CD-Prozesse automatisieren können. Sie lässt sich direkt in Azure integrieren, um Bereitstellungen zu vereinfachen. Sie können Workflows erstellen, die jeden Pull Request in Ihrem Repository erstellen und testen, oder zusammengeführte Pull Requests für die Produktion bereitstellen.

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

  • Tools mit wenig Code und ohne Code umfassen:

  • Azure Resource Manager-Vorlagen und Bicep sind native Azure-Tools, die Sie zum Bereitstellen von IaC verwenden können. Terraform ist ein weiteres von Azure unterstütztes IaC-Tool, das Sie zum Bereitstellen und Verwalten der Infrastruktur verwenden können.

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

  • GitHub Copilot ist ein KI-Dienst, der als Paarprogrammierer fungiert und beim Programmieren Vorschläge im Stil der automatischen Vervollständigung bereitstellt. Copilot ist als Erweiterung in Visual Studio und mehreren anderen Entwicklungstools verfügbar.

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

Checkliste "Operational Excellence"

Sehen Sie sich den vollständigen Satz von Empfehlungen an.