Przewodnik dla manekinów: budowanie łańcuchów DevOps za pomocą narzędzi Open Source

Przewodnik dla manekinów: budowanie łańcuchów DevOps za pomocą narzędzi Open Source
Budowanie pierwszego łańcucha DevOps w pięciu krokach dla początkujących.

DevOps stał się panaceum na zbyt powolne, niepowiązane i w inny sposób problematyczne procesy programistyczne. Ale potrzebujesz minimalnej wiedzy w DevOps. Omówione zostaną koncepcje, takie jak łańcuch DevOps i jak go utworzyć w pięciu krokach. To nie jest kompletny przewodnik, a jedynie „ryba”, którą można rozbudować. Zacznijmy od historii.

Moje wprowadzenie do DevOps

Pracowałem z chmurami w Citi Group i tworzyłem aplikację internetową IaaS do zarządzania infrastrukturą chmurową Citi, ale zawsze interesowało mnie, jak zoptymalizować łańcuch rozwoju i poprawić kulturę wśród programistów. Greg Lavender, nasz dyrektor ds. technicznych w dziale Cloud Architecture and Infrastructure, polecił mi tę książkę. Projekt Feniks. Pięknie wyjaśnia zasady DevOps i czyta się jak powieść.

Tabela z tyłu pokazuje, jak często firmy wprowadzają nowe wersje:

Przewodnik dla manekinów: budowanie łańcuchów DevOps za pomocą narzędzi Open Source

W jaki sposób Amazon, Google i Netflix radzą sobie tak często? I to proste: wymyślili, jak stworzyć niemal idealny łańcuch DevOps.

W Citi sprawy wyglądały zupełnie inaczej, dopóki nie przeszliśmy na DevOps. Wtedy mój zespół miał różne środowiska, ale dostarczanie na serwer programistyczny wykonywaliśmy ręcznie. Wszyscy programiści mieli dostęp tylko do jednego serwera programistycznego opartego na IBM WebSphere Application Server Community Edition. Przy jednoczesnej próbie dostarczenia serwer „padał” i za każdym razem musieliśmy „boleśnie” negocjować między sobą. Mieliśmy również niewystarczające pokrycie kodu testami, czasochłonny ręczny proces dostarczania i brak możliwości śledzenia dostarczania kodu za pomocą jakiegoś zadania lub wymagania klienta.

Było jasne, że trzeba coś pilnie zrobić, i znalazłem podobnie myślącego współpracownika. Postanowiliśmy wspólnie stworzyć pierwszy łańcuch DevOps – on postawił maszynę wirtualną i serwer aplikacji Tomcat, a ja zająłem się Jenkinsem, integracją z Atlassian Jira i BitBucket oraz pokryciem kodu testami. Projekt zakończył się sukcesem: w pełni zautomatyzowaliśmy łańcuch rozwoju, osiągnęliśmy prawie 100% uptime na serwerze deweloperskim, byliśmy w stanie monitorować i ulepszać pokrycie kodu za pomocą testów, a oddział Git mógł być powiązany z dostawą i wydaniem Jira. I prawie wszystkie narzędzia, których użyliśmy do zbudowania łańcucha DevOps, były open source.

W rzeczywistości łańcuch został uproszczony, ponieważ nie zastosowaliśmy nawet zaawansowanych konfiguracji z wykorzystaniem Jenkinsa czy Ansible. Ale nam się udało. Być może jest to konsekwencja zasady Pareto (inaczej zasada 80/20).

Krótki opis łańcucha DevOps i CI/CD

DevOps ma różne definicje. DevOps, podobnie jak Agile, obejmuje różne dyscypliny. Jednak większość zgodzi się z następującą definicją: DevOps to metoda lub cykl życia tworzenia oprogramowania, której główną zasadą jest stworzenie kultury, w której programiści i inni pracownicy nadają „na tych samych falach”, praca fizyczna jest zautomatyzowana, każdy robi to, w czym jest najlepszy, zwiększa się częstotliwość dostaw, wzrasta wydajność pracy, zwiększa się elastyczność.

Chociaż same narzędzia nie wystarczą do stworzenia środowiska DevOps, są one niezbędne. Najważniejszym z nich jest ciągła integracja i ciągłe dostarczanie (CI/CD). Istnieją różne etapy łańcucha dla każdego środowiska (np. DEV (rozwój), INT (integracja), TST (testowanie), QA (zapewnienie jakości), UAT (testy akceptacji użytkownika), STG (przygotowanie), PROD (użytkowanie)) , ręczne zadania są zautomatyzowane, programiści mogą tworzyć wysokiej jakości kod, dostarczać go i łatwo przebudowywać.

W tej notatce opisano, jak utworzyć łańcuch DevOps w pięciu krokach, jak pokazano na poniższym obrazku, przy użyciu narzędzi open source.

Przewodnik dla manekinów: budowanie łańcuchów DevOps za pomocą narzędzi Open Source

Przejdźmy do interesów.

Krok 1: Platforma CI/CD

Przede wszystkim potrzebujesz narzędzia CI/CD. Jenkins to licencjonowane przez MIT narzędzie CI/CD o otwartym kodzie źródłowym, napisane w Javie, które spopularyzowało ruch DevOps i stało się de facto standardem CICD.

Co to jest Jenkins? Wyobraź sobie, że masz magiczny panel kontrolny dla różnych usług i narzędzi. Samo narzędzie CI/CD, takie jak Jenkins, jest bezużyteczne, ale z różnymi narzędziami i usługami staje się wszechmocne.

Oprócz Jenkinsa istnieje wiele innych narzędzi typu open source, wybierz dowolne.

Przewodnik dla manekinów: budowanie łańcuchów DevOps za pomocą narzędzi Open Source

Oto jak wygląda proces DevOps z narzędziem CI/CD

Przewodnik dla manekinów: budowanie łańcuchów DevOps za pomocą narzędzi Open Source

Masz narzędzie CI/CD w localhost, ale nie ma jeszcze wiele do zrobienia. Przejdźmy do następnego kroku.

Krok 2: Wersjonowanie

Najlepszym (i prawdopodobnie najłatwiejszym) sposobem przetestowania magii narzędzia CI/CD jest zintegrowanie go z narzędziem do zarządzania kontrolą źródła (SCM). Dlaczego potrzebujesz kontroli wersji? Załóżmy, że składasz wniosek. Piszesz to w Javie, Pythonie, C++, Go, Ruby, JavaScript lub jakimkolwiek innym języku, który jest wagonem i małym wózkiem. To, co piszesz, nazywa się kodem źródłowym. Na początku, zwłaszcza jeśli pracujesz sam, możesz zapisać wszystko w lokalnym katalogu. Jednak wraz z rozwojem projektu i dołączaniem większej liczby osób potrzebny jest sposób na udostępnianie zmian w kodzie, ale unikanie konfliktów podczas scalania zmian. Musisz też jakoś przywrócić poprzednie wersje bez użycia kopii zapasowych i metody kopiuj-wklej dla plików kodu.

A tu bez SCM nigdzie. SCM przechowuje kod w repozytoriach, zarządza jego wersjami i koordynuje go wśród programistów.

Istnieje wiele narzędzi SCM, ale Git zasłużenie stał się de facto standardem. Radzę z niego korzystać, ale są też inne opcje.

Przewodnik dla manekinów: budowanie łańcuchów DevOps za pomocą narzędzi Open Source

Oto jak wygląda potok DevOps po dodaniu SCM.

Przewodnik dla manekinów: budowanie łańcuchów DevOps za pomocą narzędzi Open Source

Narzędzie CI/CD może zautomatyzować przesyłanie i pobieranie kodu źródłowego oraz współpracę zespołową. Nie jest zły? Ale jak teraz zrobić z tego działającą aplikację, pokochaną przez miliardy użytkowników?

Krok 3: Narzędzie do automatyzacji kompilacji

Wszystko idzie tak, jak powinno. Możesz przesłać kod i zatwierdzić zmiany do kontroli źródła oraz zaprosić znajomych do współpracy. Ale nie masz jeszcze aplikacji. Aby była to aplikacja internetowa, musi zostać skompilowana i spakowana do dystrybucji lub uruchomiona jako plik wykonywalny. (Interpretowany język programowania, taki jak JavaScript lub PHP, nie musi być kompilowany).

Użyj narzędzia do automatyzacji kompilacji. Niezależnie od tego, które narzędzie wybierzesz, złoży ono kod we właściwym formacie i zautomatyzuje czyszczenie, kompilację, testowanie i dostarczanie. Narzędzia do kompilacji różnią się w zależności od języka, ale powszechnie używane są następujące opcje open source.

Przewodnik dla manekinów: budowanie łańcuchów DevOps za pomocą narzędzi Open Source

Doskonały! Teraz wstawmy pliki konfiguracyjne narzędzia do automatyzacji kompilacji do kontroli źródła, aby narzędzie CI/CD skompilowało je.

Przewodnik dla manekinów: budowanie łańcuchów DevOps za pomocą narzędzi Open Source

Czuje się dobrze. Ale gdzie to wszystko ma się teraz rozwinąć?

Krok 4: Serwer aplikacji sieci Web

Masz więc spakowany plik, który można wykonać lub wdrożyć. Aby aplikacja była naprawdę użyteczna, musi mieć jakąś usługę lub interfejs, ale trzeba to wszystko gdzieś umieścić.

Aplikację internetową można hostować na serwerze aplikacji internetowej. Serwer aplikacji zapewnia środowisko, w którym można wykonywać logikę spakowaną, renderować interfejsy i udostępniać usługi sieciowe za pośrednictwem gniazda. Do zainstalowania serwera aplikacji potrzebny jest serwer HTTP i kilka innych środowisk (na przykład maszyna wirtualna). Na razie udawajmy, że radzisz sobie z tym wszystkim na bieżąco (chociaż poniżej omówię kontenery).

Istnieje kilka otwartych serwerów aplikacji internetowych.

Przewodnik dla manekinów: budowanie łańcuchów DevOps za pomocą narzędzi Open Source

Mamy już prawie działający łańcuch DevOps. Dobra robota!

Przewodnik dla manekinów: budowanie łańcuchów DevOps za pomocą narzędzi Open Source

W zasadzie można się tu zatrzymać, potem samemu sobie z tym poradzić, ale warto mówić o jakości kodu.

Krok 5: Płaszcz testowy

Testowanie zajmuje dużo czasu i wysiłku, ale lepiej od razu znaleźć błędy i poprawić kod, aby zadowolić użytkowników końcowych. W tym celu istnieje wiele otwartych narzędzi, które nie tylko przetestują kod, ale również doradzą, jak go ulepszyć. Większość narzędzi CI/CD można podłączyć do tych narzędzi i zautomatyzować proces.

Testowanie dzieli się na dwie części: frameworki testowe do pisania i wykonywania testów oraz narzędzia z podpowiedziami poprawiającymi jakość kodu.

Frameworki testowe

Przewodnik dla manekinów: budowanie łańcuchów DevOps za pomocą narzędzi Open Source

Narzędzia z wysokiej jakości końcówkami

Przewodnik dla manekinów: budowanie łańcuchów DevOps za pomocą narzędzi Open Source

Większość z tych narzędzi i frameworków jest napisana dla Javy, Pythona i JavaScript, ponieważ C++ i C# są zastrzeżone (chociaż GCC jest open source).

Zastosowaliśmy narzędzia pokrycia testów, a teraz potok DevOps powinien wyglądać tak, jak na obrazku na początku samouczka.

Dodatkowe kroki

pojemniki

Jak powiedziałem wcześniej, serwer aplikacji może być hostowany na maszynie wirtualnej lub serwerze, ale bardziej popularne są kontenery.

Co to są kontenery? Krótko mówiąc, w maszynie wirtualnej system operacyjny często zajmuje więcej miejsca niż aplikacja, a kontener z kilkoma bibliotekami i konfiguracją zwykle wystarcza. W niektórych przypadkach maszyny wirtualne są niezbędne, ale kontener może pomieścić aplikację wraz z serwerem bez dodatkowych kosztów.

W przypadku kontenerów zwykle wybierane są Docker i Kubernetes, chociaż istnieją inne opcje.

Przewodnik dla manekinów: budowanie łańcuchów DevOps za pomocą narzędzi Open Source

Przeczytaj artykuły o Dockerze i Kubernetes na opensource.com:

Narzędzia do automatyzacji oprogramowania pośredniczącego

Nasz łańcuch DevOps koncentruje się na wspólnym budowaniu i dostarczaniu aplikacji, ale są też inne interesujące rzeczy, które możesz robić za pomocą narzędzi DevOps. Na przykład użyj narzędzi infrastruktury jako kodu (IaC), znanych również jako narzędzia do automatyzacji oprogramowania pośredniego. Te narzędzia pomagają zautomatyzować instalację, zarządzanie i inne zadania związane z oprogramowaniem pośrednim. Na przykład narzędzie do automatyzacji może pobierać aplikacje (serwer aplikacji WWW, bazę danych, narzędzia do monitorowania) z prawidłową konfiguracją i przekazywać je do serwera aplikacji.

Oto kilka opcji dla otwartych narzędzi do automatyzacji oprogramowania pośredniego:

Przewodnik dla manekinów: budowanie łańcuchów DevOps za pomocą narzędzi Open Source

Szczegóły w artykułach opensource.com:

A co teraz?

To tylko wierzchołek góry lodowej. Łańcuch DevOps może znacznie więcej. Zacznij od narzędzia CI/CD i zobacz, co jeszcze możesz zautomatyzować, aby ułatwić sobie pracę. Nie zapomnij o otwarte narzędzia komunikacji za efektywną współpracę.

Oto kilka innych dobrych artykułów DevOps dla początkujących:

Możesz także zintegrować DevOps z otwartymi narzędziami Agile:

Źródło: www.habr.com

Dodaj komentarz