Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für diese Azure Well-Architected Framework Operational Excellence-Empfehlung:
| 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.
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. Trunk-basierte Entwicklungszweige halten das Entwicklungsteam für Arbeitslasten synchron und fördern 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.
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 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 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.
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. Betrachten Sie den technischen Aufwand als eine 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.
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.
Shift-Left-Ansatz für Tests 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.
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.
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.
Verwandte Links
- Übernehmen einer Git-Verzweigungsstrategie
- Richtlinien und Einstellungen von Verzweigungen
- Cloudentwurfsmuster
- Entwicklergeschwindigkeit
- Entwickeln Ihrer Benennungs- und Taggingstrategie für Azure-Ressourcen
- DevOps-Ressourcencenter
- Aktivieren von DevSecOps mit Azure und GitHub
- Übersicht über die Quellcodeanalyse
- Leitfaden für den Lebenszyklus der Sicherheitsentwicklung
- Sicherheit in DevOps (DevSecOps)
- Shift-Left-Tests mit Komponententests
- Videoreihe: Einführung in GitHub Copilot
Checkliste für betriebliche Exzellenz
Lesen Sie die vollständigen Empfehlungen.