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.

Continuous Delivery-Workflow

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: