Zapewniaj jakość dzięki obserwowalności2024-05-18Cześć! W ten ciepły majowy tydzień chciałbym was zabrać w podróż do krainy obserwowalności. Na tej wycieczce pokażę, jak praktyki dookoła monitoringu i prewencji pozwalają dbać o wysoką jakość waszych aplikacji. W dwóch słowach wspominam również o nadchodzącej edycji szkolenia Tech Lead. Standardowo czeka na Ciebie również Inżynierska Prasówka. 😉 A więc w dzisiaj mam dla Ciebie: Miłego czytania 😀 Inżynierska prasówkaDzisiejszą Prasówkę rozpoczniemy od tematów dookoła produktywności, a zakończymy modelem Cynefin. Co w środku? Upadek Google, podejście do pracy w parach i ewolucję architektury monolitycznej, czyli same dobroci. Zapraszam!
Szkolenie Tech LeadTo już 4 edycja szkolenia Tech Lead? jak ten czas leci. 😉 Co pisali uczestnicy poprzednich edycji?
To chyba dobra rekomendacja, prawda? 😀 Dzięki szkoleniu nabierzesz umiejętności, które pozwolą Ci prowadzić pracę techniczną zespołu produktowego. Zalety szkolenia:
Plan szkolenia - 5 sesji x 4 godziny:
Startujemy 7 lipca i spotykamy się co tydzień. 👉 Zapisz się już dziś 👈A jeśli masz jakiekolwiek pytania odnośnie do szkolenia - zadaj je w odpowiedzi na tego maila. Proforma, rezerwacja miejsca itd. Postaram się odpowiedzieć natychmiastowo 🚀. Jak obserwowalność zapewnia jakośćW ramach poprzedniego newsletteru pisałem czym jest obserwowalność i jak można ją rozwijać w swoim produkcie - Niezawodność i obserwowalność. Dziś nieco pogłębimy te tematy. Jeśli czytałeś mojego ebooka „Drivery architektoniczne" to pewnie znasz tę grafikę – atrybuty jakościowe. Jednym z wspominanych atrybutów tutaj jest obserwowalność. I możesz zadać słuszne pytania:
I owszem, obserwowalność bezpośrednio nie wpływa na jakość. Jednak pośrednio może wpływać tak mocno, że w ostateczności nie będzie Ci brakowało niczego poza obserwowalnością. Spójrzmy najpierw na standardowe zapewnianie jakości – przez testy.
Testy jako jedyna metoda zapewniania jakościCzęsto w zespołach pokutuje myślenie, że jakość = testy. Kiedyś nawet takie było postrzeganie roli testera w zespole – że to on/ona dba o jakość, cała reszta zaś klepie kod. Nawet przyjmując, że w zespole testują wszyscy (mam nadzieję, że tak właśnie postępujecie) to można zwrócić uwagę na cały szereg problemów z tym związanym: Nie wszystko jesteś w stanie przetestowaćIstnieje szereg sytuacji w których nie da się przetestować wszystkich przypadków, lub jest to zbyt drogie do implementacji. Przykładowo:
Weźmy na tapet przypadek z życia wzięty:
Całościowe testy takiego scenariusza mogą być albo bardzo kosztowne do napisania, albo „kruche" – drobna zmiana rozsypie cały system. Testujemy to, o czym wiemyRozwińmy zjawisko, które zacząłem opisywać wyżej. Poza przypadkami, o których wiemy, istnieje szereg zdarzeń, które umykają naszej percepcji. Nie można nie zacytować tutaj Donalda Rumsfelda i jego Unknown Unknows 😃 To doskonale wyjaśnia, dlaczego nie przetestujemy tych przypadków przed wdrożeniem. Tutaj oczywiście pomóc może solidna doza analizy, eksploracji i brainstormingu. Ale jedynie do pewnego stopnia. Nie siedzimy w głowie naszych klientów. Tym bardziej, jeśli jest ich 10/100/1000 razy więcej niż “naszych”. To sprawia, że przypadki użycia przeciekają nam przez sito testowe i ostatecznie to dopiero klienci zweryfikują je na produkcji. Testujemy funkcjonalnie, atrybuty jakościowe nam umykająTo co testujemy manualnie i automatycznie w 95% przypadków będzie skupione na pracy funkcjonalnej. Jednak konia z rzędem temu, kto będzie w stanie za pomocą testów przed wdrożeniem przetestować:
Moglibyśmy tak dalej. Bez obserwowania systemu nie jesteśmy w stanie uzyskać dokładnej informacji o tym jak pracuje. To sprawia, że:
Nowoczesne zapewnianie jakościSzersze spojrzenie na zapewnianie jakości się po prostu opłaca. Aby uzyskać tę perspektywę, możesz wykorzystać Agile Testing Quadrants autorstwa Janet Gregory i Lisa Crispin: Po lewej stronie mamy opisane znane nam techniki testowania. Jednak to są praktyki, które prowadzą nas podczas procesu dostarczania oprogramowania. Pomagają nam zadbać o jakość, zanim jeszcze kod pojawi się na produkcji. Zwykle jednak zapominamy o drugiej stronie – o praktykach, które powiedzą nam jak pracuje nasz produkt. Cytując autorów:
Monitoring i obserwowalność są kluczowymi praktykami, które budują jakość naszych produktów – przejdźmy więc ponownie przez argumenty przytoczone wyżej. Testujemy co warto testować i obserwujemy resztęNa etapie projektowania można podjąć decyzję, kiedy i w jaki sposób przetestować dany przypadek użycia:
Dopiero gdy nasza hipoteza dookoła częstotliwości występowania przypadków okaże się nieprawdziwa, zaczynamy się skupiać na nich bardziej. Obserwujemy to czego nie przewidzieliśmyDodatkową zaletą tej metody jest to, że jesteśmy w stanie szybko wychwycić przypadki nietypowe, o których sami nigdy byśmy nie pomyśleli. Dowiemy się, że użytkownicy klikają tam, gdzie nie trzeba, wpisują dziwne dane, czy crashują system w zupełnie abstrakcyjny sposób. Gojko Adzic przygotował swego czasu niesamowitą prezentację o tym jak powiększył swój produkt 500 razy tylko dzięki temu, że zauważył nietypowe zachowania swoich użytkowników. Tego nie da się przetestować. To trzeba zobaczyć 😃 Obserwujemy atrybuty jakościoweObserwowalność jest dosknałą bazą do badania wskaźników jakościowych naszego produktu:
Dostajemy więc dokładną informację o tym jak nasz system pracuje i czy z wymaganą jakością. Zyskujemy na prędkościDodatkowym plusem jest zauważalne przyspieszenie prac. W przypadku błędów na produkcji jesteśmy w stanie o wiele szybciej je zauważyć i od razu zareagować, np. cofnąć zmianę w całości. Jak to pisali autorzy książki Continuous Delivery:
Efekt? Błędy na produkcji będą mniej wpływać na klientów. A to wpłynie pozytywnie na postrzeganą jakość. Ale, aby to osiągnąć, trzeba mieć dobrą obserwowalność produktu. RozwiązaniaNie chcąc zostawiać Cię bez praktycznego zastosowania, omówmy przykład e-commerce i 2 obszary jakościowe:
Przejdziemy przez 3 elementy:
Miary i kryteriaPierwszym obszarem, na którym nam zależy jest określenie, co chcemy obserwować i jak określimy, że to co obserwujemy jest zagrożeniem dla jakości. Miarami będą więc:
Monitoring i alertyNastępnym krokiem jest zdefiniowanie i wbudowanie odpowiedniego systemu monitorowania jakości. Możemy to robić w formie aktywnej i pasywnej:
Gdy tylko przekroczymy zdefiniowane progi, powinniśmy poinformować zespół i przystąpić do rozwiązywania problemu. Można tutaj też zwrócić uwagę na błąd przeżywalności – jakich informacji nam brakuje i na ich podstawie wnioskować. Przenosząc to na omawiamy e-commerce:
PrewencjaNa końcu można się jeszcze zastanowić w jaki sposób możemy automatyzować prewencję. W większości przypadków lepiej jest pokazać / zrobić cokolwiek, nawet coś niedoskonałego niż nie zrobić niczego. W przypadku e-commerce może to wyglądać następująco:
PodsumowanieDróg do osiągania jakości za pomocą obserwowalności jest wiele. Ale pierwszym krokiem jest zawsze zaakceptowanie tego, że obserwowalność może wpływać na jakość. I mam nadzieję, że do tego Cię przekonałem 😊 Daj znać w odpowiedzi jakie są Twoje osobiste praktyki dookoła obserwowalności i w jaki sposób wspierają ulepszanie jakości! 📧 Prześlij dalejDzięki, że doczytałeś(aś) do końca. 😊 Wszystkie poprzednie wydania newslettera są dostępne tutaj. Jeśli spodobał Ci się mój newsletter, prześlij go proszę osobom, którym też mógłby się spodobać. Z góry dziękuję. A jeśli nie jesteś jeszcze w newsletterze, to zachęcam do zapisania się. Polecam się na przyszłość! "Inżynierskie podejście do produktów cyfrowych." P.S. Co myślisz o tym newsletterze? Odpisz :) |