Was ist Cloud-gehostetes CI?

Cloud-Computing hat einen enormen Wandel in der Softwareentwicklung ausgelöst. Cloud-native Anwendungen und Services, die die Vorteile einer skalierbaren, in der Cloud gehosteten Infrastruktur nutzen, gehören zunehmend zum Alltag.

Cloud-gehostetes CI wendet die Vorteile einer Cloud-Infrastruktur auf den Build-, Test- und Deployment-Prozess Ihrer Software an.

Ganz gleich, ob Sie CI/CD gerade entdeckt haben oder bereits eine On-Premises-Installation nutzen – diese Seite hilft Ihnen, die Vorteile eines Cloud-gehosteten CI/CD-Systems zu verstehen.

Cloud-CI – was ist das?

Durch Continuous Integration, Continuous Delivery und Continuous Deployment (CI/CD) können Sie Ihre Software schneller und zuverlässiger bereitstellen. Jedes Mal, wenn Sie eine Änderung in Ihrem Code vornehmen, führt Ihr CI/CD-System eine Reihe von automatisierten Schritten aus, um zu überprüfen, ob Ihre Software erwartungsgemäß funktioniert. Dadurch wird die Zeit von der Entwicklung bis zum Release verkürzt und gleichzeitig die Anzahl der Bugs in der Produktion minimiert. Zusätzlich profitieren Sie von einer ganzen Reihe weiterer Vorteile.

Die Umstellung von einem manuellen Prozess auf ein automatisiertes CI/CD-System erspart Ihnen zwar Zeit und Aufwand, stellt aber auch höhere Anforderungen an Ihre Infrastruktur. Anstatt wie bisher alle paar Wochen oder Monate eine neue Version Ihres Produkts in Test- und Staging-Umgebungen bereitzustellen, wird mit CI/CD neuer Code mehrmals am Tag oder noch öfter getestet.

Je mehr Personen an demselben Codebestand arbeiten und Änderungen beisteuern, desto häufiger durchläuft Ihr Code den automatisierten Build-, Test- und Deployment-Prozess. Wenn Sie Ihren CI/CD-Prozess auf Ihren eigenen Servern hosten, wird die Anzahl der verfügbaren Server schnell zum begrenzenden Faktor. In Spitzenzeiten – etwa wenn Ihr Team an einer kritischen Korrektur arbeitet oder neuen Features den letzten Schliff von der Markteinführung gibt – kann Ihre Inhouse-CI/CD-Infrastruktur zum Engpass werden.

In solchen Szenarien ist es hilfreich, wenn Ihr CI/CD-Prozess in der Cloud gehostet wird. Cloud-CI kann zweierlei bedeuten: Ihre Pipelines können entweder in einer Cloud-gehosteten Infrastruktur ausgeführt werden, oder Sie können einen vollständig gemanagten, cloudbasierten CI/CD-Service nutzen.

Die Skalierungsvorteile von Cloud-Computing lassen sich mit beiden Optionen nutzen. Anstatt zu versuchen, einen Kompromiss zwischen ausreichenden Kapazitäten in Spitzenzeiten und überflüssigen Kosten für ungenutzte Server zu finden, können Sie eine Buildfarm verwenden, der nach Bedarf skaliert wird.

Vorteile eines Cloud-gehosteten CI-Systems

Durch das Hosting Ihres CI/CD-Systems in der Cloud können Sie Ihre Ressourcen nach Bedarf erweitern, Ihre Prozesse robuster gestalten, die Wartungskosten senken und die Cloud-native Entwicklung erleichtern.

Infrastruktur als Code (IaC) vereinfacht Ihren Workflow

In einer Cloud-gehosteten Infrastruktur werden Umgebungen in der Regel durch Skripte konfiguriert. Indem Sie Ihre Infrastrukturkonfiguration als Code definieren, stellen Sie sicher, dass jede Build- und Testumgebung identisch konfiguriert ist. Dieser Prozess bietet außerdem die Möglichkeit, Ihre Infrastruktur bei Bedarf zu erweitern.

Genau wie die von Ihnen entwickelte Software kann auch die Infrastruktur eine CI/CD-Pipeline durchlaufen, um die erwartete Funktionalität sicherzustellen. Dadurch können Änderungen unkompliziert rückgängig gemacht werden.

Containerisierung optimal nutzen

Wenn Sie eine Cloud-native Anwendung entwickeln, verwenden Sie aller Wahrscheinlichkeit nach Container. Beim Einsatz von Containern werden die Umgebungsabhängigkeiten und Konfigurationsdetails zusammen mit der Software in einem einzigen Artefakt verpackt. Dieses kann auf jedem System bereitgestellt werden, das über eine Laufzeitumgebung für den Container verfügt.

Container-Orchestrierungstools wie Kubernetes vereinfachen die Arbeit mit größeren Containersammlungen. Sie automatisieren Aufgaben wie Bereitstellung, Verwaltung und Skalierung.

Die Verwendung von Containern in einem CI/CD-Workflow vereinfacht das Bereitstellen des neuesten Builds für die verschiedenen Pipeline-Phasen. Das Build-Artefakt ist ein Container-Image, das unverändert in jeder Testumgebung bereitgestellt werden kann, bevor es für die Produktion freigegeben wird.

In einem Cloud-CI/CD-System sorgen Container für eine effiziente Auslastung der Rechenressourcen und ermöglichen die Verwendung von Automatisierungstools. Bei Lastspitzen können Sie die Kapazitäten erhöhen, und wenn der Bedarf nachlässt, können Sie Kosten sparen, indem Sie Container entsorgen und die von ihnen belegte Infrastruktur freigeben.

Lästige Serverwartung einsparen

Wenn Sie Ihren CI/CD-Prozess in die Cloud verlagern, wird Ihre Buildfarm auf virtuellen Systemen gehostet. Eine Erweiterung Ihrer Kapazitäten erfordert nur wenige Konfigurationsschritte – Sie müssen sich nicht mehr um die Beschaffung, Installation und Verwaltung der physischen Hardware kümmern.

So kann sich Ihr Team darauf konzentrieren, die Pipeline-Prozesse zu optimieren und abzusichern. Da die Kosten eine Funktion von Prozessorleistung und Zeit sind, lohnt sich der Aufwand für eine möglichst weitgehende Parallelisierung der Aufgaben. So erhält das Entwicklerteam schneller Ergebnisse, als wenn über einen längeren Zeitraum weniger Maschinen verwendet werden.

Release-Pfad offen halten

Ein CI/CD-Prozess ist für jedes Softwareentwicklungsteam eine wichtige Ressource. Er sorgt dafür, dass Sie Ihre Softwareupdates an Ihre Benutzer*innen verteilen können. Wenn Sie diesen Prozess in der Cloud hosten, verringern Sie damit das Risiko, dass die Veröffentlichung durch einen unerwarteten Ausfall verhindert wird. Diese Ausfallsicherheit mag zwar an normalen Tagen wie Luxus wirken, aber sie kann schnell überlebenswichtig werden, wenn ein kritischer Fehler entdeckt wird und ein dringender Fix veröffentlicht werden muss.

Ein in der Cloud gehosteter CI/CD-Prozess kann dank der Skalierbarkeit der Cloud-Ressourcen auch die Einführung der sogenannten „Blue/Green“-Deploymentstrategie erleichtern. Mit dem Blue/Green-Ansatz können Sie den Datenverkehr schnell auf die vorherige Version umschalten, wenn in der Produktion ein Problem auftritt. So können Sie Ihren Service aufrechterhalten, während Sie an einer Korrektur arbeiten.

Überlegungen zum Cloud-CI-Hosting

Ein cloudbasiertes CI/CD-System kann zwar erhebliche Vorteile in Bezug auf Infrastrukturkosten, Skalierbarkeit und Zuverlässigkeit bieten, aber es gibt auch einige potenzielle Nachteile und Fallstricke, die es zu beachten gilt.

Systemarchitektur

Wenn Ihre Produktarchitektur auf Containern basiert, können Sie durch cloudbasiertes CI/CD das Deployment in Ihren Testumgebungen vereinfachen. Wenn Sie jedoch eine monolithische Architektur verwenden, kann es mitunter schwierig sein, Ihre Software in Container zu packen.

Natürlich sind Container keine zwingende Voraussetzung für Cloud-Hosting. Sie können weiterhin virtuelle Systeme in der Infrastruktur eines Cloud-Anbieters verwenden, um Builds zu erstellen und konsistente Vorproduktionsumgebungen für Tests bereitzustellen. Allerdings benötigen VMs mehr Ressourcen als Container, und die Umgebungen müssen separat konfiguriert werden.

Erfahrung und Fachwissen

Wenn Sie noch keine Kompetenzen im Bereich Infrastruktur als Code (IaC) aufgebaut haben, werden Ihre Teammitglieder etwas Zeit für die Einarbeitung brauchen, oder Sie müssen dieses Wissen extern einkaufen.

Erfahrung im Umgang mit Cloud-Technologien ist jedoch eine gesuchte Qualifikation. Wenn Sie Ihren Teams die Möglichkeit geben, diese Fähigkeiten zu erwerben und die neuesten Technologien zu nutzen, kann sich dies bei der Mitarbeiterrekrutierung und -bindung auszahlen.

Kosten

In der Cloud ist Zeit Geld – und Sie sollten nach Möglichkeit nicht für ungenutzte Rechenressourcen bezahlen. Cloud-Hosting kann nur dann kosteneffizient sein, wenn es sinnvoll genutzt wird. Um die Auslastung zu überwachen und inaktive Instanzen nach einer Wartezeit freizugeben, benötigen Sie entweder Tools, oder Sie müssen diese Logik selbst implementieren. Die Selbstbau-Alternative erfordert möglicherweise Kompetenzen, über die Ihr Unternehmen noch nicht verfügt – es lohnt sich daher, die verfügbaren Optionen zu analysieren und abzuwägen.

Sicherheit

Beim Hosten von Daten und Diensten in der Cloud war Sicherheit schon immer ein Knackpunkt. Für einige Unternehmen ist bereits der Gedanke, kritische Software auf der Hardware eines Drittanbieters zu speichern, ein No-Go. Andererseits nutzen heute viele Unternehmen öffentliche Clouds sowohl für ihre Live-Services als auch für ihre Deployment-Pipelines – von Quellcode-Speichern über CI-Server bis hin zu Testumgebungen.

Die Identifizierung potenzieller Angriffsvektoren, die Integration von Schutzmaßnahmen in Ihren CI/CD-Prozess und die Implementierung einer Zugriffssteuerung sind unerlässlich, um die von böswilligen Akteuren ausgehenden Risiken zu mindern.

Hybrid-Ansätze

Der „Infrastruktur-als-Code“-Ansatz (IaC), Container und die Container-Orchestrierung haben zwar allesamt ihren Ursprung in der Cloud-Technologie, können aber auch in CI/CD-Installationen verwendet werden, die auf privaten Clouds oder auf einer Mischung aus On-Premises- und Cloud-gehosteter Infrastruktur basieren.

Beispielsweise könnten Sie einen Teil Ihres Prozesses – etwa die Durchführung von Performancetests – in die Cloud verlagern, während die restlichen Prozessteile eine Vor-Ort-Infrastruktur nutzen.

Dieser hybride Ansatz bietet mehrere Vorteile:

  • Wenn Ihr Unternehmen erwägt, in Zukunft zu einer Cloud-gehosteten Infrastruktur zu wechseln, können Sie durch die Einführung von Cloud-nativen Tools Fachwissen aufbauen und somit den Übergang erleichtern.
  • Mit IaC geht das Zurücksetzen von Umgebungen zwischen Testläufen viel schneller, da Sie nur ein Skript ausführen müssen.
  • Das Speichern der Umgebungserstellung als Code sorgt außerdem für Konsistenz zwischen der Produktionskonfiguration und den Vorproduktionsumgebungen – ganz gleich, ob diese für Sicherheits-, Performance- oder UI-Tests oder als Sandboxen für Support- und Verkaufsteams eingesetzt werden.
  • Durch das Speichern der Infrastruktur-Konfigurationsdateien in der Quellcodeverwaltung kann das Team jederzeit nachvollziehen, wann was geändert wurde. Bei Problemen mit den Umgebungen wird dadurch die Fehlersuche vereinfacht.

So kann TeamCity helfen

Mit TeamCity können Sie genau festlegen, welcher Anteil Ihres CI/CD-Prozesses in der Cloud ablaufen soll.

TeamCity On-Premises gibt Ihnen die Flexibilität, sowohl Ihren CI-Server als auch Ihre Build-Agents entweder lokal oder in der Cloud zu hosten. Ganz gleich, ob Sie alle Build-, Test- und Deployment-Abläufe in der Cloud hosten oder Ihre Buildfarm bei Bedarfsspitzen automatisch erweitern möchten – die native Integration von führenden Cloud-Anbietern in TeamCity bietet Ihnen alle Funktionen, die Sie benötigen könnten.

TeamCity Cloud umfasst einen Managed-CI-Server, sodass Sie sich auf die Optimierung Ihres Build-, Test- und Deployment-Prozesses konzentrieren können, ohne sich um die Infrastrukturpflege zu kümmern. Die Möglichkeit, sowohl von JetBrains gehostete Build-Agents als auch Ihre eigenen in der Cloud oder vor Ort gehosteten Systeme zu verwenden, gibt Ihnen die Freiheit, eine genau auf Ihre Anforderungen abgestimmte Buildfarm anzulegen.

TeamCity Pipelines wurde entwickelt, um CI/CD mit einem flexiblen, Cloud-nativen Ansatz noch effizienter zu machen. Sie können Ihre Pipelines unkompliziert erstellen, verwalten und optimieren und dabei je nach Präferenz einen visuellen Drag-and-Drop-Editor oder YAML verwenden. TeamCity Pipelines unterstützt sowohl in der Cloud gehostete Agents als auch Eigenhosting, um eine bedarfsgerechte Skalierung zu ermöglichen, die sicherstellt, dass Ihre Build-, Test- und Deployment-Prozesse so mühelos und automatisiert wie möglich ablaufen.