Słurm DevOps: od Gita do SRE ze wszystkimi przystankami

4-6 września w Sankt Petersburgu, w sali konferencyjnej Selectel, odbędzie się trzydniowy Słorm DevOps.

Słurm DevOps: od Gita do SRE ze wszystkimi przystankami

Układając program, myśleliśmy, że teoretyczne prace nad DevOps, podobnie jak podręczniki do narzędzi, każdy może przeczytać samodzielnie. Interesują nas jedynie doświadczenie i praktyka: wyjaśnienie, jak coś robić, a jak nie, oraz opowieść o tym, jak my to robimy.

W każdej firmie, u każdego administratora czy programisty, poziom DevOps jest inny. Niektórzy używają Gita niewłaściwie, inni wdrażają SRE. Kurs jest zorganizowany w taki sposób, aby każdy mógł znaleźć coś aktualnego, co można wdrożyć od razu.

Zaczynamy od Gita, potem omawiamy rozwój aplikacji, interakcję kodu i infrastruktury, budujemy CI/CD, opisujemy infrastrukturę jako kod (IaC), testujemy powstałe rozwiązanie, konfigurujemy monitoring, zbieramy i analizujemy logi, a na końcu zajmujemy się SRE: przekształcamy niezawodność w mierzalną i zarządzaną historię.

Gitem

Obecnie z Gita nie korzysta tylko ten, kto wczoraj kupił swój pierwszy laptop. To trywialne i powszechne narzędzie, jednak wciąż często spotykamy jego niewłaściwe użycie: począwszy od wymuszonego pushu do mastera, a skończywszy na kopiowaniu plików z Gita na serwer przez Ctrl-C, Ctrl-V.

Opowiadamy o tym, jak nie należy robić oraz jak należy robić, jak robią w Southbridge.
Przechodzimy do praktyki: podstawy Gita, praca zespołowa.

Temat nr 1: Podstawy pracy z Gitem

  • Podstawowe komendy git init, commit, add, diff, log, status, pull, push
  • Git flow, gałęzie i tagi, strategie scalania
  • Praca z wieloma zdalnymi repozytoriami

Temat nr 2: Praca zespołowa z Gitem

  • GitHub flow
  • Fork, remote, pull request
  • Konflikty, wydania, jeszcze raz o Gitflow i innych flow w kontekście zespołów

Materiał jest zorganizowany w taki sposób, aby administratorzy i programiści mogli natychmiast wdrażać wszystkie praktyki w pracy.

Z perspektywy DevOps prawidłowa praca z Gitem porządkuje i automatyzuje procesy rozwoju i administracji, eliminuje szereg powtarzających się problemów, a także zwiększa wydajność pracy.

DevOps dla programisty

Patrzymy na DevOps oczami programisty: uruchamiamy lokalne środowisko, piszemy aplikację, konfigurujemy jej monitoring i logowanie, testujemy ją lokalnie, organizujemy przechowywanie zmiennych/sekretów i odkrywanie usług, przyglądamy się śledzeniu (opentracing).

Temat nr 3: Praca z aplikacją z perspektywy rozwoju

  • Konfiguracja lokalnego środowiska: praktyczne wskazówki
  • Tworzymy mikroserwis w Pythonie (w tym testy)
  • Zastosowanie docker-compose w rozwoju

Temat nr 4: Interakcja kodu i infrastruktury

  • Praktyka pracy z konfiguracjami

Na koniec programiści zobaczą, jak kod powinien wysyłać logi, jak go testować oraz jak będzie dalej debugowany. Administratorzy zrozumieją potrzeby programistów: jakie błędy w kodzie występują, jak zorganizować testowanie dla programistów oraz jak samodzielnie testować projekt.

Na tym etapie rozwiązana zostanie główna kwestia DevOps: następuje budowanie wzajemnego zrozumienia i współpracy między programistami a operatorami. To kluczowy krok w przejściu od przerzucania zadań do odpowiedzialnej współpracy.

W rezultacie zwiększa się szybkość i jakość pracy.

CI/CD

Nowoczesna automatyzacja zakłada CI/CD. Zaczniemy od ręcznej automatyzacji: makefile, git hooks, skrypty. Zbadamy, kiedy te narzędzia są nadal aktualne, a kiedy nie powinny być używane.

Następnie przyjrzymy się najlepszym praktykom nowoczesnego CI na przykładzie GitLab.

Temat nr 5: CI/CD: wprowadzenie do automatyzacji

  • Wprowadzenie do automatyzacji
  • Narzędzia (bash, make, gradle)
  • Zastosowanie git-hooks do automatyzacji procesów
  • Fabryczne linie produkcyjne i ich zastosowanie w IT
  • Przykład budowy 'wspólnego' pipeline'u
  • Nowoczesne oprogramowanie do CI/CD: Drone CI, BitBucket Pipelines, Travis itd.

Temat nr 6: CI/CD: Praca z GitLab

  • GitLab CI — ogólnie
  • GitLab Runner, ich typy i zastosowanie
  • GitLab CI, szczegóły konfiguracji, najlepsze praktyki
  • Etapy GitLab CI
  • Zmienne GitLab CI
  • Budowanie, testowanie, wdrażanie
  • Kontrola i ograniczenia wykonania: only, when
  • Praca z artefaktami
  • Szablony w .gitlab-ci.yml, ponowne wykorzystanie działań w różnych częściach pipeline'u
  • Include — sekcje
  • Centralne zarządzanie gitlab-ci.yml (jeden plik i automatyczne push do pozostałych repozytoriów)

Współpraca administratorów i programistów wchodzi na nowy poziom: administrator pisze szablon CI, a programiści go modyfikują, budując swój CI niezależnie od administratora.

Zostaje zmniejszona zależność programistów od administratorów, ogranicza się ilość pracy ręcznej, znika problem „jednej osoby, która wie, jak pracować z makefilem”. Wdrażanie odbywa się niezawodnie i szybko.

IaC

Temat Infrastructure as Code na przykładzie Terraform zaprezentuje administrator chmury Selectel, Alexey Stepanenko. Pokaże, jak szybko i automatycznie uruchomić i skalować serwery, jak automatycznie pakować obrazy oraz jak korzystać z szablonów konfiguracji, aby od razu otrzymać skonfigurowane maszyny.

Człowiek, który stworzył tysiące rozwiązań IaC, opowie, jak to robić prawidłowo i jak nie powinno się tego robić.

Rozwiązanie dla chmury Selectel z minimalnymi zmianami pasuje do chmur Google i Amazon.

Pracownik Southbridge, Nikolay Mesropyan, na przykładzie Ansible pokaże, jak bez przerw w działaniu uruchomić działającą aplikację i sprawdzić jej funkcjonalność.

Jeśli ręcznie zmieniasz infrastrukturę (konfigurujesz serwery, instalujesz biblioteki, pakiety w razie potrzeby), przy próbie uruchomienia kopii środowiska musisz przypomnieć sobie i odtworzyć wszystkie swoje działania. Zadanie to zajmuje łatwo 3-5 dni. Praca z infrastrukturą jako kodem gwarantuje, że masz aktualny opis środowiska, które można uruchomić w ciągu kilku minut.

Nikolay opowie, jak pisać playbooki, jakie błędy się zdarzają, dlaczego czasami playbooki działają wolno lub nie tak, jak oczekiwano. Jest to doświadczenie wielu lat korzystania z IaC w Southbridge.

Temat nr 7: Infrastructure as Code

  • IaC: podejście do infrastruktury jak do kodu
  • Dostawcy chmur jako dostawcy infrastruktury
  • Narzędzia do inicjalizacji systemów, budowa obrazów (packer)
  • IaC na przykładzie Terraform
  • Przechowywanie konfiguracji, współpraca, automatyzacja aplikacji
  • Praktyka tworzenia playbooków Ansible
  • Idempotencja, deklaratywność
  • IaC na przykładzie Ansible
  • Database as a Code / Odporność na awarie PostgreSQL

Infrastruktura zyskuje deklaratywność i idempotencję.
Administrator uczy się zarządzać złożoną infrastrukturą: szybko tworzyć nowe środowiska, utrzymywać jedność wszystkich środowisk, śledzić historię zmian, co jest kluczowe, gdy nad projektem pracuje kilka zespołów.
Programista może poznawać infrastrukturę i samodzielnie uruchamiać środowiska.

Bonus rozdziału — tworzenie i konfiguracja odpornego klastra baz danych PostgreSQL. Podamy gotowy playbook, który używamy w Southbridge; uruchomisz klaster na środowisku szkoleniowym i będziesz mógł wykorzystać to rozwiązanie w swojej firmie.

Testowanie infrastruktury i monitorowanie

Automatyzacja pozwala na wdrożenie błędu na tysiąc serwerów jednocześnie. Przy każdej zmianie niezbędne jest testowanie. Z drugiej strony, ręczne testowanie zajmuje tak dużo czasu, że niweczy zalety automatyzacji.

Pokażemy w praktyce, jak pisać testy ról. W rezultacie będziesz mógł pisać testy dla swojej firmy. Nie musisz już zapamiętywać wprowadzonych ustawień, opisujesz je w testach i automatycznie sprawdzasz, że wszystkie wcześniejsze rozwiązania i obejścia działają.

Następnie nauczymy się automatycznie dodawać wszystkie nowe serwery do monitorowania. Oddzielnie rozważymy monitorowanie infrastruktury i aplikacji. Pokażemy złe i dobre praktyki.

Temat nr 8: Testowanie infrastruktury

  • Testowanie i ciągła integracja z Molecule i Gitlab CI
  • Zastosowanie Vagrant

Temat nr 9: Monitorowanie infrastruktury z Prometheus

  • Dlaczego potrzebujemy monitorowania
  • Typy monitorowania
  • Powiadomienia w systemie monitorowania
  • Jak zbudować zdrowy system monitorowania
  • Ludzkie powiadomienia, dla wszystkich
  • Health Check: na co warto zwrócić uwagę
  • Automatyzacja na podstawie danych z monitorowania

Nieprawidłowo działające monitorowanie — to brak monitorowania. Biznesowi jest obojętne, że główna strona sklepu internetowego jest dostępna, jeśli formularz płatności generuje błąd.

W konfiguracji monitorowania i rozwiązywaniu problemów programiści i administratorzy biorą udział na równi. Tradycyjnie zadania monitorowania spoczywają na administratorach. Nasz kurs pokaże programistom, jaką rolę odgrywają w tworzeniu skutecznego monitorowania. Administratorzy uzyskają najlepsze praktyki Southbridge. W rezultacie straty spowodowane awariami i opóźnieniami stron lub aplikacji szybko się zmniejszą.

Bonus sekcji: automatyzacja na podstawie monitorowania. Na przykład, monitorowanie informuje, że na stronę wzrasta obciążenie i automatycznie uruchamiane jest skalowanie serwerów WWW.

Rejestrowanie

Główny błąd w pracy z logami — administratorzy i programiści przeglądają je bezpośrednio na serwerach. Jeśli masz więcej niż jeden serwer, to trwa długo. To niebezpieczne: programista wchodzi na serwer, gdzie nie powinien być.

DevOps wymaga centralizacji zbierania, przetwarzania i analizy logów.

Temat nr 10: Logowanie aplikacji z ELK

  • Główne zastosowania i możliwości elastic (wyszukiwarka, przechowywanie, cechy skalowalności, elastyczność konfiguracji)
  • Przegląd kibany (główne funkcje, język zapytań, zarządzanie pulpitami nawigacyjnymi, tworzenie wykresów)
  • Przegląd produktów opartych na elastic i ich zastosowanie
  • Zbieranie metryk w APM (śledzenie aplikacji)
  • Dodatkowo: Przegląd nowego produktu — SIEM

Wdrożenie tego podejścia uczyni logi prostym i zrozumiałym narzędziem do analizy, konfiguracji i ustawienia aplikacji oraz infrastruktury.

SRE

I dochodzimy do tematu, którym Southbridge tylko się interesuje i dla którego inni prelegenci chcą zostać na ostatni dzień Slurm. Cieszymy się, że zgodził się go przedstawić Ivan Kruglov z Booking.com.

Projekt żyje w rzeczywistym świecie, gdzie niezawodność nigdy nie jest absolutna, a każde rozwiązanie kosztuje.

Czym jest SLA w kontekście złożonego projektu? Jak ocenić, że strona jest dostępna, ale obrazy ładują się z opóźnieniem. Jakie są metryki SLA, gdzie je zbierać i jak je zbierać?

Jak ustalić SLA? Jak ich przestrzegać?

Temat nr 11: SRE
Definicja SLA, SLO, Error Budget i inne trudne terminy ze świata SRE
SRE: Praktyka monitorowania SLI i SLO
SRE: Praktyka zastosowania Error Budget
SRE: Zarządzanie przerwami i obciążeniem operacyjnym (apigateway, service mesh, circuit breakers)
Biznes chce SRE. Przynajmniej na najprostszej skali: wziąć serwer zapasowy czy przywrócić z kopii zapasowej? Jedna baza danych czy klaster? Zainstalować ochronę przed DDoS prewencyjnie czy tylko w momencie ataku?

Dyrektor nie zadowoli się opowieściami, że „strona działa”, gdy dzwoni klient i mówi, że formularz zamówienia się nie otwiera.

Dlatego dla inżyniera DevOps ważne jest, aby przynajmniej powierzchownie zrozumieć SRE, aby adekwatnie rozmawiać z biznesem o jego potrzebach.

Podsumowanie

Przez czas Slurm DevOps administratorzy i deweloperzy nauczą się:
— prawidłowo pracować z Gitem;
— organizować lokalny rozwój;
— konfigurować (administratorzy) i używać (deweloperzy) CI/CD;
— pracować z infrastrukturą jako kodem;
— testować infrastrukturę;
— monitorować infrastrukturę i aplikację;
— konfigurować logowanie;
— rozumieć, a w idealnym przypadku — używać SRE.

Dla uważnych czytelników — przy użyciu kodu promocyjnego habrapost zniżka 15%.

Przygotowujemy praktykę i narzędzia we wszystkich punktach. Tak więc każdy uczestnik, wracając z Słërm, będzie mógł wynieść swoją firmę na wyższy poziom DevOps.

Dla biznesu oznacza to tańsze zarządzanie i rozwój, zmniejszenie przestojów, wzrost niezawodności, szybsze dostarczanie funkcji oraz eliminację błędów.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster