Kriterien für die Bewertung von CI/CD Tools

Teil 1 der Serie

Schnelles Feedback bei der Auslieferung von Software ist wichtiger denn je. Für den Fachbereich ist echtes Anwenderfeedback wesentlich. Hier setzt Continuous Delivery an und automatisiert die Lieferkette bis in die Produktion. Gegenwärtig stehen eine Menge Continuous Integration/Continuous Delivery (CI/CD) Tools hierfür unterstützend zur Verfügung. Diese haben alle ihre Daseinsberechtigung mit ihren Stärken und Schwächen.

Anhand eines Kriterienkatalogs starten wir nun eine Blogserie, worin die Alternativen Jenkins (https://jenkins.io/), GitLab (https://gitlab.com/) und Concourse (https://concourse.ci/) bewertet werden.

Grafik
Grafik

 

Jenkins ist in dieser Blogserie mit dabei, weil es die größte Verbreitung unter den CI/CD Tools hat. Folglich stellt es einen Standard dar. GitLab wurde in dem Forrester Wave Report Q3 2017 als Leader im CI/CD Segment eingestuft (https://about.gitlab.com/2017/09/27/gitlab-leader-continuous-integration-forrester-wave/) und spielt daher eine essentielle Rolle unter den CI/CD Tools. Und als eine weitere Alternative haben wir uns für Concourse, einen Newcomer, entschieden. In Expertenforen erfreut sich Concourse gegenwärtig großer Beliebtheit, weil es neue Konzepte im CI/CD Segment etabliert, die wir unter die Lupe nehmen werden.

Für die Erhebung der relevanten Kriterien haben wir eine unternehmensweite Umfrage durchgeführt. Auf Basis dieser Umfrage ist ein Kriterienkatalog entstanden, der sich aus den folgenden Kategorien zusammensetzt.

  • Kostenkriterien – Der Kostenaspekt sollte vorab gut durchleuchtet werden, damit später keine überraschenden Kosten entstehen, die das Projektbudget überfordern. Betrachtet werden hierbei die On-Premises- und die SaaS-Lösungen des jeweiligen Anbieters, um auch bei einer notwendigen Migration in keine hohen Kosten zu laufen.
  • Kriterien für die Skalierung – Bedingt durch mehrere Faktoren, wie z.B. die Architektur oder der Geschäftserfolg, steigt rasch die Anzahl von Teams in einem Projekt. Hierdurch entsteht mehr Last für ein CI/CD Tool. Teams müssen länger auf die Ressourcen warten und erhalten folglich sehr spät ein Feedback. Den meisten Tools liegt ein Remote-Agent-Konzept zugrunde, um die Last auf mehrere Maschinen zu verteilen und so den Entwicklungsanforderungen zu genügen. Doch, ermöglicht dieses Konzept auch die effiziente Nutzung der Ressourcen mit mehreren Teams, und können auch Projekte hierfür priorisiert werden?
  • Kriterien für Build-Möglichkeiten – Moderne Anwendungen setzen sich aus mehreren Komponenten zusammen. Die Entwicklung verläuft parallel und unabhängig voneinander. Verschiedene Programmiersprachen kommen hierfür zum Einsatz. Diese Heterogenität spiegelt sich auch in den Build Tools wieder. In dieser Kategorie recherchieren wir, welche Build Tools unterstützt werden und wie granular die Konfiguration erfolgt.
  • Kriterien für Rechteverwaltung von Benutzern und Gruppen – Die Umfrage hat gezeigt, dass eine durchdringende Rechteverwaltung immer mehr an Bedeutung gewinnt. Entwicklungsteams arbeiten meistens in mehreren Projekten und haben jeweils verschiedene Rollen und Rechte. Der Fokus richtet sich hierbei auf die Konfiguration auf Rollen- und Projektebene.
  • Kriterien für Container-Management – Immer mehr Anwendungen laufen gekapselt in Containern. Weshalb auch immer mehr Unternehmen auf den Zug springen und dabei auf die Unterstützung von containerbasierten Laufzeitumgebungen zählen. Je besser die Anbindung zwischen einem CI/CD Tool und der Laufzeitumgebung ist, desto einfacher kann das Produkt dem Endkunden zur Verfügung gestellt werden.
  • Kriterien für Notifications & Monitoring – Schnelles Feedback ist ein wichtiges DevOps-Prinzip. Um ein schnelles Feedback zu erhalten, ermöglichen CI/CD Tools die Konfiguration von Notifications und die Überwachung (Monitoring) von Ereignissen und Abläufen. Bspw. kann eine Benachrichtigung über den Build-Status an ein ChatOps Tool versendet werden. Oder der Buildstatus wird zur Laufzeit visuell dargestellt.
  • Anderweitige Kriterien – Kriterien, die sich in den zuvor genannten Kategorien nicht widerspiegeln, aber dennoch zu einer Auf- oder Abwertung eines CI/CD Tools führen, sind in diesem Abschnitt aufgeführt. Wie z. B. die Erweiterbarkeit in Form von Plug-Ins oder der Support durch die Community.

Resultierend kann der Kriterienkatalog für jedes CI/CD Tool verwendet werden, um eine solide Bewertung zu erhalten. Ergänzend zu den o. g. Kategorien, sind allerdings die spezifischen Anforderungen für eine Toolauswahl immer vorerst zu ermitteln. Die wesentlichen Bestandteile hierfür sind die eingesetzte Ausführungsumgebung, das Branching Modell, das Staging Konzept, die Teststrategie und die Organisationsstruktur. Diese können dann in weiteren Kategorien ergänzt werden.

Dieser Beitrag wurde unter Software Engineering veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s