Continuous Integration und Continuous Delivery (Erstellen Real-World Cloud-Apps mit Azure)
von Rick Anderson, Tom Dykstra
Download Fix It Project oder Download E-Book
Das E-Book Building Real World Cloud Apps with Azure basiert auf einer Präsentation, die von Scott Guthrie entwickelt wurde. Es werden 13 Muster und Methoden erläutert, die Ihnen bei der erfolgreichen Entwicklung von Web-Apps für die Cloud helfen können. Informationen zum E-Book finden Sie im ersten Kapitel.
Die ersten beiden empfohlenen Entwicklungsprozessmuster waren Automate Everything und Source Control, und das dritte Prozessmuster kombiniert sie. Continuous Integration (CI) bedeutet, dass jedes Mal, wenn ein Entwickler Code im Quellrepository eincheckt, automatisch ein Build ausgelöst wird. Continuous Delivery (CD) geht noch einen Schritt weiter: Nachdem ein Build und automatisierte Komponententests erfolgreich waren, stellen Sie die Anwendung automatisch in einer Umgebung bereit, in der Sie ausführlichere Tests durchführen können.
Mit der Cloud können Sie die Kosten für die Wartung einer Testumgebung minimieren, da Sie nur für die Umgebungsressourcen bezahlen, solange Sie sie verwenden. Ihr CD-Prozess kann die Testumgebung einrichten, wenn Sie sie benötigen, und Sie können die Umgebung herunternehmen, wenn Sie mit dem Testen fertig sind.
Workflow für Continuous Integration und Continuous Delivery
Im Allgemeinen wird empfohlen, Continuous Delivery für Ihre Entwicklungs- und Stagingumgebungen zu verwenden. Die meisten Teams, auch bei Microsoft, benötigen einen manuellen Überprüfungs- und Genehmigungsprozess für die Produktionsbereitstellung. Bei einer Produktionsbereitstellung sollten Sie sicherstellen, dass dies geschieht, wenn wichtige Personen im Entwicklungsteam für den Support zur Verfügung stehen oder in Zeiten mit geringem Datenverkehr. Es gibt jedoch nichts, was Sie daran hindert, Ihre Entwicklungs- und Testumgebungen vollständig zu automatisieren, sodass ein Entwickler nur eine Änderung einchecken muss und eine Umgebung für Akzeptanztests eingerichtet wird.
Das folgende Diagramm aus einem Microsoft Patterns and Practices-E-Book über Continuous Delivery veranschaulicht einen typischen Workflow. Klicken Sie auf das Bild, um es in voller Größe im ursprünglichen Kontext anzuzeigen.
Wie die Cloud kosteneffektive CI und CD ermöglicht
Die Automatisierung dieser Prozesse in Azure ist einfach. Da Sie alles in der Cloud ausführen, müssen Sie keine Server für Ihre Builds oder Testumgebungen kaufen oder verwalten. Außerdem müssen Sie nicht warten, bis ein Server verfügbar ist, um Ihre Tests durchzuführen. Mit jedem Build, den Sie ausführen, können Sie eine Testumgebung in Azure mithilfe Ihres Automatisierungsskripts einrichten, Akzeptanztests oder ausführlichere Tests dafür ausführen und dann, wenn Sie fertig sind, sie einfach abreißen. Und wenn Sie diesen Server nur für 2 Stunden oder 8 Stunden oder einen Tag ausführen, ist der Geldbetrag, den Sie dafür bezahlen müssen, minimal, da Sie nur für die Zeit bezahlen, in der ein Computer tatsächlich ausgeführt wird. Beispielsweise kostet die für die Fix it-Anwendung erforderliche Umgebung im Grunde etwa 1 Cent pro Stunde, wenn Sie eine Ebene von der kostenlosen Ebene heraufsteigen. Wenn Sie die Umgebung im Laufe eines Monats nur stundenweise ausführen, würde Ihre Testumgebung wahrscheinlich weniger kosten als eine Latte, die Sie bei Starbucks kaufen.
Azure DevOps Services
Azure DevOps Services bietet eine Reihe von Features, die Sie bei der Anwendungsentwicklung von der Planung bis zur Bereitstellung unterstützen.
- Es unterstützt sowohl git (verteilt) als auch TFVC (zentralisierte) Quellcodeverwaltung.
- Es bietet einen Elastischen Builddienst, d. h., er erstellt dynamisch Buildserver, wenn sie benötigt werden, und entfernt sie, wenn sie fertig sind. Sie können einen Build automatisch starten, wenn jemand Quellcodeänderungen eincheckt, und Sie müssen Ihre eigenen Buildserver, die die meiste Zeit im Leerlauf liegen, nicht zuordnen und bezahlen. Der Builddienst ist kostenlos, solange Sie eine bestimmte Anzahl von Builds nicht überschreiten. Wenn Sie eine große Anzahl von Builds erwarten, können Sie für reservierte Buildserver etwas extra bezahlen.
- Es unterstützt Continuous Delivery für Azure.
- Es unterstützt automatisierte Auslastungstests. Auslastungstests sind für eine Cloud-App wichtig, werden aber häufig vernachlässigt, bis es zu spät ist. Auslastungstests simulieren die starke Nutzung einer App durch Tausende von Benutzern, sodass Sie Engpässe finden und den Durchsatz verbessern können – bevor Sie die App für die Produktion freigeben.
- Es unterstützt die Zusammenarbeit im Teamraum, was die Kommunikation und Zusammenarbeit in Echtzeit für kleine agile Teams erleichtert.
- Es unterstützt agiles Projektmanagement.
Weitere Informationen zu den Continuous Integrations- und Bereitstellungsfeatures von Azure DevOps Services finden Sie in der Azure DevOps-Dokumentation.
Wenn Sie nach einer schlüsselfertigen Projektmanagement-, Teamzusammenarbeits- und Quellcodeverwaltungslösung suchen, lesen Sie Azure DevOps Services. Registrieren Sie sich bei Azure DevOps Services.
Zusammenfassung
Bei den ersten drei Cloudentwicklungsmustern geht es darum, einen wiederholbaren, zuverlässigen und vorhersagbaren Entwicklungsprozess mit geringer Zykluszeit zu implementieren. Im nächsten Kapitel beginnen wir, uns mit Architektur- und Codierungsmustern zu befassen.
Ressourcen
Weitere Informationen finden Sie unter Bereitstellen einer Web-App in Azure App Service.
Weitere Informationen finden Sie auch in den folgenden Ressourcen:
- Erstellen einer Releasepipeline mit Team Foundation Server 2012. E-Book, praktische Labs und Beispielcode von Microsoft Patterns and Practices bieten eine ausführliche Einführung in Continuous Delivery. Behandelt die Verwendung von Visual Studio Lab Management und Visual Studio Release Management.
- DevOps-Tools und -Anleitungen für ALM Rangers. Die ALM Rangers haben die DevOps Workbench-Beispiel-Begleitlösung und praktische Anleitungen in Zusammenarbeit mit dem Buch Patterns & Practices Building a Release Pipeline with TFS 2012 vorgestellt, um die Konzepte von DevOps & Release Management für TFS 2012 zu erlernen und die Reifen zu kicken. Der Leitfaden zeigt, wie Sie einmal erstellen und in mehreren Umgebungen bereitstellen.
- Testen auf Continuous Delivery mit Visual Studio 2012. E-Book von Microsoft Patterns and Practices erläutert, wie automatisierte Tests in Continuous Delivery integriert werden.
- WindowsAzureDeploymentTracker. Quellcode für ein Tool, das entwickelt wurde, um einen Build aus TFS (basierend auf einer Bezeichnung) zu erfassen, zu erstellen, zu packen, eine Person in der DevOps-Rolle zu ermöglichen, bestimmte Aspekte davon zu konfigurieren und in Azure zu pushen. Das Tool verfolgt den Bereitstellungsprozess nach, um Vorgängen das "Rollback" auf eine zuvor bereitgestellte Version zu ermöglichen. Das Tool verfügt über keine externen Abhängigkeiten und kann mit TFS-APIs und dem Azure SDK eigenständig funktionieren.
- Continuous Delivery: Zuverlässige Softwareversionen durch Build-, Test- und Bereitstellungsautomatisierung. Buch von Jez Humble.
- Lassen Sie es los! Entwerfen und Bereitstellen von Production-Ready Software. Buch von Michael T. Nygard.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für