CI / CD-Vergleich: Verwenden von Managed Providers im Vergleich zu Self-Hosting

Einführung

Kontinuierliche Integration, Bereitstellung und Bereitstellung sind eine Sammlung von Vorgehensweisen, mit denen Teams schneller zuverlässigere Software erstellen können. Während es sich bei CI / CD in erster Linie um eine Reihe von Prinzipien und Methoden handelt, spielt das Werkzeug eine wichtige Rolle, um die Ideale der Philosophie zu einer praktischen Option zu machen.

CI / CD-Systeme unterstützen Teams bei der Integration oder Integration neuer Änderungen in die Software, indem sie automatisch Commits für freigegebene Repositorys erstellen oder verpacken. Sie führen Testsuiten für jedes neue Build aus und stufen es automatisch in selektivere Umgebungen um, wenn die Tests erfolgreich sind. Versionen des Builds, die die gesamte Pipeline durchlaufen, können automatisch auf Live-Produktionssystemen bereitgestellt oder für die manuelle Bereitstellung in die Warteschlange gestellt werden. Aufgrund ihrer umfassenden Zuständigkeiten berühren CI / CD-Systeme normalerweise große Teile der internen Umgebung und Infrastruktur.

https://www.digitalocean.com/community/tutorials/ci-cd-tools-comparison-jenkins-gitlab-ci-buildbot-drone-and-concourse[Es kann schwierig sein, das richtige CI / CD-System auszuwählen Die Optionen lassen sich in zwei Kategorien unterteilen: verwaltete CI / CD-Dienste, auf die über einen Anbieter zugegriffen wird, und selbst gehostete Dienste, die Sie selbst einrichten und verwalten können. In diesem Handbuch wird erläutert, wie sich diese beiden Hauptgruppen von Software in verschiedenen Kategorien unterscheiden, und es werden einige gemischte Ansätze erwähnt, die versuchen, einen guten Mittelweg zu bieten. Die beste Software für den Job hängt in hohem Maße von den Anforderungen Ihres Unternehmens sowie von den Fähigkeiten und Prioritäten Ihrer Teams ab.

Infrastruktur verwalten

Einer der Hauptunterschiede zwischen der Verwendung eines verwalteten CI / CD-Dienstes und der Ausführung eigener selbst gehosteter Dienste ist das Infrastrukturmanagement. CI / CD-Systeme erfordern Ressourcen, und wie bei jeder Infrastruktur bedeutet dies, dass die Integrität der Dienste und der zugrunde liegenden Hostsysteme gewartet werden muss. Die Zeit, das Geld und die Werte Ihres Unternehmens bestimmen normalerweise, welche Lösung Ihren Zielen in dieser Kategorie am besten entspricht.

Verwaltete CI / CD-Dienste

Managed Services werden vollständig von einer externen Organisation gehostet und überwacht, die CI / CD-Funktionen anbietet. Die externe Organisation übernimmt die Verantwortung für die Ausführung und Skalierung ihrer Dienste, die Aufrechterhaltung der Integrität ihrer Serverflotte und den sicheren und benutzerfreundlichen Zugriff auf die Dienste. Dies ist in der Regel der größte Wert, den verwaltete CI / CD-Services bieten, und kann durch die Zusammenfassung und Zusammenfassung von Komplexität eine große Menge an Arbeit von Ihrem Team entlasten.

Während verwaltete Lösungen einen Teil der Arbeit delegieren und es Ihren Teams ermöglichen, sich auf andere Belange zu konzentrieren, ist es in einigen Bereichen möglicherweise nicht sinnvoll, die Kontrolle über Ihre Infrastruktur nach außen zu verlagern. Wenn Compliance oder Ihre eigenen organisatorischen Standards eine strenge Kontrolle über Ihre Prozesse, einen streng regulierten Zugriff auf Ihren Code oder Ihre Daten oder spezielle Anforderungen erfordern, die von externen Partnern nicht garantiert werden können, ist die Verwaltung Ihrer eigenen Services möglicherweise Ihre einzige Option.

Selbst gehostete CI / CD-Dienste

Wenn Sie Ihre CI / CD-Systeme selbst hosten, sind Sie dafür verantwortlich, Infrastrukturentscheidungen zu treffen, die zugrunde liegenden Server funktionsfähig zu halten, indem Sie Hardware und Patch-Software warten und sicherstellen, dass die Dienste verfügbar und sicher sind und eine angemessene Leistung erbringen. Dies ist ein großer Bereich zusätzlicher Verantwortung, der möglicherweise außerhalb des Fachwissens Ihres Teams liegt und über das hinausgeht, wofür Sie Zeit einplanen können.

Da das CI / CD-System über einen breiten Sicherheitszugriff verfügt und für die Entwicklung des Vertrauens in die Änderungen, die Sie an Ihren Projekten vornehmen, von entscheidender Bedeutung ist, muss es von Ihrem Team als wichtige und nicht als ergänzende Komponente behandelt werden. Ausfallzeiten Ihrer kontinuierlichen Systeme können die Produktivität und Leistungsfähigkeit Ihres gesamten Teams beeinträchtigen. Während das CI / CD-System nicht Ihr Hauptprojekt ist und als Hilfsmittel für Ihr Unternehmen gedacht ist, sollte die Verantwortung für dessen Verwaltung nicht leichtfertig übernommen werden.

Sicherheit und Vertrauen

Ein weiterer wesentlicher Unterschied zwischen der Verwendung eines verwalteten Anbieters und dem Self-Hosting Ihres eigenen kontinuierlichen Integrations-, Bereitstellungs- und Bereitstellungsdienstes besteht im Zusammenspiel von Sicherheit und Vertrauen. Ihr CI / CD-System hat Zugriff auf Ihre Codebasis und kann in mehreren Umgebungen bereitgestellt werden. Dies bedeutet, dass Sie sich stark auf die Sicherheit Ihrer CI / CD-Systeme konzentrieren müssen. Für verwaltete Lösungen müssen Sie zusätzlich Ihr Vertrauen in den externen Anbieter bewerten.

Verwaltete CI / CD-Dienste

In vielerlei Hinsicht erleichtern verwaltete CI / CD-Dienste den meisten Unternehmen die Sicherheit erheblich. Wenn Sie keine speziellen behördlichen Anforderungen haben, bieten die meisten Anbieter zuverlässige Sicherheit, die über verschlüsselte Kanäle auf Ihre Codebasis zugreift, Ihre Tests in isolierten Umgebungen ausführt usw. Da sich Ihr Anbieter nur mit CI / CD befasst, verfügt er in der Regel über den Fokus und das Know-how, um den Dienst angemessen gegen Bedrohungen wie unbefugten Zugriff und versehentliche Offenlegung vertraulicher Informationen abzusperren. Ihr Sicherheitsfußabdruck ist genau definiert und liegt in ihrem Kompetenzbereich.

Wenn Sie jedoch eine verwaltete Lösung verwenden, hängt ein Großteil der Sicherheit Ihres Unternehmens von Ihren Fähigkeiten und der Integrität Ihres CI / CD-Anbieters ab. Sie geben die Verantwortung an eine externe Partei weiter, was Ihr Team entlastet, aber auch ein gewisses Maß an Rechenschaftspflicht und Kontrolle aufgibt. Zu den Nachteilen zählen beispielsweise die Unfähigkeit, Sicherheitsmechanismen zu implementieren, die von Ihrem Provider nicht unterstützt werden, die Abhängigkeit von Ihrem Provider, um Sicherheitslücken mit hohem Risiko schnell auszubessern, und die Anforderung, dass Ihr Provider offen über Vorfälle und Sicherheitsberichte ist, die er erhält .

Selbst gehostete CI / CD-Dienste

Selbst gehostete CI / CD-Dienste haben unterschiedliche Sicherheitsherausforderungen. Die Sicherheit des gesamten Systems liegt nun in Ihrer eigenen Verantwortung. Dies bedeutet, dass Ihre Teams sichere, isolierte Umgebungen für Ihre Dienste und Bereitstellungen konfigurieren müssen, schnell auf Zero-Day-Meldungen für alle an Ihrem CI / CD beteiligten Technologien reagieren müssen, strenge Zugriffskontrollmechanismen implementieren und das gesamte Ausmaß von verstehen müssen den Sicherheitsabdruck des Systems. Dies kann eine unglaublich zeitaufwendige und schwierige Aufgabe sein, für deren ordnungsgemäße Verwaltung wahrscheinlich ein Vollzeit-Verwaltungs- oder Sicherheitsteam erforderlich ist. Wenn Sie noch keine Teams für diese Aufgaben in anderen Teilen Ihrer Infrastruktur haben, ist es möglicherweise schwierig, sie zu verwalten, wenn Ihr Projekt wächst.

Die Verwaltung Ihres eigenen Service bedeutet jedoch, dass Sie auch über ein Maß an Flexibilität und Kontrolle über Ihre Sicherheitsprozesse und Tools verfügen, die sonst nicht möglich wären. Ihr Team kann schnell auf Bedrohungen reagieren, anstatt darauf zu warten, dass andere Probleme lösen. Ihre CI / CD-Infrastruktur kann sicher innerhalb Ihrer eigenen Infrastruktur hinter mehreren Schutzebenen bereitgestellt werden. Wenn Sie Ihre Code-Repositorys selbst hosten, minimieren Sie die Oberfläche, auf die potenzielle Bedrohungen abzielen können. Wenn Sie für die Interaktion mit einem so wichtigen Tool nicht mehr auf Ihre eigenen privaten Netzwerke und gesicherten Umkreis zugreifen müssen, können Sie die Gefahr von Sicherheitslücken minimieren.

Integrationen

Da CI / CD-Systeme ein Koordinierungspunkt für verschiedene Umgebungen und viele andere Softwarekomponenten sind, ist es wichtig zu berücksichtigen, wie einfach sich unterschiedliche Lösungen in andere von Ihnen verwendete Tools oder Systeme integrieren lassen. Jedes kontinuierliche Integrationssystem verfügt über eine Reihe von Projekten, die sie nativ unterstützen. Einige Systeme sind mit Plug-in-Frameworks ausgestattet, mit denen Benutzer Erweiterungen erstellen oder verwenden können, um die Funktionalität oder Interoperabilität der Plattform zu verbessern. All diese Punkte sollten bei der Auswahl eines CI / CD-Systems berücksichtigt werden.

Verwaltete CI / CD-Dienste

Im Allgemeinen stellen verwaltete CI / CD-Lösungen in der Regel eine Reihe von Anbietern bereit, für die Kompatibilität und Support gewährleistet sind. Diese erstklassigen Systeme sind häufig beliebte, bekannte Repository-Anbieter und Entwicklertools, die zuverlässig und vorhersehbar sind. Aufgrund des relativ eingeschränkten Integrationsspielraums können die für ihre Wartung zuständigen Teams in der Regel enge Integrationen entwickeln und schnell auf Änderungen von Abhängigkeiten reagieren, um sicherzustellen, dass die Funktionalität des Systems nicht unter den wichtigsten Änderungen leidet.

Diese zuverlässige, enge Integration mit gängigen Diensten funktioniert sehr gut, wenn sie den Anforderungen Ihres Projekts entspricht. Dies spart Ihrem Unternehmen Zeit und Energie bei der Behebung von Problemen mit der Kompatibilität, bei der genauen Verfolgung von Abhängigkeitsaktualisierungen und bei der Übersetzung zwischen Systemen, die nicht von Haus aus kommunizieren. Wenn Ihre Abhängigkeiten oder Softwareanforderungen jedoch außerhalb des von einem verwalteten Anbieter unterstützten Satzes liegen, können Sie dieses Problem im Allgemeinen kaum umgehen. Ihre Auswahl für andere Tools wird möglicherweise durch die Projekte eingeschränkt, die Ihr CI / CD-Anbieter unterstützt.

Selbst gehostete CI / CD-Dienste

Self-Hosted-Services verfügen häufig über eine vielschichtigere Projektlandschaft, mit der sie interagieren können. Da die meisten selbst gehosteten Lösungen Open Source sind, können Benutzer und Organisationen häufig den Support beeinflussen, der zum System hinzugefügt wird. Obwohl es sich nicht ausschließlich um ein Feature von selbst gehosteten Diensten handelt, verfügen viele Projekte über Plug-In-Systeme mit umfangreichen Integrationsbibliotheken, die zur Unterstützung vieler verschiedener Projekte und Anwendungsfälle beitragen. Die Chancen, eine Integration zu finden, sind viel höher, wenn die Community aktiv zur Entwicklung des Produkts und der zugehörigen Komponenten beitragen kann.

Der Nachteil des Engagements der Gemeinschaft besteht darin, dass die Qualität der Integrationen erheblich variieren kann. Die Integration mit gängigen Diensten wird wahrscheinlich gut aufrechterhalten und in gutem Zustand gehalten, aber für jede Integration, die außerhalb dieses Bereichs liegt, sind möglicherweise intensive Tests erforderlich, um die Richtigkeit und Verwendbarkeit der Integration zu überprüfen. Diese weniger populären Integrationen können stagnieren und leicht abbrechen, wenn Änderungen an abhängigen Projekten vorgenommen werden oder wenn sie nicht regelmäßig aktualisiert werden, um die aktuellen Versionen des CI / CD-Systems zu verfolgen. Darüber hinaus kann es mit von der Community bereitgestellten Plugins schwierig sein, Unterstützung zu erhalten, über das Einreichen eines Berichts zu einem Issue-Tracker oder das Aufrufen informeller Peer-to-Peer-Hilfe durch Community-Foren oder IRC-Kanäle hinaus. Bei kritischen Integrationen muss Ihr Team möglicherweise die Verantwortung für die interne Unterstützung und Wartung von Komponenten übernehmen.

Aufwand

Schließlich ist einer der größten Unterschiede zwischen verwalteten CI / CD-Anbietern und dem Selbst-Hosting Ihres eigenen Dienstes der Preis. Managed Services kosten aufgrund des Mehrwerts im Voraus fast immer mehr. Dies kann jedoch je nach Umfang und Anforderungen Ihres Projekts und der von Ihnen gewählten Lösung unterschiedlich ausfallen. Sie müssen Ihre aktuellen und zukünftigen Anforderungen analysieren, um festzustellen, welche Kosten für Ihr Projekt später unhaltbar werden könnten.

Verwaltete CI / CD-Dienste

Verwaltete CI / CD-Dienste sind bei Betrachtung der Basisnummern fast immer teurer als selbstverwaltete. Bei verwalteten Anbietern beauftragen Sie eine externe Organisation, die einen Teil der CI / CD-Arbeit für Sie erledigt. Sie können also damit rechnen, dass Sie die Arbeit bezahlen, die Sie auslagern. Die Kosten können jedoch erheblich variieren. Die Preismodelle unterscheiden sich von Service zu Service, wobei die Gebühren von Unternehmen unter anderem auf Faktoren wie Anzahl der Benutzer, Anzahl der gleichzeitigen Jobs, Art und Umfang der dedizierten Computerressourcen, Anzahl der Projekte, Erstellungsminuten pro Monat und Umfang der Parallelität basieren .

Verwaltete Anbieter sind in der Regel recht günstig, können jedoch im Zuge der Skalierung Ihres Unternehmens schnell teurer werden. Wenn Ihre Projekte ausgereift sind, müssen Sie möglicherweise plötzlich zusätzliche Serviceebenen verwenden, die nicht ohne Weiteres in Ihr Budget passen. Bei der Betrachtung von Anbietern ist es wichtig, die aktuellen Kosten zu berücksichtigen und zu prognostizieren, wie sie in Zukunft in unterschiedlichen Szenarien aussehen könnten. Beachten Sie auch die Preisstabilität des Anbieters, um die Wahrscheinlichkeit einer Preisänderung zu minimieren, die Ihre Pläne stört. Wenn Sie eine gründliche Analyse durchführen, können Sie die Preisstruktur des von Ihnen genutzten Dienstes verstehen und eine angemessene Budgetierung vornehmen, um die Gesamtbetriebskosten viel einfacher als bei Self-Hosting-Diensten vorauszusehen.

Selbst gehostete CI / CD-Dienste

Selbst gehostete CI / CD-Systeme sind normalerweise auf den ersten Blick die billigere Option, können jedoch einige versteckte Kosten verursachen, die bewertet werden sollten. Für selbst gehostete Optionen sind Rechenressourcen erforderlich. Daher sind die Anschaffungskosten für die Infrastruktur, mit der Ihre fortlaufenden Systeme betrieben werden, anfangs am höchsten. Dies ist zu einer kostengünstigen Option geworden, da Cloud-Computing-Plattformen für die Infrastruktur als Service immer beliebter werden. Bei selbst gehosteten CI / CD-Systemen steigen die Kosten tendenziell linearer als bei verwalteten Diensten, da zusätzliche Infrastrukturen bereitgestellt und für vorhersehbare Kosten konfiguriert werden können, wenn sich die Anforderungen ändern.

Der Preis für die Infrastruktur ist jedoch nur eine Komponente der Betriebskosten für den Betrieb Ihrer eigenen CI / CD-Dienste. Durch die Entscheidung, Ihre eigenen Systeme zu betreiben, übernimmt Ihr Team eine erhebliche Menge zusätzlicher Arbeit und Verantwortung. Während Sie skalieren, muss das interne Team, das für die Verwaltung Ihrer Tests und Bereitstellung verantwortlich ist, möglicherweise wachsen und komplexere Prozesse entwickeln. Dies hat sowohl direkte Kosten für die Einstellung und Schulung von internem Personal als auch indirekte Opportunitätskosten zur Folge, die entstehen, wenn sich diese Personen auf die Verwaltung Ihrer CI / CD-Systeme konzentrieren, anstatt an Produktfunktionen oder anderen Arbeiten zu arbeiten. Insgesamt sind selbst gehostete Dienste in Bezug auf die Infrastruktur in der Regel viel einfacher zu beurteilen, in Bezug auf die Gesamtbetriebskosten jedoch schwieriger.

Gibt es einen Mittelweg?

Wir haben einige der Unterschiede zwischen verwalteten und selbst gehosteten CI / CD-Diensten erwähnt, aber es gibt auch einige hybride Ansätze, die für bestimmte Organisationen besser geeignet sein könnten. Einige verwaltete Anbieter bieten lokale Versionen ihres Dienstes als Alternative zu ihren webbasierten Software-as-a-Service-Angeboten an. Dies kann dazu beitragen, die Lücke zwischen Selbsthosting und externem Management zu schließen, wenn Ihre Organisation Anforderungen hat, die eine Schnittstelle zu einem externen Anbieter erschweren.

Wenn Ihre Sicherheitsanforderungen beispielsweise vorschreiben, dass Ihr Code Ihr internes Netzwerk nicht verlässt, können lokale Bereitstellungen von kostenpflichtigen oder Unternehmens-CI / CD-Lösungen in Betracht gezogen werden. Dies kann die Kontrolle über Ihr Netzwerk und die für die Systeme verwendete Infrastruktur ermöglichen, ohne die Unterstützung und Rechenschaftspflicht zu beeinträchtigen, die ein externer Vertrag möglicherweise gewährleisten kann. Vor Ort bezahlte CI / CD können dazu beitragen, einige der potenziellen Herausforderungen bei der Verwendung eines verwalteten Dienstes zu bewältigen. Dies ist jedoch keine perfekte Lösung. Dies kann möglicherweise bei einigen Compliance-, Sicherheits- und Vertrauensproblemen Abhilfe schaffen, ist jedoch sehr teuer und erfordert wahrscheinlich, dass Ihre eigenen Mitarbeiter einen Teil der Verwaltungsaufgaben übernehmen. Eine Hybridlösung weist einige der Vor- und Nachteile der beiden anderen Kategorien auf.

Fazit

Sowohl verwaltete CI / CD-Anbieter als auch selbst gehostete Lösungen können dazu beitragen, Ihre Entwicklungs- und Veröffentlichungspraktiken zu verbessern und zuverlässigere Produkte mit mehr Vertrauen bereitzustellen. Wir haben die wichtigsten Unterschiede zwischen diesen beiden Hauptoptionen, einige der Faktoren, die Ihre Entscheidung beeinflussen können, und die potenziellen Herausforderungen, die Sie bei jeder Auswahl bewältigen müssen, behandelt. Wir haben auch kurz über Angebote gesprochen, die versuchen, die Grenze zwischen Self-Hosting und verwalteten Lösungen zu überschreiten. Letztendlich helfen Ihnen die spezifischen Anforderungen, das Budget und die Verwaltungsbandbreite Ihres Unternehmens bei der Entscheidung, welche Option die richtigen Kompromisse bietet.