Narzędzia DevOps, których każdy powinien się nauczyć w 2020 roku

Zacznij korzystać z najlepszych narzędzi DevOps już dziś!

Narzędzia DevOps, których każdy powinien się nauczyć w 2020 roku
Rewolucja DevOps w końcu zawładnęła światem, a narzędzia DevOps stały się niezwykle popularne. Według serwisu Google Trends, liczba zapytań o „narzędzia DevOps” stale rośnie i tendencja ta utrzymuje się.

Metodologia DevOps obejmuje cały cykl życia tworzenia oprogramowania, dzięki czemu profesjonaliści mogą wybierać spośród różnorodnych narzędzi. Ale jak wiadomo, żadne narzędzie nie może stać się narzędziem uniwersalnym dla każdego. Niektóre rozwiązania oferują jednak tak szeroki zakres funkcji, że poradzą sobie z niemal każdym zadaniem.

Podzielmy narzędzia DevOps na kategorie i porównajmy je z analogami:

  • narzędzia do programowania i budowania
  • narzędzia do automatyzacji testów
  • narzędzia do organizacji wdrożeń
  • Narzędzia wykonawcze
  • narzędzia współpracy.

Skuteczna i przemyślana realizacja Praktyk DevOps obejmuje instrumenty ze wszystkich pięciu wymienionych powyżej grup. Przeanalizuj aktualny zestaw narzędzi w swoim projekcie, aby nie przegapić ważnego elementu rurociągu CI/CD.

Narzędzia programistyczne i konstrukcyjne

Narzędzia DevOps, których każdy powinien się nauczyć w 2020 roku
Jest to podstawa stosu potoków CI/CD. Wszystko zaczyna się właśnie tutaj! Najlepsze narzędzia w tej kategorii potrafią zarządzać wieloma strumieniami zdarzeń i łatwo integrować się z innymi produktami.

Na tym etapie cyklu życia oprogramowania wyróżnia się trzy grupy narzędzi:

  • system kontroli wersji (SCM)
  • ciągła integracja (CI)
  • Zarządzanie danymi

GIT ma pozytywne osiągnięcia w 2020 r., więc Twoje narzędzie SCM powinno bezproblemowo wspierać GIT. W przypadku CI warunkiem wstępnym jest możliwość wykonywania i uruchamiania kompilacji w izolowanym środowisku kontenera. Jeśli chodzi o zarządzanie danymi, wymaga to umiejętności dokonywania zmian w schemacie bazy danych i utrzymywania bazy danych zgodnie z wersją aplikacji.

Narzędzie SCM + CI nr 1

Zwycięzca: GitLab i GitLab-CI

Narzędzia DevOps, których każdy powinien się nauczyć w 2020 roku
Najlepszym narzędziem cyklu DevOps 2020 jest bez wątpienia GitLab, który z pewnością w najbliższej przyszłości nadal będzie liderem innowacji.

Główną funkcją GitLaba jest zapewnienie wygodnego zarządzania repozytorium Git. Interfejs sieciowy jest intuicyjny i łatwy w użyciu. GitLab zapewnia wszystko, czego potrzebujesz w darmowej wersji, w formie SaaS i lokalnie (wykorzystując własne zasoby do hostowania oprogramowania).

Żadne inne narzędzie SCM nie korzystało z ciągłej integracji (CI) bezpośrednio w Twoim repozytorium, a GitLab robi to od dłuższego czasu. Aby korzystać z GitLab-CI, musisz dodać plik .gitlab-ci.yml do katalogu głównego kodu źródłowego, a wszelkie zmiany w projekcie wywołają działania dokładnie na podstawie tego, co określiłeś. GitLab i GitLab-CI są zasłużenie uznawane za liderów w dziedzinie ciągłej integracji (CI-as-code).

Najważniejsze korzyści

  • Niezawodność - Produkt istnieje na rynku od 2013 roku; stabilny; dobrze wspierany.
  • Open Source — bezpłatna wersja GitLab nie ogranicza podstawowej funkcjonalności potrzebnej zespołom programistów. Płatne pakiety usług zapewniają dodatkowe przydatne funkcje dla firm o różnej wielkości i potrzebach.
  • Engrained CI — żadne inne narzędzie na rynku nie zapewnia ciągłej integracji bezpośrednio z SCM, jak GitLab-CI. Korzystanie z Dockera zapewnia bezproblemowe izolowane kompilacje, a wbudowane raporty ułatwiają debugowanie. Nie wymagamy skomplikowanej integracji i zarządzania wieloma narzędziami jednocześnie.
  • Nieograniczone integracje - GitLab zapewnia łatwą integrację wszystkich potrzebnych narzędzi DevOps. Dzięki temu zespoły programistyczne i konserwacyjne mają jedno źródło informacji o swoich aplikacjach w dowolnym środowisku.

Zawodnicy

Brał udział w bitwie, ale nie wygrał

Istnieją inne popularne narzędzia w tej kategorii, ale nie są one tak dobre jak GitLab. I własnie dlatego:

GitHub — Jest to doskonały system kontroli wersji SaaS dla małych firm i wczesnych etapów rozwoju. Dla dużych firm, dla których ważne jest trzymanie adresów IP we własnej sieci, jedynym rozwiązaniem od GitHuba była maszyna wirtualna .OVA bez wsparcia dla systemów wysokiej dostępności. Utrudnia to konserwację lokalną, poza tym .OVA jest odpowiednia tylko dla średnich firm, w przeciwnym razie serwer po prostu ulegnie awarii pod większym obciążeniem. Brak GitHub Actions (do niedawna i jeszcze nie w wersji on-prem) lub CI-as-code oznacza, że ​​trzeba wybrać osobne narzędzie CI, a potem zarządzać tą integracją. Wreszcie GitHub jest znacznie droższy niż którakolwiek wersja GitLab.

Jenkins — Chociaż Jenkins jest domyślnie uważany za standard wśród narzędzi ciągłej integracji, zawsze brakowało mu możliwości kontroli wersji. Okazuje się, że używasz Jenkinsa i jakiegoś narzędzia SCM. To zbyt trudne, gdy GitLab może zrobić jedno i drugie. Przeciętny projekt UX nie nadaje się do nowoczesnej aplikacji internetowej i pozostawia wiele do życzenia.

BitBucket/Bambus — Muszę go uznać za automatycznego przegranego: po co dwa narzędzia, skoro GitLab robi wszystko całkowicie niezależnie. BitBucket Cloud obsługuje funkcjonalność GitLab-CI / GitHub Action, jednak żadna firma większa niż startup nie jest w stanie jej łatwo wdrożyć. Lokalny serwer BitBucket nie obsługuje nawet potoków BitBucket!

Narzędzie nr 1 do zarządzania danymi

Zwycięzca: FlywayDB

Narzędzia DevOps, których każdy powinien się nauczyć w 2020 roku
Podczas tworzenia aplikacji internetowych automatyzacja baz danych zwykle nie jest przywiązywana do wagi. Pomysł wdrożenia zmian schematu bazy danych dla nowych wersji aplikacji pojawia się późno. Zmiany schematu często powodują dodanie kolumn lub tabel i zmianę ich nazw. Jeśli wersja aplikacji nie jest zgodna z wersją schematu, aplikacja może ulec awarii. Ponadto zarządzanie zmianami w bazie danych podczas aktualizacji aplikacji może być wyzwaniem, ponieważ istnieją dwa różne systemy. FlyWayDB rozwiązuje wszystkie te problemy.

Najważniejsze korzyści

  • Wersjonowanie baz danych - Flyway umożliwia tworzenie wersji baz danych, śledzenie migracji baz danych oraz łatwe przenoszenie lub przywracanie zmian schematu bez dodatkowego narzędzia.
  • Binarny lub osadzony — możemy wybrać uruchomienie Flyway jako części aplikacji lub jako binarny plik wykonywalny. Flyway sprawdza zgodność wersji przy uruchomieniu i rozpoczyna odpowiednie migracje, utrzymując synchronizację wersji bazy danych i aplikacji. Uruchamiając polecenie cmd line ad-hoc, zapewniamy elastyczność istniejącym bazom danych bez przebudowy całej aplikacji.

Zawodnicy

Brał udział w bitwie, ale nie wygrał

Nie ma zbyt wielu narzędzi w tej dziedzinie. Przyjrzyjmy się niektórym z nich:

LiquiBase — Liquibase przypomina FlywayDB. Chciałbym skonfigurować to na Flyway, gdybym miał w swoim zespole kogoś z większym doświadczeniem z Liquibase.

Floker — Może działać tylko w przypadku aplikacji kontenerowych. Aby pomyślnie uruchomić kontenerowe bazy danych, wszystko musi być doskonale zaplanowane. Polecam używać RDS (Relational Database Service) do baz danych i nie radzę przechowywać ważnych informacji w kontenerze.

Narzędzia do automatyzacji testów

Narzędzia DevOps, których każdy powinien się nauczyć w 2020 roku
Rozpocznijmy dyskusję na temat narzędzi do automatyzacji testów od ich klasyfikacji na podstawie piramidy testowania.

Piramida testowa (testy) ma 4 poziomy:

  • Testy jednostkowe – to podstawa całego procesu testów automatycznych. Powinno być więcej testów jednostkowych w porównaniu do innych typów testów. Programiści piszą i uruchamiają testy jednostkowe, aby upewnić się, że część aplikacji (zwana „jednostką”) jest zgodna z projektem i zachowuje się zgodnie z oczekiwaniami.
  • Testy komponentowe – Głównym celem testów komponentowych jest weryfikacja zachowania wejścia/wyjścia obiektu testowego. Musimy zadbać o to, aby funkcjonalność obiektu testowego została poprawnie zaimplementowana, zgodnie ze specyfikacją.
  • Testy integracyjne - rodzaj testów, podczas których poszczególne moduły oprogramowania są łączone i testowane jako grupa.
  • Testy typu end-to-end — ten krok jest oczywisty. Monitorujemy całą aplikację i pilnujemy, aby działała zgodnie z planem.

Ponieważ testy jednostkowe i testowanie komponentów są wykonywane wyłącznie przez programistów i często są specyficzne dla języka programowania, nie będziemy oceniać tych narzędzi pod kątem domeny DevOps.

Narzędzie nr 1 do testowania integracji

Zwycięzca: Ogórek

Narzędzia DevOps, których każdy powinien się nauczyć w 2020 roku
Cucumber łączy specyfikacje i dokumentację testową w jeden żywy dokument. Specyfikacje są zawsze aktualne, ponieważ są automatycznie testowane przez Cucumber. Jeśli chcesz zbudować od podstaw framework do testów automatycznych i modelować zachowania użytkowników w aplikacji internetowej, to Selenium WebDriver z Javą i Cucumber BDD to świetny sposób na naukę i wdrożenie Cucumber w projekcie.

Najważniejsze korzyści

  • Podejście BDD (Behaviour Driven Development - „rozwój poprzez zachowanie” w przeciwieństwie do podejścia „rozwój oparty na testach”) – Cucumber jest przeznaczony do testowania BDD, pierwotnie został stworzony właśnie do tego zadania.
  • Żywa dokumentacja — dokumentacja jest zawsze uciążliwa! Ponieważ testy są pisane jako kod, Cucumber testuje automatycznie wygenerowaną dokumentację, aby upewnić się, że testy i dokumentacja są zsynchronizowane.
  • Wsparcie - Do wyboru mamy wiele narzędzi, jednak Cucumber posiada niezbędne zasoby finansowe oraz dobrze zorganizowany system wsparcia, aby pomóc użytkownikom w każdej trudnej sytuacji.

Zawodnicy

Brał udział w bitwie, ale nie wygrał

Spośród innych frameworków i narzędzi technologicznych, jedynie Cucumber można uznać za rozwiązanie uniwersalne.

Narzędzia do kompleksowego testowania

Przeprowadzając kompleksowe testy, musisz skupić się na dwóch kluczowych punktach:

  • testy funkcjonalności
  • Test naprężeń.

W testach funkcjonalnych sprawdzamy, czy wszystko, czego chcemy, faktycznie się dzieje. Przykładowo, gdy kliknę na określone elementy mojego SPA (aplikacja jednostronicowa), wypełnię formularze i wybiorę opcję „Wyślij”, dane pojawią się w bazie danych, a na ekranie pojawi się komunikat „Sukces!”.

Ważne jest dla nas również sprawdzenie, czy określona liczba użytkowników korzystających z tego samego scenariusza może zostać przetworzona bez błędów.

Brak tych dwóch typów testów będzie znaczącą wadą potoku CI/CD.

Narzędzie nr 1 do kompleksowego testowania. Testy funkcjonalności

Zwycięzca: SoapUI Pro

Narzędzia DevOps, których każdy powinien się nauczyć w 2020 roku
SoapUI jest obecny w przestrzeni testowania API od dłuższego czasu, odkąd usługi internetowe oparte na SOAP były standardem. Choć nie tworzymy już nowych usług SOAP i nazwa narzędzia się nie zmieniła, nie oznacza to, że nie ewoluowało. SoapUI zapewnia doskonałe środowisko do tworzenia automatycznych testów funkcjonalnych backendu. Testy można łatwo łączyć z narzędziami do ciągłej integracji i wykorzystywać jako część potoku CI/CD.

Najważniejsze korzyści

  • Szczegółowa dokumentacja - SoapUI istnieje na rynku już od dłuższego czasu, dlatego istnieje wiele zasobów online, które mogą pomóc Ci zrozumieć, jak skonfigurować testy.
  • Łatwość użycia — chociaż narzędzie obsługuje wiele protokołów do testowania interfejsów API, obecność wspólnego interfejsu SoapUI dla wielu usług ułatwia pisanie testów.

Zawodnicy

Brał udział w bitwie, ale nie wygrał

Selen to kolejny świetny instrument w tej grupie. Polecam go używać, jeśli budujesz i uruchamiasz aplikację opartą na Javie. Jeśli jednak budujesz pełną aplikację internetową z wieloma technologiami, może ona stać się nieporęczna w przypadku komponentów innych niż Java.

Narzędzie nr 1 do kompleksowego testowania. Test naprężeń

Zwycięzca: LoadRunner

Narzędzia DevOps, których każdy powinien się nauczyć w 2020 roku
Objaśnienie: Kiedy przychodzi czas na przetestowanie każdego elementu aplikacji, tylko LoadRunner może wykonać to zadanie. Tak, na początku jest to kosztowne i trudne, ale LoadRunner to jedyne narzędzie, które daje mi, jako architektowi technicznemu, całkowitą pewność, że nowy kod będzie działał w ekstremalnych warunkach obciążenia. Myślę też, że nadszedł czas, aby LoadRunner został przejęty przez zespoły programistów, a nie zespoły testujące.

Najważniejsze korzyści

  • Obszerna dokumentacja — LoadRunner jest dostępny na rynku od dłuższego czasu, dlatego istnieje wiele zasobów online, które pomogą Ci zrozumieć, jak skonfigurować testy obciążeniowe.
  • Obsługa protokołów — Load Runner obsługuje wszystko, od ODBC po AJAX, HTTPS i każdy inny nietrywialny protokół, z którego może korzystać Twoja aplikacja. Staramy się nie używać wielu narzędzi do testowania obciążenia, ponieważ to tylko komplikuje proces.

Zawodnicy

Brał udział w bitwie, ale nie wygrał

Ponownie, uniwersalnych narzędzi w tym obszarze nie ma zbyt wiele, dlatego najlepszym rozwiązaniem będzie takie, które będzie działać w każdym środowisku i przy dowolnej technologii.

Narzędzia do wdrażania

Narzędzia DevOps, których każdy powinien się nauczyć w 2020 roku
Narzędzia do wdrażania są prawdopodobnie najmniej rozumianym aspektem programowania. Dla zespołu operacyjnego bez głębokiego zrozumienia kodu i funkcjonalności aplikacji korzystanie z takich narzędzi jest trudne. Dla programistów zarządzanie wdrożeniami to nowy obowiązek, dlatego nie mają jeszcze wystarczającego doświadczenia w pracy z tego typu narzędziami.

Przede wszystkim podzielmy wszystkie narzędzia wdrożeniowe na trzy podkategorie:

  • zarządzanie artefaktami
  • Zarządzanie konfiguracją
  • wdrożyć.

Narzędzie nr 1 do zarządzania artefaktami

Zwycięzca: Nexus

Narzędzia DevOps, których każdy powinien się nauczyć w 2020 roku
Repozytorium artefaktów Nexusa obsługuje prawie każdą główną technologię, od Java, przez NPM, po Docker. Możemy użyć tego narzędzia do przechowywania wszystkich artefaktów, których używamy. Udostępnianie zdalnych menedżerów pakietów również znacznie przyspiesza proces budowania CI, czyniąc pakiety bardziej dostępnymi do budowania. Kolejną zaletą jest możliwość uzyskania pełnego obrazu wszystkich pakietów używanych w kilku projektach oprogramowania, blokując niebezpieczne pakiety open source (mogą działać jako wektor ataku).

Najważniejsze korzyści

  • Wsparcie techniczne - Niezawodny produkt; dobrze wspierany.
  • Open Source — darmowa wersja nie ogranicza podstawowej funkcjonalności potrzebnej zespołom programistów.

Narzędzie nr 1 do zarządzania konfiguracją

Zwycięzca: Wiarygodne

Ansible jest liderem z jednego prostego powodu: bezpaństwowości. Wcześniej podobne narzędzia skupiały się na zarządzaniu stanem konfiguracji. Po uruchomieniu takie narzędzie, po otrzymaniu żądanej konfiguracji, podejmie próbę skorygowania aktualnej konfiguracji aplikacji. Dzięki nowemu podejściu obecne są tylko komponenty bezstanowe. Nowe wersje kodu to artefakty wdrażane w celu zastąpienia istniejących. Można to uznać za rodzaj efemerycznego, krótkotrwałego środowiska.

Najważniejsze korzyści

  • Bezstanowy — podręcznik jest uruchamiany z komputera wdrażającego i wykonywany na serwerach docelowych. Nie muszę się martwić stanem zdalnego obiektu, używając narzędzia takiego jak Packer do tworzenia obiektów, które można wdrożyć.
  • Open Source — podobnie jak CentOS, Ansible jest również obsługiwany przez RedHat. Pomaga utrzymać społeczność i zapewnia wysokiej jakości, łatwe w użyciu moduły.
  • Testowanie za pomocą Molecule (framework Ansible) — ponieważ zarządzanie konfiguracją to kod, jak wszystko inne, testowanie jest niezbędne. Struktura testowania ról Ansible firmy Molecule działa bezbłędnie, zapewniając, że konfiguracja jest tej samej jakości i przebiega według tego samego potoku CI/CD, co kod aplikacji.
  • YAML — w porównaniu do innych narzędzi, YAML jest łatwiejszy do zrozumienia. Ponieważ zarządzanie konfiguracją jest zazwyczaj nowym wyzwaniem dla osób wdrażających praktyki DevOps, prostota jest jego atutem.

Zawodnicy

Brał udział w bitwie, ale nie wygrał

Szef kuchni OpsCode — Rozpocząłem karierę w DevOps jako programista książek kucharskich. Ruby i Chef są oczywiście bardzo bliskie mojemu sercu, ale po prostu nie rozwiązują problemów współczesnych bezstanowych, natywnych dla chmury aplikacji. OpsCode Chef to świetne narzędzie do bardziej tradycyjnych zastosowań, ale w tym artykule skupiliśmy się na przyszłości.

Marionetka — Puppet nigdy nie miał wielu fanów, szczególnie w porównaniu z Chefem i Ansible. Świetnie nadaje się do udostępniania i pracy ze sprzętem, ale brakuje mu nowoczesnej obsługi zarządzania konfiguracją dla aplikacji internetowej.

Narzędzie do wdrażania nr 1

Zwycięzca: Terraform

Narzędzia DevOps, których każdy powinien się nauczyć w 2020 roku
Terraform rozwiązuje problem opisywania infrastruktury jako kodu, od komponentów sieciowych po pełne obrazy serwerów. Ten produkt przeszedł długą drogę od czasu swojej pierwszej wersji, tworząc tak wiele wtyczek i zbudowaną tak silną społeczność, że z pewnością uzyskasz pomoc w każdym scenariuszu wdrożenia. Możliwość obsługi dowolnego typu środowiska (lokalnie, w chmurze lub gdzie indziej) jest niezrównana. Wreszcie, najnowsza wersja zapewnia większość tych samych funkcji logicznych i klas w języku HCL, co każdy inny tradycyjny język programowania, dzięki czemu programiści mogą szybko i łatwo zrozumieć Terraform.

Najważniejsze korzyści

  • Niezależny od środowiska — Terraform korzysta z funkcji, które działają jako interfejs między kodem Terraform, wszystkimi interfejsami API i logiką wewnętrzną w celu komunikacji z dostawcą infrastruktury. Oznacza to, że opanuję tylko jedno narzędzie i będę mógł pracować gdziekolwiek.
  • Open Source - Trudno przebić darmowe narzędzia! Wsparcie społeczności na najwyższym poziomie.

Zawodnicy

Brał udział w bitwie, ale nie wygrał

Tworzenie chmury AWS — Nawet jeśli pracujesz tylko w środowisku chmurowym AWS, w następnej pracy możesz wykorzystać inne narzędzie. Poświęcenie całego czasu i energii tylko jednej platformie jest decyzją krótkowzroczną. Ponadto wiele nowych usług AWS jest często dostępnych jako moduły Terraform, zanim zostaną udostępnione w CloudFormation.

Narzędzia wykonawcze

Narzędzia DevOps, których każdy powinien się nauczyć w 2020 roku

Ostatecznym celem każdego projektu rozwojowego jest uruchomienie aplikacji w środowisku produkcyjnym. W świecie DevOps chcemy mieć pełną świadomość wszystkich możliwych problemów z naszym środowiskiem, a także zależy nam na minimalizacji ręcznej ingerencji. Wybór odpowiedniego zestawu narzędzi wykonawczych jest niezbędny do osiągnięcia nirwany przy tworzeniu aplikacji.

Podkategorie narzędzi wykonawczych:

  • X-jako usługa (XaaS)
  • orkiestracja
  • monitoring
  • Logowanie.

Narzędzie X jako usługa nr 1

Zwycięzca: Amazon Web Services

Narzędzia DevOps, których każdy powinien się nauczyć w 2020 roku
Amazon zawsze był liderem technologii chmurowych, ale to nie koniec: różnorodność nowych usług dla programistów otwiera oczy. Wprowadź dowolną technologię i szablon do AWS, a zostaną one zbudowane i uruchomione. Koszt narzędzia jest całkiem rozsądny: porównaj go z montażem, zarządzaniem i konserwacją sprzętu we własnym centrum danych. Darmowa wersja pozwala na eksperymentowanie i podejmowanie właściwych decyzji przed wydaniem pieniędzy.

Najważniejsze korzyści

  • Występowanie - Jeśli masz doświadczenie w budowaniu aplikacji w AWS, możesz pracować gdziekolwiek. Firmy uwielbiają AWS, a startupy doceniają także jego niski koszt.
  • Darmowa wersja jest naprawdę znaczącym czynnikiem odróżniającym AWS od innych. Pozwólcie mi wypróbować usługę i zobaczyć jak działa zanim podejmę decyzję o zakupie, nie chcę wydawać tysięcy dolarów na coś niepotrzebnego. Darmowa wersja zawsze mi wystarcza do przetestowania dowolnej koncepcji.

Zawodnicy

Brał udział w bitwie, ale nie wygrał

Lazur „Lazura przeszła długą drogę od czasu swojej pierwszej wersji i to jest godne pochwały. Jednak chęć bycia innym doprowadziła do dziwnych nazw usług, co często komplikuje pracę. Co oznacza „magazyn obiektów BLOB”? Chociaż kod .NET działa lepiej w ekosystemie Microsoft, jest mało prawdopodobne, że w każdym komponencie aplikacji będziesz używać wyłącznie platformy .NET.

Heroku — Nigdy nie uruchomiłbym na Heroku niczego innego niż osobisty projekt ze względu na niski poziom niezawodności i przejrzystości, więc firmy nie powinny używać go jako platformy. Heroku świetnie nadaje się do demonstrowania czegoś na blogu, ale do praktycznego zastosowania – „Nie, dziękuję!”

Narzędzie nr 1 do orkiestracji

Zwycięzca: otwarta zmiana

Narzędzia DevOps, których każdy powinien się nauczyć w 2020 roku
Prawdopodobnie używasz Dockera lub innych kontenerów na stosie aplikacji. Aplikacje bezserwerowe są świetne, ale mogą nie pasować do każdej architektury. Uruchamianie kontenerów bez platformy orkiestracyjnej po prostu nie będzie działać. Kubernetes Core (K8s) jest bezkonkurencyjny pod względem bezpieczeństwa i narzędzi. OpenShift to jedyna platforma oparta na Kubernetes, która może gromadzić Source2Image, obsługuje automatyczne wdrażanie w podach oraz obsługuje śledzenie i monitorowanie. OpenShift można uruchomić lokalnie, w chmurze lub jednocześnie lokalnie i w chmurze.

Najważniejsze korzyści

  • Wbudowane zabezpieczenia — zarządzanie bezpieczeństwem K8 może wymagać wyższego poziomu. Każdy szczegół musi być dokładnie przemyślany i wzięty pod uwagę! Mechanizmy bezpieczeństwa wbudowane domyślnie w OpenShift odciążają programistów i zapewniają bezpieczniejszą platformę dla aplikacji.
  • Rozwiązanie typu „wszystko w jednym” — w przeciwieństwie do podstawowych K8, które domyślnie nie zawierają narzędzi do równoważenia obciążenia, OpenShift ma to wszystko. Mogę go używać do tworzenia i hostowania kontenerów, uruchamiania narzędzi CI/CD, zarządzania procesami zewnętrznymi, zarządzania kluczami i wielu innych. Choć graficzny interfejs użytkownika jest jeszcze daleki od doskonałości, podejście oparte na API sprawia, że ​​wszystko da się opisać w skrypcie. W przeciwieństwie do innych GUI dla K8, OpenShift znacznie ułatwia naukę podstaw Kubernetes. Nie musisz nawet mieć dyplomu!

Zawodnicy

Brał udział w bitwie, ale nie wygrał

Rój dokerów — Docker Swarm próbował uprościć K8, pozbywając się wielu rzeczy. Świetnie nadaje się do małych aplikacji, ale w zastosowaniach korporacyjnych po prostu nie działa. Dodatkowo rozwiązania takie jak AWS ECS przyjmują podobne podejście, ale ułatwiają pracę z innymi usługami, z którymi również mogę wchodzić w interakcję (Lambda, IAM itp.).

Narzędzie monitorujące nr 1

Zwycięzca: Nowa relikwia

Narzędzia DevOps, których każdy powinien się nauczyć w 2020 roku
Wczesne wydania New Relic radziły sobie dobrze z jedną rzeczą – monitorowaniem APM (Application Performance Monitoring). Jest to teraz w pełni funkcjonalne narzędzie do monitorowania, które umożliwia monitorowanie wydajności serwera, kontenera, bazy danych, monitorowanie doświadczenia użytkownika końcowego i oczywiście monitorowanie wydajności aplikacji.

Najważniejsze korzyści

  • Łatwość obsługi - Kiedy pracowałem jako inżynier systemów, korzystałem z wielu narzędzi do monitorowania, ale nigdy nie spotkałem tak prostego i łatwego w obsłudze jak New Relic. To SaaS, więc nie musisz instalować go samodzielnie.
  • Kompleksowa widoczność — inne narzędzia próbują monitorować jeden konkretny element aplikacji. Np. metryka wykorzystania procesora czy ruchu sieciowego, ale to wszystko musi być kompleksowo monitorowane, aby aplikacja działała poprawnie. New Relic umożliwia połączenie wszystkich danych w celu uzyskania kompleksowego obrazu tego, co się dzieje.

Zawodnicy

Brał udział w bitwie, ale nie wygrał

Zabbix — Mój pierwszy i ulubiony system monitorowania, jednak pozostał już w przeszłości ze względu na brak rozwoju technologii chmurowych i w zakresie monitorowania wydajności aplikacji APM. Zabbix w dalszym ciągu dobrze radzi sobie z tradycyjnym monitorowaniem infrastruktury serwerowej, ale to wszystko.

DataDog — Zbyt duże skupienie się na procesie zarządzania środowiskiem produkcyjnym aplikacji, a nie na samym kodzie. Dzięki zespołom DevOps, w których uczestniczą programiści, nie musimy polegać na trudnych w użyciu narzędziach, aby zapewnić wsparcie na najwyższym poziomie.

Narzędzie do rejestrowania nr 1

Zwycięzca: Splunk

Narzędzia DevOps, których każdy powinien się nauczyć w 2020 roku
Trudno konkurować ze Splunk! Przez długi czas pozostaje liderem w pozyskiwaniu drewna, nadal robiąc to lepiej niż ktokolwiek inny. Dzięki ofertom lokalnym i SaaS możesz korzystać ze Splunk w dowolnym miejscu. Dużym minusem jest jego cena: Splunk jest nadal cholernie drogi!

Najważniejsze korzyści

  • Powszechność — firmy kochają Splunk i mają pieniądze, żeby go kupić.
  • Chociaż startupy starają się odzyskać koszty, wiele funkcji można rozwiązać dzięki analogom open source.
  • Łatwość konserwacji – mówiąc najprościej, Splunk działa i robi to dobrze. Zawiera wiele domyślnych ustawień i funkcji gotowych do użycia. Nie musisz tracić czasu na czytanie dokumentacji i próby nakłonienia Splunk do działania lub rozszyfrowania czegokolwiek.

Zawodnicy

Brał udział w bitwie, ale nie wygrał

Stos ELK (ElasticSearch, LogStash i Kibana) „Te narzędzia wydają się być ulubionymi, ponieważ nie trzeba nawet sprzedawać wątroby, aby z nich korzystać”. Jednak w miarę powiększania się zestawu logów i zwiększania się ilości aplikacji na pokładzie, praca staje się coraz trudniejsza. W porównaniu do Splunk, dzięki ELK Stack spędziłem znacznie więcej czasu na konfigurowaniu narzędzi przed utworzeniem jakichkolwiek dashboardów, niż kiedykolwiek wcześniej.

Narzędzia współpracy

Narzędzia DevOps, których każdy powinien się nauczyć w 2020 roku
DevOps to przede wszystkim zmiana kultury wewnątrz organizacji. Zakup dowolnego narzędzia nie zmieni z dnia na dzień obecnych praktyk, ale z pewnością może zachęcić do współpracy i nowych sposobów interakcji.

Podkategorie narzędzi do współpracy:

  • śledzenie zadań
  • Czaty
  • dokumentacja.

Narzędzie nr 1 do śledzenia problemów

Zwycięzca: Jira

Narzędzia DevOps, których każdy powinien się nauczyć w 2020 roku
Jira utrzymuje pozycję lidera, choć konkurencja w tym obszarze jest coraz większa. Niesamowita elastyczność Jira pozwala zespołom programistycznym i konserwacyjnym zarządzać pracą projektową i zadaniami sprinterskimi. Wbudowane standardy wykorzystujące terminologię Agile ułatwiają przejście od tradycyjnych sposobów pracy do bardziej wydajnych procesów.

Najważniejsze korzyści

  • Popularność - Podobnie jak wiele innych narzędzi, Jira jest używana niemal wszędzie. Małe zespoły korzystają z tańszej, bardziej dostępnej wersji i dostają wszystko, czego potrzebują, natomiast większe firmy mogą sobie pozwolić na droższą licencję.
  • Integracje – Jira jest pionierem w swojej dziedzinie. Fakt ten oraz szybki rozwój produktu powoduje, że kolejne firmy wybierają Jira do tworzenia własnych integracji, zwiększając tym samym wartość narzędzia. Możemy zintegrować Jirę ze wszystkimi narzędziami wymienionymi w tym artykule od razu po niewielkiej konfiguracji.

Zawodnicy

Brał udział w bitwie, ale nie wygrał

Trello — Trello szybko zyskało popularność dzięki bezpłatnemu narzędziu Kanban. Jednak gdy procesy skalują się i liczba zadań zmienia się z dziesiątek do tysięcy, nawigacja, wyszukiwanie i raportowanie w Trello staje się trudne.

Pivotal Tracker — Byłem wielkim fanem tego narzędzia, gdy pracowałem w startupie. Jednak Pivotal Tracker bardziej koncentruje się na zarządzaniu produktem niż na zadaniach technicznych. Choć zarządzanie produktem w Jira jest nieco bardziej skomplikowane, to nadal można je tam wdrożyć bez użycia dodatkowego narzędzia.

Narzędzie ChatOps nr 1

Zwycięzca: MatterMost

Narzędzia DevOps, których każdy powinien się nauczyć w 2020 roku
Objaśnienie: Być może największa niespodzianka dla Ciebie w moim wyborze i to dobra wiadomość! MatterMost zyskał popularność, czerpiąc to, co najlepsze z poprzednich narzędzi, i umieszczając je w wersji premium. Jest to bardzo ważne dla firm: MatterMost pozwala kontrolować Twoje dane, a także pomaga zintegrować je z narzędziami działającymi lokalnie. Nie musimy już wychodzić poza zaporę sieciową, aby sprawdzić czaty służbowe.

Najważniejsze korzyści

  • Open Source – Wersja MatterMost o otwartym kodzie źródłowym świetnie sprawdza się zarówno w średnich, jak i dużych zespołach. W przeciwieństwie do bezpłatnego planu Slacka, który usuwa historię wiadomości, prowadzenie własnego serwera oznacza, że ​​przechowujesz wszystkie swoje dane.
  • Integracje - Ponieważ API jest prawie w 100% oparte na API Slack, prawie wszystkich integracji Slack można używać bezpośrednio z MatterMost.

Zawodnicy

Brał udział w bitwie, ale nie wygrał

Slack — Slack jest fajny, ale ci goście rozwinęli się tak bardzo, że zaczęli szukać zysku. Zbliża się faza zwrotu działalności, która odbiera im główną wartość: Slack świadczył usługi za darmo; Najważniejszą wadą darmowej wersji jest usuwanie historii czatów.

Zespoły Microsoft — Spróbuj zintegrować produkt firmy Microsoft z produktem, który nie jest własnością firmy Microsoft... Powodzenia! To wszystko, co mam do powiedzenia na temat tego narzędzia!

Narzędzie dokumentacyjne nr 1

Zwycięzca: Zbieg

Narzędzia DevOps, których każdy powinien się nauczyć w 2020 roku
Tworzenie i utrzymywanie wysokiej jakości dokumentacji technicznej to złożony proces, niezależnie od tego, jakiego narzędzia używasz. Chociaż niedawno na rynku pojawiło się wiele narzędzi do tworzenia dokumentacji SaaS, trudno byłoby mi zlecić przechowywanie dokumentacji technicznej dotyczącej aplikacji o znaczeniu krytycznym stronie trzeciej. Preferowane jest przechowywanie danych i dokumentów lokalnie i Confluence rozwiązuje ten problem.

Najważniejsze korzyści

  • Łatwość obsługi — większość samodzielnych narzędzi może być nieco skomplikowana w konfiguracji i obsłudze, a ich utrzymanie wymaga pewnej wiedzy. Confluence Server od razu działa świetnie dla 10 lub 10,000 XNUMX użytkowników.
  • Wtyczki — wyrazy uznania dla Confluence za piękną, łatwą w użyciu nawigację od razu po wyjęciu z pudełka oraz możliwość dodania wtyczki do prawie wszystkiego, odblokowującą potencjał podobny do Wiki.

Zawodnicy

Brał udział w bitwie, ale nie wygrał

Przeczytaj dokumentację — Fajne dla open source, ale nawet nie myśl o przechowywaniu tutaj krytycznej wiedzy.

Obniżka cen - Doskonały do ​​dokumentowania kodu, ale trudny do publikowania architektury, procesów lub innych typów dokumentacji ze względu na specyficzne formatowanie MarkDown.

Jekyll — Dokumentując wiedzę techniczną, nie chcę tworzyć nowej statycznej witryny, która będzie wdrażana za każdym razem, gdy nastąpi zmiana. Prosty system kontroli wersji Confluence znacznie upraszcza dokumentację wewnętrzną.

Zsumować

Na rynku dostępne są dosłownie setki narzędzi DevOps, przez co trudno jest wiedzieć, których użyć i kiedy należy je wdrożyć. Postępuj zgodnie z tym prostym przewodnikiem, aby wybrać narzędzia DevOps dla kompletnego potoku CI/CD.

Pamiętaj, aby wybrać narzędzia ze wszystkich pięciu kategorii:

  • narzędzia do programowania i budowania
  • narzędzia do automatyzacji testów
  • narzędzia do wdrażania
  • Narzędzia wykonawcze
  • narzędzia współpracy.

Główne zalecenie: Zautomatyzuj wszystko!

Dzięki Zach Shapiro!

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

Dodaj komentarz