Warum Jenkins zum Motor der Entwickler wird

Trends wie agile Entwicklung, Entwicklung und kontinuierliche Integration sprechen für die Notwendigkeit des modernen Unternehmens, Software hypereffizient zu erstellen - und bei Bedarf einen Cent einzuschalten.

Mit diesem letzteren Manöver wurde CloudBees zu dem Unternehmen, das es heute ist. CloudBees war einst ein unabhängiger, öffentlicher Cloud-PaaS-Anbieter für Java-Codierer (von Andrew Oliver in „Welches verdammte PaaS sollte ich verwenden?“ Hoch bewertet) und drehte sich vor 18 Monaten scharf um, um als führender Anbieter von Jenkins, einem sehr beliebten Open, neu zu starten Quellwerkzeug zur Verwaltung des Softwareentwicklungsprozesses.

Laut CEO Sasha Labourey war CloudBees als Java-PaaS-Anbieter "gut gewachsen", aber "viele der größeren Leute mit den größeren Schecks" zögerten, sich in einem volatilen PaaS-Markt zu engagieren, dem es an Standardisierung mangelte. Zur gleichen Zeit startete Jenkins wie eine Rakete - und Labourey sah eine große Chance, zumal CloudBees Jenkins bereits als Service anbot und bereits Kohsuke Kawaguchi, Jenkins 'Schöpfer, engagiert hatte. Die Jenkins-Beilage wurde zum Hauptgericht.

Der Jenkins-Moloch

Was steckt hinter Jenkins Popularität? Einfach ausgedrückt, Jenkins ist zum Open-Source-Standard für die Verwaltung der Entwicklerseite von Entwicklern geworden, von der Quellcodeverwaltung bis zur Bereitstellung von Code für die Produktion. Laut Labourey "sieht die Community Jenkins als Orchestrierungs- und Automatisierungs-Engine ... Ich denke, der Grund, warum Jenkins zur De-facto-Engine geworden ist, liegt darin, dass es extrem steckbar ist." Es ist ein Ökosystem mit mehr als 1.100 Plug-Ins entstanden, mit dem Kunden alle Arten von Funktionen hinzufügen und Jenkins in alles integrieren können, von Active Directory über GitHub bis hin zu OpenShift PaaS.

Jenkins ist eine Lösung für kontinuierliche Integration (CI) und kontinuierliche Lieferung (CD). Die Idee von CI ist es, Code von einzelnen Entwicklern mehrmals täglich zu einem Projekt zusammenzuführen und kontinuierlich zu testen, um nachgelagerte Probleme zu vermeiden. CD geht noch einen Schritt weiter, um sicherzustellen, dass der gesamte zusammengeführte Code immer produktionsbereit ist. Mit Jenkins können Entwickler diesen Prozess so weit wie möglich automatisieren - bis zur Bereitstellung. Labourey liefert ein Beispiel:

Angenommen, ein Unternehmen verwendet Chef oder Puppet für die Bereitstellung auf AWS. Jenkins wird das nicht ersetzen. Jenkins wird Puppet anrufen, um dies zu tun - OK, hier sind die Teile, also rufen wir dieses Puppet-Skript auf und sehen, wie es funktioniert. Und die Ausgabe von Puppets Ausführung wird für Jenkins von Bedeutung sein, da es möglicherweise beschließt, die Bereitstellung abzuwickeln und weitere Maßnahmen zu ergreifen. Wir nennen es "die Pipeline". Es ist wirklich diese Reihe von Schritten. Es können fünf Schritte oder 50 Schritte sein.

Laut Labourey dient Jenkins als Workflow-Engine für die Verwaltung dieser CI / CD-Pipeline von der Quelle bis zur Auslieferung. Auf dem Weg dorthin können jedoch viele verschiedene Tools erforderlich sein, um verschiedene Funktionen auszuführen.

Docker ist eines dieser Tools, und Docker hat in Zusammenarbeit mit Jenkins einen tiefgreifenden Einfluss auf die Entwicklungsteams. Jeder weiß, dass Docker die Entwicklung rationalisiert und die Bereitstellung erheblich vereinfacht, aber Labourey stellt fest, dass dies auch dazu beiträgt, die Entwickler ehrlich zu halten: Sie können keine Fehlkonfiguration der Entwicklungsumgebung mehr beschuldigen, wenn ein Build abstürzt und brennt. Auf einer physischen Maschine wird die Entwicklungsumgebung allmählich beschädigt, wodurch versehentlich Builds beschädigt werden. Wenn Sie jedoch auf einem makellosen Docker-Image codieren, ist nur Ihr eigener fehlerhafter Code schuld, wenn Builds nicht ausgeführt werden.

Zusammen bilden Jenkins und sein integriertes Ökosystem die koordinierende Software-Infrastruktur für eine agile Entwicklung und bilden im weiteren Sinne „den Kern der Devops-Initiative“, sagt Labourey.

Von hier aus dorthin

All diese Automatisierung und Effizienz der Entwickler klingt großartig, aber was ist mit Unternehmen, die sich kaum mit agiler Entwicklung beschäftigt haben? Labourey bietet Tipps zum Einstieg in CI / CD:

Ich denke, der beste Weg, dies zu tun, ist, klein anzufangen. Wählen Sie ein Projekt aus. Sagen Sie nicht: "OK, jetzt sind wir ein kontinuierlicher Lieferladen, alles läuft so." Beginnen Sie mit einem Team, das bereit ist, das vielleicht flexibler ist als andere Teams, vielleicht neuere Teammitglieder, die weniger in der bestehenden Vorgehensweise verankert sind. Wählen Sie ein einfaches Projekt. Versuchen Sie nicht, damit zu sagen, wenn alles funktioniert, wird alles funktionieren. Versuche nicht zu scheitern; versuche erfolgreich zu sein. Wählen Sie ein williges Team, wählen Sie ein einfaches Projekt, kommen Sie dorthin. Dieses Team wird Ihr bester Verkäufer sein, denn jetzt können Sie zeigen, dass es funktioniert. Sie können darüber sprechen, wie ihre Arbeit besser wurde, denn ehrlich gesagt ist der alte Weg langweilig.

Ein Teil des Prozesses, bemerkt Labourey, besteht darin, "das Wissen, das ruhig im Gehirn der Menschen sitzt, zu extrahieren und es als Logik in die Pipeline zu bringen". Das passiert nicht über Nacht. Oft beginnen Entwicklungsorganisationen damit, CI herauszuarbeiten und arbeiten sich im Laufe der Zeit in Richtung CD vor.

Entwicklungsorganisationen haben in der Regel sehr unterschiedliche, hochspezifische Anforderungen. Daher bietet CloudBees sowohl eine generische, abonnementbasierte SaaS-Version, die von CloudBees ausgeführt wird, als auch eine "private SaaS" -Version, die Kunden entweder auf AWS oder Azure (oder lokal auf OpenStack) bereitstellen und nach Herzenslust anpassen können.

Es ist schwer zu übertreiben, wie wichtig es ist, den Entwicklungsprozess zu orchestrieren, zu automatisieren und zu rationalisieren. CI / CD ist für Entwickler von zentraler Bedeutung, und eine erfolgreiche Implementierung von Entwicklern hat wiederum Auswirkungen, die über die IT hinaus auf das Geschäft selbst reichen. Durch die kontinuierliche Verbesserung der Software werden Produkte und Dienstleistungen kontinuierlich verbessert. Tesla hatte zum Beispiel einen schweren Rückschlag, als eines seiner Modelle in Brand geriet - und die Einführung eines Software-Upgrades behebt das Problem über Nacht.

"Es ist interessant, wenn Sie 10 Prozent mehr Effizienz erzielen. Wenn Sie 100 Millionen US-Dollar pro Jahr für IT ausgeben, ist das großartig - Sie haben 10 Millionen US-Dollar, die Sie woanders ausgeben können", sagt Labourey. "Der eigentliche Vorteil besteht jedoch darin, dass das Unternehmen erkennt, dass durch die Nutzung dieser Tools und die Vorgehensweise der Umsatz um 10 Prozent gesteigert werden kann."