Z programem Wireshark pierwszy raz zetknąłem się w czasie studiów na zajęciach z sieci komputerowych (dla niewtajemniczonych: Wireshark to aplikacja która umożliwia przechwytywanie i nagrywanie pakietów danych, a także ich dekodowanie i analizowanie). Wówczas odniosłem wrażenie że jest to narzędzie stricte dla administratorów sieci i nie ma większego zastosowania w obszarze wytwarzania i utrzymywania oprogramowania.

Z upływem czasu zrozumiałem że tworzenie systemów to nie tylko pisanie pięknego i czystego kodu, ale także długie godziny spędzone na debugowaniu błędów i analizowaniu problemów. W wielu sytuacjach kluczowa jest możliwość podejrzenia komunikatów przesyłanych między elementami systemu. Do tego właśnie świetnie sprawdziło się narzędzie poznane na studiach.

Każda nietrywialna aplikacja potrzebuje backendu. O ile obecnie to nie jest do końca prawda, to na potrzeby tego artykułu przyjmijmy, że tak jednak jest ;) A jak backend współpracujący z aplikacją webową to zapewne usługi REST i aplikacja SPA. W kilku kolejnych akapitach stworzymy i z sukcesem przygotujemy gotowy do wdrożenia artefakt składający się z aplikacji webowej w Angular 2 i backendu usługowego wykorzystującego Spring Boot.

Awaria:

Do katastrofy prowadzi często splot różnych czynników, które w pojedynkę nie stanowią większego zagrożenia. Wymieńmy więc:

  • system, z którym się komunikujemy miewa od czasu do czasu długi czas odpowiedzi - no, cóż zdarza się, cztery dziewiątki to wciąż 0,01% możliwych faili, przy 0.5 miliona requestów dziennie, wychodzi jakieś 5000 - rozwiązanie: dłuższe timeouty;
  • zdarzają się dłuższe przerwy, np. system nie działa parę minut - brak bezprzerwowych wdrożeń, problemy ze stabilnością środowiska - póki nie wpływa to bezpośrednio na user experience jest do ogrania, np. za pomocą kolejek;
  • ograniczona liczba wątków w kontenerze aplikacji - sprzęt kosztuje czy to w chmurze czy we własnej serwerowni.

“It is not enough for code to work.” Robert C. Martin, Clean Code

Pamiętam jak kilka lat temu z uporem maniaka integrowałem biblioteki statycznej analizy kodu do każdego pom.xml, który wpadł w moje ręce. Do dzisiaj wiele osób za to mnie szczerze nienawidzi. Modyfikacja pomów, konfiguracja w repozytorium każdego projektu i długie instrukcje na wiki związane z integracją IDE. Patrząc z perspektywy czasu przyznaję, że było to dość pracochłonne przedsięwzięcie. Na szczęście pojawiło się narzędzie, które nie tylko uprościło proces statycznej analizy kodu, ale także znacznie tę analizę upowszechniło.

Jesteśmy świeżo po ng-poland, emocje jeszcze nie opadły, podróż jeszcze nie odespana, ale to najlepszy czas na pierwsze wrażenia. Konferencję można sprawnie podsumować jednym zdaniem: dobra ścieżka dla początkujących, pojedyncze ciekawe punkty dla średniozaawansowanych. Zaawansowani użytkownicy raczej nie dowiedzieli się niczego nowego.