Dlaczego Jenkins staje się silnikiem DevOps

Trendy, takie jak programowanie zwinne, devops i ciągła integracja, świadczą o potrzebie hiperefektywnego tworzenia oprogramowania w nowoczesnym przedsiębiorstwie - i, jeśli to konieczne, włączenia go w mgnieniu oka.

Tym ostatnim manewrem jest sposób, w jaki CloudBees stał się firmą, którą jest dzisiaj. Niegdyś niezależny dostawca usługi PaaS w chmurze publicznej dla programistów Java (wysoko oceniony przez Andrew Olivera w artykule „Który cholerny PaaS powinienem użyć?”), CloudBees 18 miesięcy temu gwałtownie obrócił się, aby ponownie zostać wiodącym dostawcą Jenkins, bardzo popularnego otwartego źródłowe narzędzie do zarządzania procesem wytwarzania oprogramowania.

Według CEO Sashy Labourey, jako dostawca Java PaaS CloudBees „ładnie się rozwijał”, ale „wielu większych facetów z większymi czekami” wahało się, czy zaangażować się na zmiennym rynku PaaS, któremu brakowało standaryzacji. W tym samym czasie Jenkins startował jak rakieta - a Labourey dostrzegł wielką szansę, zwłaszcza że CloudBees już oferował Jenkins jako usługę i zatrudnił już Kohsuke Kawaguchi, twórcę Jenkinsa. Danie główne Jenkinsa stało się daniem głównym.

Juggernaut Jenkinsa

Co kryje się za popularnością Jenkinsa? Mówiąc najprościej, Jenkins stał się standardem open source do zarządzania stroną deweloperską DevOps, od zarządzania kodem źródłowym po dostarczanie kodu do produkcji. Według Labourey: „Społeczność postrzega Jenkins jako mechanizm orkiestracji i automatyzacji ... Myślę, że powodem, dla którego Jenkins stał się de facto silnikiem, jest to, że jest on niezwykle łatwy w podłączaniu”. Powstał ekosystem ponad 1100 wtyczek, umożliwiający klientom dodawanie różnych funkcji i integrację Jenkinsa ze wszystkim, od Active Directory, przez GitHub, po OpenShift PaaS.

Jenkins to rozwiązanie ciągłej integracji (CI) i ciągłego dostarczania (CD). Ideą CI jest scalanie kodu poszczególnych programistów w projekt wiele razy dziennie i ciągłe testowanie, aby uniknąć problemów z późniejszymi etapami. CD idzie o krok dalej, aby zapewnić, że cały scalony kod jest zawsze w stanie gotowości do produkcji. Jenkins umożliwia programistom maksymalne zautomatyzowanie tego procesu - aż do momentu wdrożenia. Labourey podaje przykład:

Załóżmy, że firma korzysta z programu Chef lub Puppet do wdrażania na AWS. Jenkins tego nie zastąpi. Jenkins będzie wywoływał Puppet, aby to zrobić - OK, oto bity, więc nazwijmy ten skrypt Puppet i zobaczmy, jak to działa. Wynik wykonania Puppet będzie miał znaczenie dla Jenkinsa, ponieważ może on zdecydować o rozwinięciu wdrożenia i podjęciu dalszych działań. Nazywamy to „rurociągiem”. To naprawdę ta seria kroków. Może to być pięć kroków lub 50 kroków.

Labourey mówi, że Jenkins służy jako silnik przepływu pracy do zarządzania tym potokiem CI / CD od źródła do dostawy, ale po drodze może być używanych wiele różnych narzędzi do wykonywania różnych funkcji.

Docker jest jednym z tych narzędzi, a Docker w połączeniu z Jenkinsem ma głęboki wpływ na zespoły programistyczne. Wszyscy wiedzą, że Docker usprawnia rozwój i znacznie ułatwia wdrażanie, ale Labourey zauważa, że ​​pomaga to również zachować uczciwość programistów: nie mogą już winić błędnej konfiguracji środowiska programistycznego, gdy kompilacja ulega awarii i spala się. Na komputerze fizycznym środowisko programistyczne stopniowo ulega uszkodzeniu, co powoduje nieumyślne uszkodzenie kompilacji. Ale kiedy kodujesz na nieskazitelnym obrazie Dockera, masz tylko swój własny wadliwy kod, który możesz obwinić, gdy kompilacje nie będą działać.

Razem Jenkins i jego zintegrowany ekosystem zapewniają koordynującą infrastrukturę oprogramowania do zwinnego rozwoju i, szerzej, tworzą „rdzeń inicjatywy DevOps” - mówi Labourey.

Jak się tam dostać

Cała ta automatyzacja i wydajność DevOps brzmią świetnie, ale co z organizacjami, które ledwo zwróciły uwagę na zwinny programowanie? Labourey oferuje porady dotyczące wchodzenia w CI / CD:

Myślę, że najlepszym sposobem na to jest zacząć od czegoś małego. Wybierz projekt. Nie mów: „OK, teraz jesteśmy sklepem z ciągłą dostawą, wszystko idzie w ten sposób”. Zacznij od zespołu, który jest chętny, może być bardziej elastyczny niż inne zespoły, być może nowi członkowie zespołu, mniej zakorzenieni w dotychczasowym sposobie działania. Wybierz łatwy projekt. Nie próbuj tego używać jako sposobu na stwierdzenie, że jeśli to zadziała, wszystko będzie działać. Nie próbuj zawieść; spróbuj odnieść sukces. Wybierz chętny zespół, wybierz łatwy projekt i dotrzyj do celu. Ten zespół będzie Twoim najlepszym sprzedawcą, ponieważ teraz możesz pokazać, że to działa. Mogą porozmawiać o tym, jak ich praca stała się lepsza, ponieważ, szczerze mówiąc, stary sposób jest nudny.

Labourey zauważa, że ​​częścią tego procesu jest „wydobycie wiedzy, która znajduje się cicho w ludzkich mózgach i wprowadzenie jej do potoku jako logiki”. Nie dzieje się to z dnia na dzień. Często organizacje zajmujące się rozwojem zaczynają od wymyślenia CI i z czasem pracują nad CD.

Organizacje zajmujące się rozwojem mają zwykle bardzo zróżnicowane, bardzo szczegółowe wymagania. Dlatego CloudBees oferuje zarówno ogólną, opartą na subskrypcji wersję SaaS obsługiwaną przez CloudBees, jak i wersję „prywatną SaaS”, którą klienci mogą wdrożyć na platformie AWS lub Azure (lub lokalnie na OpenStack) i dostosować ją do swoich potrzeb.

Trudno przecenić znaczenie orkiestracji, automatyzacji i usprawniania procesu programowania. CI / CD ma kluczowe znaczenie dla DevOps, a udana implementacja DevOps ma z kolei konsekwencje, które wykraczają poza IT na sam biznes. Stale ulepszane oprogramowanie nieustannie ulepsza produkty i usługi. Na przykład Tesla miał poważną porażkę, gdy jeden z jej modeli zapalił się - a wprowadzenie aktualizacji oprogramowania rozwiązało problem z dnia na dzień.

„To interesujące, jeśli uzyskasz 10% większą wydajność; jeśli wydajesz 100 milionów dolarów rocznie na IT, to świetnie - masz 10 milionów dolarów, które możesz wydać gdzie indziej” - mówi Labourey. „Ale prawdziwa korzyść jest wtedy, gdy firma zdaje sobie sprawę, że wykorzystując te narzędzia i ten sposób robienia rzeczy, może zwiększyć sprzedaż o 10 procent”.