Jedną z głównych cech ludzi jest to, że popełniamy błędy. Nikt nie jest bezbłędny. Ludzie, którzy wydają się być bezbłędni, są najczęściej nazywani „maszynami”, ponieważ przypominają zautomatyzowane procesy w nich zachodzące. Ale czy te procesy są naprawdę bezbłędne? Oczywiście, że nie! W końcu postęp technologiczny został kiedyś stworzony przez ludzi. Błędy są nieuniknione. Dlatego kluczem do sukcesu jest nie tyle eliminowanie błędów, co unikanie ich i umiejętność ich naprawiania. W XXI wieku kluczowy jest również czynnik czasu. Ale co, jeśli nawet nie wiemy, że błąd został popełniony? Zwłaszcza w przypadku zautomatyzowanych procesów. Dobrze wiesz, o czym mówię. Przyznaj, ile razy nie wiedziałeś przez kilka godzin lub dni, że coś zawiodło. A ilość czasu spędzonego na szukaniu tego, co zawiodło? Nawet nie zaczynaj…
.
A co jeśli powiem ci, że istnieje sposób na:
- Stale monitorować wszystkie procesy
- Wyłapać uszkodzony kod na miejscu
- Naprawiać problemy natychmiast, zaraz po (lub przed!) ich wystąpieniem, i…
… zrób to wszystko, zanim użytkownik końcowy w ogóle zda sobie z tego sprawę.
Duże brawa dla naszego bohatera – Sentry
Mówiąc wprost, Sentry to platforma monitorująca, która koncentruje się na pomaganiu programistom w monitorowaniu procesów w aplikacjach i wychwytywaniu błędów. Załóżmy, że w kodzie wystąpił błąd. Korzystanie z Sentry pomoże zidentyfikować, gdzie jest problem i dlaczego kod jest uszkodzony. Każda firma korzystająca z Sentry ma pełny wgląd w kod. Mogą szybko wychwycić błąd, zanim stanie się on problemem i zacznie wpływać na wydajność i czas pracy (czas, w którym aplikacja lub usługa działa). Czas ma tutaj również inne znaczenie. Pomimo błędu, aplikacja może nadal być w stanie operacyjnym, ale działać wolniej. Sentry monitoruje również czas odpowiedzi i sygnalizuje, gdy nie jest on zgodny z ustalonym standardem. Dostarczając wszystkich odpowiedzi, Sentry pomaga dowiedzieć się, jak działają aplikacje, co w tej pracy jest istotne, a co najważniejsze, jak zaoszczędzić czas na rozwiązywaniu problemów, które nie powinny się zdarzyć w pierwszej kolejności. Innymi słowy, jeśli coś jest nie tak z systemem, Sentry wie o tym i pomaga zapobiec wadliwemu działaniu aplikacji, utracie klientów i utracie biznesu. A wydajność biznesowa jest naturalnie w interesie każdego właściciela firmy.
Dlaczego ważne jest wyłapywanie błędów (szybko!)
Oczywistą i prostą odpowiedzią na to pytanie wydaje się być: zapewnienie funkcjonalności aplikacji lub systemu. Jest to ogólna idea. Wyobraźmy sobie jednak sytuację, w której pojawia się błąd. Aplikacja zwalnia lub przestaje działać. Ale aplikacje są tworzone, aby uprościć życie ludzi. Użytkownik końcowy przyzwyczaja się do nich i podświadomie polega na nich w odpowiednim czasie. Jeśli przestają działać i nie ma planu B dla użytkownika końcowego, z pewnością pojawi się niezadowolenie. A niezadowolenie użytkownika końcowego wpłynie na reputację firmy, co może ostatecznie wpłynąć na jej wyniki. Z praktycznego punktu widzenia, co dzieje się z firmą, gdy aplikacja przestaje działać? Użytkownik końcowy zaczyna szukać nowej aplikacji. Na rynku dostępnych jest niezliczona ilość zamienników, a naprawdę łatwo jest stracić klientów i dochody, gdy aplikacja jest wadliwa. Nie daj Boże, aby błędy i bugi zdarzały się często. Nawet więcej niż jeden raz wystarczy, aby użytkownicy systemu stracili zaufanie i zainteresowanie produktem. A konkurencja nie śpi. A może śpi? Ale tylko dlatego, że Sentry lub inne systemy monitorujące zajmują się ewentualnymi błędami za nich. Czy zastanawiałeś się kiedyś, dlaczego stworzone oprogramowanie lub aplikacja nagle napotyka problem i przestaje działać?
Błędy w oprogramowaniu – dlaczego występują?
Oprócz oczywistego błędu ludzkiego, musimy wziąć pod uwagę kilka innych czynników, które mają wpływ na aplikacje. Jednym z nich jest złożoność kodu lub danej technologii. Jest to logiczne, gdy się nad tym zastanowić – im bardziej coś jest złożone, tym łatwiej może stać się wadliwe. Inną winą jest to, że systemy rzadko działają obecnie osobno. Wiele z nich jest częścią jednej większej sieci. Można sobie wyobrazić, jak wiele interfejsów musi się ze sobą łączyć, aby wszystko w systemie działało płynnie. Systemy czy aplikacje często przechodzą też implementację nowych technologii, które mają pomóc im być bardziej wydajnymi. Niestety, podczas implementacji często pojawiają się błędy. Może się również zdarzyć, że nie przeprowadzono wystarczających kontroli w celu ustalenia, czy dane są prawidłowe lub wystarczające, i okazuje się, że tak nie jest.
Niezależnie od przyczyny występującego błędu, rzeczą związaną z oprogramowaniem, o której wszyscy musimy pamiętać, jest to, że żadna osoba na tej Ziemi nie jest w stanie zrozumieć wszystkich zawiłości oprogramowania. Pojedyncza linia kodu musi mieć tysiące zależności lub wyjść, z którymi ma do czynienia. Dlatego też po raz kolejny pojawią się błędy. Jedną z najważniejszych rzeczy dla firmy nie jest fakt, że błąd się wydarzył, ale to, jak szybko można go rozwiązać i przywrócić system do pożądanej funkcjonalności. Dobrą wiadomością jest to, że przy złożoności dzisiejszych systemów nie każdy błąd jest kluczowy dla ich podstawowych funkcji, a przynajmniej niektóre z nich mogą poczekać nieco dłużej na rozwiązanie.
Wykrywanie i naprawianie błędów w Agile
Praca w Agile oznacza, że aktualizacje oprogramowania są bardzo częste (jeden sprint trwa zwykle od 4 do 12 tygodni). Częste aktualizacje oznaczają częste testowanie. System monitorowania powinien oczywiście wykrywać wszystkie błędy. Ale jak rozwiązać wszystkie błędy w odpowiednim czasie, gdy mogą być ich tysiące, które pojawiają się w nowej aktualizacji? Jak ze wszystkim w życiu, trzeba ustalać priorytety. Istnieją różne rodzaje incydentów wpływających na różne obszary funkcjonalności systemu. Niektóre są ważniejsze, inne mogą poczekać na swoją kolej. Poziomy ważności są następujące:
- Nieincydentalne zadania wsparcia – zdarzenia, które nie mają wpływu operacyjnego na system. Oprogramowanie nadal działa bez negatywnego wpływu na produktywność. Jest to na przykład zmiana elementu na stronie internetowej, dodanie bardziej szczegółowego opisu elementu strony internetowej itp.
- Niewielki incydent – niektóre mniej ważne / nieistotne funkcje oprogramowania stają się niedostępne lub dostępne jest dobre alternatywne rozwiązanie. Wpływ na klienta jest minimalny. Na przykład styl tekstu został zmieniony, ale nie wyświetlał się poprawnie. Tekst jest jednak widoczny.
- Średni incydent – wpłynęło to na ważne funkcje oprogramowania, ale istnieją pewne alternatywne rozwiązania; nie wpłynęło to na niektóre obszary oprogramowania, ale niektóre funkcje są niedostępne. Na przykład sekcja komentarzy na stronie internetowej nie działa, ale użytkownik może wysłać e-mail do pomocy technicznej.
- Poważny incydent – liczba użytkowników, którzy nie są w stanie korzystać z oprogramowania lub rozsądnie kontynuować pracy z nim; poważna utrata funkcji lub wydajności bez dostępnego alternatywnego rozwiązania. Na przykład użytkownik końcowy nie może dokonać płatności w sklepie internetowym.
- Incydent krytyczny – żaden klient nie może korzystać z oprogramowania. Następuje całkowita utrata funkcji lub wydajności i nie ma innego dostępnego rozwiązania. Na przykład, strona internetowa została zhakowana lub jest przedmiotem błędu w zmianie DNS i dlatego nie jest dostępna na całym świecie.
Błędy w różnych aplikacjach mogą być traktowane priorytetowo. Na przykład, krytyczny błąd w jednej aplikacji może nie być klasyfikowany jako taki w porównaniu do krytycznych problemów w innych aplikacjach. Zamiast tego, jego waga może zostać sklasyfikowana jako wysoka, nadając priorytet rozwiązywaniu problemów innych aplikacji. Innym kryterium branym pod uwagę przy ocenie wagi błędu jest prawdopodobieństwo jego wystąpienia. Na przykład, jeśli błąd jest krytyczny, ale szanse na jego wystąpienie są bardzo niskie, jego klasyfikacja będzie znacznie niższa.
Typowym podejściem Agile do radzenia sobie z błędami jest ich unikanie! Dobra platforma monitorująca potrafi zidentyfikować problem, ocenić jego wagę i czas na jego naprawę, ale przede wszystkim potrafi zrobić to szybko. I nie jest to kwestia testowania aktualizacji lub systemu po wystąpieniu problemu i zarejestrowaniu skargi użytkownika. Sentry wykonuje całą pracę, zanim jeszcze wystąpi problem. To tutaj dzieje się magia. Deweloper akceptuje problem, przewiduje go i ma szansę go wyeliminować, zanim użytkownik końcowy dowie się o jego istnieniu. To nie tylko obniża poziom niezadowolenia, ale pozwala zaoszczędzić mnóstwo czasu i pieniędzy z powodu awarii. Agile to szeroka i interesująca ścieżka rozwoju systemów. Aby dowiedzieć się więcej, zobacz nasze posty Co oznacza „Agile” w kontekście rozwoju oprogramowania? oraz Jak „Agile?”. – pełny skrypt
Sentry robi podwójną magię
Wykrywanie problemów lub błędów przed ich wystąpieniem jest imponujące. Sentry nie tylko ostrzega o problemie, ale także daje wskazówkę, jaka zmiana mogła go spowodować, jakie funkcje i wersje aplikacji są dotknięte i wreszcie, kto może być najlepiej przygotowany do rozwiązania problemu. Ale Sentry robi coś więcej. Daje świadomość. Deweloper zdaje sobie sprawę, że niektóre problemy mogą w ogóle istnieć. Dostarczone raporty z wyróżnionymi problemami dają unikalny wgląd w to, co się stało i pomagają uniknąć takich problemów w przyszłości. Możemy więc śmiało powiedzieć, że oprócz uniknięcia wystąpienia błędu w najbliższej przyszłości, deweloper może nabrać nawyku, by nigdy więcej nie pozwolić mu się pojawić. A to już naprawdę dużo! Brak awarii oznacza zadowolonych klientów i brak utraty dochodów w perspektywie długoterminowej.
Kilka słów od użytkownika Sentry
Sentry obsługuje wiele popularnych systemów, a jego kompatybilność jest systematycznie aktualizowana. Używamy Sentry w codziennych procesach biznesowych i produktach dla naszych klientów. Od czasu jego wdrożenia odnotowujemy znacznie mniej błędów, ponieważ wiemy o możliwych problemach, zanim jeszcze mają szansę się wydarzyć. Dołącz do grona naszych klientów, których projekty są monitorowane przez Sentry. Zapewniamy, że tworzone przez nas produkty są tak bezbłędne, jak to tylko możliwe. Wszystko to dzięki Sentry.