Empfehlungen zur Verbesserung der Buildgeschwindigkeit

Gilt für diese Empfehlung der Prüfliste "Operational Excellence" für Azure Well-Architected Framework:

OE:04 Optimieren Sie Softwareentwicklungs- und Qualitätssicherungsprozesse, indem Sie branchenerprobten Entwicklungs- und Testverfahren folgen. Für eine eindeutige Rollenbezeichnung standardisieren Sie Methoden für Komponenten wie Tools, Quellcodeverwaltung, Anwendungsentwurfsmuster, Dokumentation und Stilleitfäden.

Verwandte Leitfäden: Empfehlungen für die Standardisierung von Tools und Prozessen | Empfehlungen für die Verwendung von Continuous Integration

In diesem Leitfaden werden die Empfehlungen zum Verbessern der Leistung Ihrer Bereitstellungsinfrastruktur beschrieben. Es ist wichtig, dass ein Buildprozess am ersten Tag Ihrer Produktentwicklung ausgeführt wird. Builds sind der Takt Ihres Continuous Delivery-Systems, da der Build status zeigt, wann Ihr Produkt bereitgestellt werden kann. Builds bieten wichtige Informationen über die status Ihres Produkts, sodass Sie immer nach schnellen Builds streben sollten.

Es ist schwierig, ein Buildproblem zu beheben, wenn die Erstellung länger dauert. Wenn Verzögerungen auftreten und normalisiert werden, werden Teams tendenziell weniger motiviert, das Problem zu beheben.

Wichtige Entwurfsstrategien

Buildzeiten

Um schnellere Builds durchzuführen, haben Sie folgende Möglichkeiten:

  • Auswählen von Agents, die Ihre Leistungsanforderungen erfüllen: Beschleunigen Sie Ihre Builds, indem Sie die richtigen Buildcomputer auswählen. Schnelle Computer können den Unterschied zwischen Stunden und Minuten bedeuten. Wenn sich Ihre Pipelines in Azure Pipelines befinden, können Sie Ihre Aufträge mit einem von Microsoft gehosteten Agent ausführen. Wenn Sie von Microsoft gehostete Agents verwenden, werden Wartungen und Upgrades für Sie erledigt. Weitere Informationen finden Sie unter Von Microsoft gehostete Agents.

  • Optimieren des Buildserverspeicherorts: Wenn Sie Ihren Code erstellen, werden Daten über das Netzwerk gesendet. Eingaben für die Builds werden aus einem Quellcodeverwaltungsrepository und dem Artefaktrepository abgerufen. Die Ausgabe des Buildprozesses muss kopiert werden, einschließlich der kompilierten Artefakte, Testberichte, Code Coverage-Ergebnisse und Debugsymbole. Es ist wichtig, dass diese Kopieraktionen schnell ausgeführt werden. Wenn Sie Einen eigenen Buildserver verwenden, stellen Sie sicher, dass sich der Buildserver in der Nähe der Quellen und eines Zielspeicherorts befindet. Schnelle Uploads und Downloads können die Gesamtbuildzeit reduzieren.

  • Horizontales Hochskalieren von Buildservern: Ein einzelner Buildserver kann für ein kleines Produkt ausreichend sein. Wenn die Größe und der Umfang des Produkts und die Anzahl der Teams, die am Produkt arbeiten, zunimmt, ist ein einzelner Server möglicherweise nicht ausreichend. Skalieren Sie Ihre Infrastruktur horizontal über mehrere Computer, wenn Sie die Grenze erreichen. Weitere Informationen finden Sie unter Erstellen und Verwalten von Agentpools.

  • Optimieren Sie den Build:

    • Fügen Sie parallele Aufträge hinzu, um den Buildprozess zu beschleunigen. Weitere Informationen finden Sie unter Konfigurieren von und Bezahlen für Parallelaufträge.

    • Aktivieren Sie parallele Testsammlungsausführungen, die häufig viel Zeit sparen, insbesondere beim Ausführen von Integrations- und UI-Tests. Weitere Informationen finden Sie unter Paralleles Ausführen von Tests für jeden Testrunner.

    • Verwenden Sie das Konzept eines Multiplikators, der es Ihnen erlaubt, Ihre Builds über mehrere Build-Agents zu skalieren. Weitere Informationen finden Sie unter Angeben von Aufträgen in Ihrer Pipeline.

    • Erwägen Sie, Integrations-, Benutzeroberflächen- und Rauchtests in eine Releasepipeline zu verschieben. Der Wechsel zu einer Releasepipeline verbessert die Buildgeschwindigkeit und die Geschwindigkeit der Buildfeedbackschleife.

    • Veröffentlichen Sie die Buildartefakte in einer Paketverwaltungslösung, z. B. NuGet oder Maven. Durch die Veröffentlichung in einer Paketverwaltungslösung können Sie Ihr Buildartefakt einfacher wiederverwenden.

Menschlicher Eingriff

Ihr organization kann mehrere verschiedene Arten von Builds erstellen, um die Buildzeiten zu optimieren. Mögliche Builds sind:

  • Ci-Build (Continuous Integration): Der Zweck dieses Builds besteht darin, sicherzustellen, dass Code kompiliert und Komponententests ausgeführt werden. Dieser Build wird bei jedem Commit ausgelöst. Es dient als Takt des Projekts und liefert dem Team sofort Qualitätsfeedback. Weitere Informationen finden Sie unter Angeben von Ereignissen, die Pipelines auslösen.

  • Nightly Build: Der Zweck eines nächtlichen Builds besteht nicht nur darin, den Code zu kompilieren, sondern auch sicherzustellen, dass alle größeren Testsammlungen, die ineffizient sind, in einem regulären Rhythmus für jeden Build ausgeführt werden. In der Regel umfassen diese Tests Integrations-, Benutzeroberflächen- oder Rauchtests. Weitere Informationen finden Sie unter Konfigurieren von Zeitplänen für Pipelines.

  • Releasebuild: Zusätzlich zum Kompilieren und Ausführen von Tests kompiliert dieser Build auch die API-Dokumentation, Konformitätsberichte, Codesignatur und andere Schritte, die nicht bei jeder Codeerstellung erforderlich sind. Dieser Build stellt die goldene Kopie bereit, die in die Releasepipeline gepusht wird, um schließlich in der Produktionsumgebung bereitzustellen.

Die Typen von Builds, die von Ihrem organization benötigt werden, hängen von Faktoren ab, einschließlich der Reife Ihres Teams und organization, der Art des Produkts, an dem Sie arbeiten, und Ihrer Bereitstellungsstrategie.

Azure-Erleichterung

Azure DevOps ist eine Sammlung von Diensten, mit denen Sie eine zusammenarbeitsorientierte, effiziente und konsistente Entwicklungspraxis erstellen können.

Verwenden Sie Azure Pipelines , um Dienste zu erstellen und zu veröffentlichen, um Continuous Integration und Continuous Delivery (CI/CD) Ihrer Anwendungen zu unterstützen.

Verwenden Sie GitHub Actions für Azure, um CI/CD-Prozesse zu automatisieren und direkt in Azure zu integrieren, um Bereitstellungen zu vereinfachen. Sie können auch Workflows erstellen, die jeden Pull Request in Ihrem Repository erstellen und testen, oder zusammengeführte Pull Requests mithilfe von GitHub Actions für Azure in der Produktion bereitstellen.

Von Microsoft gehostete Agents sind nativ in Azure Pipelines verfügbar. Bei diesen Agents handelt es sich um einmalige virtuelle Computer, die nur für einen Auftrag verwendet und dann verworfen werden, was eine einfach zu verwaltende Option für Ihre Builds bietet.

Checkliste "Operational Excellence"

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