30-06-2022

Observability & SRE (Part 1)

Share

W serii 3 artykułów chciałbym przedstawić podstawowe założenia podejścia SRE oraz praktyczne doświadczenia związane z jego wdrażaniem w naszej firmie. Przechodząc przez ścieżkę zrozumienia założeń i fundamentów tego podejścia oraz przez najważniejsze jego elementy chciałbym pomóc w zrozumieniu sensu wdrażania SRE w organizacji oraz zwrócić uwagę na osiągnięte dzięki temu korzyści. Praktyczne doświadczenia, na których oparty jest artykuł pozwalają na zobiektywizowanie teorii wobec praktycznej implementacji.

Czym jest podejście SRE?

Site Reliability Engineering zmienia perspektywę patrzenia na systemy informatyczne, które wytwarzamy, wdrażamy i utrzymujemy. Podejście to dąży w swych założeniach do zbudowania w organizacji świadomości współodpowiedzialności za niezawodność usług i rozwiązań jakie oferujemy użytkownikom – kultury SRE.

Dotychczas najczęstszym modelem współpracy pomiędzy interesariuszami systemów a ich wytwórcami było założenie, że jedynymi osobami odpowiedzialnymi za niezawodność i dostępność systemów są zespoły technologiczne. Biznes uznawał, że jest to naturalna konsekwencja procesu technologicznego wytwarzania i utrzymania systemów. Zakładano, że to zespoły technologiczne powinny zapewnić niezawodność, ponieważ na tym się znają. Co więcej, zwykle oczekiwanie co do niezawodności rozumiane było jako “ma działać”.

Z drugiej strony zespoły technologiczne często tłumaczyły się brakiem czasu, szybkim rozwojem nowych funkcjonalności w systemie, małą liczbą osób utrzymujących systemy i brakiem refaktoringu, testów itd. Zwykle oskarżając o to wszystko (raczej niejawnie) biznes. Takie podejście niestety okazywało się często pułapką, która doprowadzała do wzajemnego przerzucania się oskarżeniami, koncentrowaniu się na winie a nie rozwiązaniu problemu w sposób trwały. Ponadto niekonkretne i niezdefiniowane oczekiwania powodowały niechęć wśród zespołów technologicznych do utożsamiania się z niezawodnością, jaka rozumiana była przez biznes. W najlepszym wypadku kończyło się na dbaniu o nią w sposób reaktywny.

Jednak złożoność współczesnych rozwiązań a jednocześnie ich kosztowność zmusiła świat technologii do zrewidowania takiego podejścia i zastanowienia się nad racjonalnością oczekiwań, które często są trudne do spełnienia. Zrozumiano, że zapewnienie niezawodności jest kosztowne i lepiej jest odpowiednio nim zarządzać. Innymi słowy życzeniowe podejście interesariuszy wobec trudnych do osiągnięcia lub wręcz nieznanych, niesprecyzowanych oczekiwań miało zmienić się w proces zbudowany na fundamentach wspólnej odpowiedzialności oraz zarządzaniu ryzykiem. Wdrożeniem takiego podejścia jest właśnie SRE. Kultura wzajemnego zrozumienia, współpracy, ciągłego doskonalenia, uczenia się oraz poprawienia niezawodności wobec wspólnie obranych i ustalonych, racjonalnych oczekiwań, zbudowana na konkretnych, mierzalnych i policzalnych miarach.

Idea SRE

Głównym celem SRE jest zapewnienie niezawodności. Wprawdzie skrót SRE dotyczy dosłownie stron, witryn internetowych ale może być również rozumiany jako zapewnienie niezawodności usługi czy systemu. SRE koncentruje się przede wszystkim na niezawodności w rozumieniu klienta systemu. Należy ją odróżnić od niezawodności jaką z reguły widzą zespoły technologiczne, czyli działania poszczególnych komponentów systemu i jego technicznych parametrów. Z niezrozumienia tej różnicy, często usłyszeć możemy: „U mnie działa”. Jakże często można obserwować sytuacje, w których zespół techniczny obserwuje parametry związane z obciążeniem CPU, wysyceniem pamięci lub obciążeniem komunikacji I/O, nie biorąc pod uwagę rzeczywistego komfortu korzystania z systemu przez użytkowników. SRE wyraźnie koncentruje się na rzeczywistym doświadczeniu użytkownika jako podstawie oceny niezawodności. Brak dostępu do usługi, jego wolne działanie lub długie ładowanie stron, długie oczekiwanie na zakończenie transakcji, brak treści, brak możliwości skorzystania z serwisu są rzeczywistymi doznaniami jakich doświadcza użytkownik. Parametry techniczne, które zespół technologiczny widzi pod spodem są parametrami diagnostycznymi, które pozwalają szybciej zidentyfikować rzeczywisty problem bądź mu przeciwdziałać obserwując pewne symptomy lub anomalie.

Dążenie do niezawodności

Proces zapewnienia niezawodności jest bardzo złożony i zaczyna się już na etapie projektowania rozwiązań biznesowych, a kończy na reagowaniu na incydenty oraz sprzężeniu zwrotnym dążąc do ciągłego usprawniania. W zasadzie w różnych kontekstach i w różnych organizacjach niezawodność będzie oznaczała co innego i inne składowe będą miały na nią wpływ. Wpływ na niezawodność ma wiele czynników, należą do nich:

  • architektura systemów,
  • procesy i standardy wytwarzania oprogramowania,
  • procesy wdrożeniowe CI/CD,
  • standardy zachowania jakości,
  • podejście do projektowania wdrażania i utrzymania infrastruktury,
  • mechanizmy i narzędzia do logowania,
  • sposoby reagowania na incydenty,
  • metody i narzędzia identyfikowania i usuwania błędów i innych incydentów.

Trudno zaprojektować rozwiązanie idealne, zawsze jest to kompromis pomiędzy kosztami inwestycji, możliwościami jakie aktualnie posiadamy oraz kosztem utraconych korzyści. Choć zazwyczaj koszt zapewnienia niezawodności rośnie wraz ze złożonością systemów i liczbą jego komponentów, to jednak potencjalne korzyści jakie możemy osiągnąć są również większe.

Nasze doświadczenie pokazuje, że są sytuacje, w których warto poświęcić niezawodność na rzecz osiągnięcia szybkich korzyści i, co ważne, szybkiej informacji zwrotnej z rynku. Wtedy  koszt wdrożenia niezawodności należy przesunąć na kolejny etap projektu, o ile okazuje się opłacalny. Jest to nic innego jak zastosowanie podejścia Inspect & Adapt, znanego ze zwinnego podejścia.

Według założeń SRE niezawodność to cel, do którego dążymy, a który nigdy nie jest osiągalny w 100%, zawsze jest to pewien kompromis pomiędzy nakładami środków i wysiłku, prędkością rozwoju systemu i jego złożonością. SRE akceptuje istnienie ryzyka niedziałania systemu. Jest to fundamentalne założenie zarządzania niezawodnością, kalkulując koszty związane z jego zapewnieniem w stosunku do uzyskanych korzyści.

Podsumowanie

W tej części dotknąłem tylko powierzchownie tematyki SRE. Kolejny artykuł będzie poświęcony fundamentom tego podejścia. Zapraszam do jego lektury!