ra2 studio - stock.adobe.com

CI/CD: AWS CodePipeline im Vergleich zu Jenkins

Jenkins integriert eine beachtliche Anzahl Drittanbieter-Plug-ins, CodePipeline bietet dagegen die enge Anbindung an die Amazon-Cloud. Jenkins und CodePipeline im Vergleich.

Continuous Integration (CI) und Continuous Deployment (CD) wurden konzipiert, um Probleme bei der Code-Integration zu lösen und den Anwendungslebenszyklus zu automatisieren. Beides hat einen erheblichen Einfluss auf die Entwicklungsprozesse.

Entwickler können zwischen verschiedenen selbst gehosteten und SaaS-Tools für CI/CD wählen. Die Wahl besteht dabei oft zwischen Open-Source-Anwendungen wie Jenkins oder Managed Cloud-Services wie AWS.

Dieser Artikel konzentriert sich auf AWS CodePipeline und Jenkins. Verglichen werden Benutzerfreundlichkeit und Kosten. Außerdem wird diskutiert, ob Entwickler die beiden Tools gemeinsam nutzen können.

Was ist Jenkins?

Jenkins ist eines der beliebtesten Open Source CI/CD-Tools. Auch wenn das Projekt als Automatisierungsserver begann, hat die Jenkins-Community bereits mehr als 1.000 Plug-ins für das Tool entwickelt. Jenkins kann mit allen Public-Cloud-Anbietern und vielen Anwendungen, die die Entwicklerarbeit unterstützen, integriert werden, zum Beispiel GitLab, GitHub, Artifactory und HashiCorp Vault.

Die Vorteile von Jenkins liegen in Erweiterbarkeit und Preis – das Tool ist kostenlos. Der Nachteil ist, dass es nicht als SaaS verfügbar ist, was bedeutet, dass man alle verwendeten Plug-ins selbst bereitstellen und pflegen muss. Dies kann in großen Umgebungen mit Hunderten von Entwicklern umständlich sein.

Was ist AWS CodePipeline?

AWS CodePipeline ist ein verwaltetes CI/CD-Tool, das integrierte DevOps-Tools zur Verfügung stellt. CodePipeline ist eigentlich ein Set von Diensten. Es kombiniert CodeBuild, CodeDeploy und das Git-basierte Quellcode-Repository CodeCommit.

Auch wenn CodePipeline ein AWS-Tool ist, beschränkt es sich nicht auf die Amazon-Cloud. CodeDeploy kann auch für das lokale Deployment verwendet werden, indem man Agenten auf den privaten Servern ausführt.

Wenn man bereits ein CI-Tool in einer AWS-Umgebung betreibt oder Code in GitHub oder GitLab gespeichert hat, kann man diese Tools auch in CodePipeline integrieren und nur die Feature verwenden, die man benötigt. CodeDeploy lässt sich zum Beispiel einsetzen, um Code in EC2-Instanzen oder Amazon EC2 Container Service zu veröffentlichen.

AWS CodePipeline versus Jenkins

Nachdem Jenkins und AWS CodePipeline kurz vorgestellt wurden, werden nun die beiden Tools verglichen. Für diesen Zweck gehen wir davon aus, dass man über einen aktuellen Workload in AWS verfügt und prüft, ob man ein eigenes Jenkins Master-Agent-Setup hostet oder integrierte AWS-Tools verwendet.

Kosten

Auch wenn viele Unternehmen den Betrieb eines einzelnen Jenkins-Servers überleben, bietet dies keine ideale Leistung. Theoretisch ist es besser, wenn man mehr als ein Dutzend Entwickler hat, einen Jenkins-Master auf einer kleinen Instanz, beispielsweise einem reservierten t3.medium, auszuführen und Jenkins-Agenten bei Bedarf zu aktivieren, wenn man Jobs ausführen muss.

In diesem Szenario stellt der Jenkins-Master eine Benutzeroberfläche für die Konfiguration und Job-Planung zur Verfügung, während die Jobs tatsächlich auf Agenten ausgeführt werden. Die Verwendung bestimmt, wie viele Agenten man benötigt. Man muss außerdem auswerten, wie viele Stunden diese Instanzen pro Monat laufen. Wenn die Agenten 80 oder 90 Prozent der Zeit laufen, sollten man auch EC2 Reserved Instances einsetzen.

AWS CodePipeline kostet ein Dollar pro aktive Pipeline pro Monat. Man sollte sich allerdings von dieser Zahl nicht täuschen lassen. Man muss außerdem für die Rechenzeit von CodeBuild bezahlen. Es empfiehlt sich, während der Testphase die Gesamtkosten abzuschätzen, indem man berechnet, wie viele Builds man pro Monat auslöst, wie lange diese Builds dauern und welche Instanztypen man verwenden möchte. CodeDeploy ist kostenlos, wenn man auf EC2 oder AWS Lambda bereitstellt; es gibt allerdings einen kleinen Aufpreis für On-Premises-Instanzen - 0,02 Dollar pro Update.

Benutzerfreundlichkeit

Jenkins und AWS CodePipeline sind einfach zu bedienen und einzurichten. Die Installation von Jenkins kann in wenigen Minuten abgeschlossen werden. AWS bietet Templates, um mit der Erstellung der Pipelines zu beginnen. Diese basieren auf CodeBuild und CodeDeploy.

Da CodePipeline eine SaaS-Anwendung und bereits in die meisten Amazon Cloud-Services integriert ist, ist es für Entwickler, die sich bereits mit AWS auskennen, wahrscheinlich einfacher. AWS-Anwender können zum Beispiel die CodePipeline-Integration mit AWS Lambda nutzen, um benutzerdefinierte, durch Code definierte Funktionen auszulösen.

Integration

Integration ist der Punkt, an dem Jenkins glänzt, da es sehr viele Plug-ins bietet. CodePipeline arbeitet mit vielen nativen AWS-Angeboten, verfügt aber über eine relativ geringe Anzahl von zertifizierten Drittanbieterintegrationen.

Wenn man sich an das AWS-Ökosystem bindet und Entwickler die gesamte Arbeit auf Grundlage von AWS-Entwicklerwerkzeugen erledigen können, benötigt man unter Umständen keine zusätzlichen Integrationen. Man sollte jedoch beachten, dass man seine Pipelines im Laufe der Zeit möglicherweise nicht mit neuen Funktionen aktualisieren kann. CodePipeline bietet zum Beispiel keine standardmäßige Slack-Unterstützung für Benachrichtigungen. Demgegenüber ist die Integration von Slack und Jenkins mit wenigen Klicks möglich.

Obwohl CodePipeline und Jenkins jeweils als eigenständige CI/CD-Tools arbeiten, kann man sie gemeinsam in einem mehrstufigen Deployment verwenden. Zum Beispiel kann man in AWS CodePipeline eine vierstufige Pipeline erstellen, die Jenkins als Build-Server verwendet. Natürlich verlässt man sich dabei weiterhin auf ein Quell-Repository wie GitHub oder GitLab und benötigt eine Übermittlungstechnologie – wahrscheinlich AWS CodeDeploy –, damit der erstellte Code auf einen Server übertragen wird.

Nächste Schritte

AWS CodeCommit versus GitHub: Wo die Tools jeweils punkten.

Jenkins unterstützt eine umfassende DevOps-Kultur.

Sieben Tipps und Best Practices für effiziente Jenkins-Umgebungen.

Erfahren Sie mehr über Cloud-Software