4 niezbędne narzędzia do zwiększenia jakości twoich rozwiązań

12 września 2020

Każdy z nas wie, że do pracy programisty potrzebne są podstawowe narzędzia takie jak edytor kodu, skonfigurowane środowisko developerskie itp. Jednak bardzo rzadko zdarza się znaleźć w internecie informacje na temat narzędzi wspomagających naszą pracę. Nie chodzi tutaj o mierzenie czasu (np. Toggl) czy zarządzanie zadaniami (np. JIRA). Bardziej mam na myśli narzędzia, które pomagają nam dbać o jakość dostarczonego rozwiązania.

Czym jest jakość?

Jakiś czas temu miałem przyjemność spotkać się z Andrzejem Krzywdą (Arkency.com). Podczas naszej rozmowy Andrzej powiedział bardzo ciekawą rzecz, którą postaram się przytoczyć:

Programiści często podczas sprzedawania swoich usług powtarzają, że dostarczą świetną jakość, ale nie potrafią wytłumaczyć czym ta jakość jest.

Po dłuższej chwili dotarło do mnie, że w 2012 roku sam przekonywałem klientów, że dostarczę usługę programistyczną świetnej jakości. Na szczęście nikt wtedy nie pytał mnie czym ta jakość jest. Wtedy nie miałbym pojęcia jak odpowiedzieć na to pytanie. Dziś z bagażem większych doświadczeń jestem w stanie podnieść rękawice i powiedzieć, jaka jest moja definicja jakości oprogramowania.

Jeśli uważasz, że jakość oprogramowania, to piękny kod – jesteś w błędzie. Nikogo nie obchodzi, czy zastosowałeś/aś takie czy inne rozwiązanie. Nikt poza twoim zespołem nie zobaczy nigdy twojego kodu. Na czym więc polega jakość twojego rozwiązania? Musisz patrzeć na to co robisz przez pryzmat produktu. Jako programista tworzysz produkt. Czym charakteryzuje się dobry produkt? Na to pytanie pewnie łatwiej Ci odpowiedzieć. Stabilność działania, wysoka dostępność oraz szybkość wykonywanych operacji. Do tego można dorzucić przewidywalność oraz krótki czas usuwania awarii (nigdy ich nie unikniesz).

Żeby móc spełnić te kryteria oceny warto zastosować narzędzia, które pomogą Ci mierzyć odpowiednie wskaźniki.

Monitoring

Korzystając z systemu monitoringu widzisz czarno na białym jak zachowuje się Twój system. Dzięki na przykład Grafanie możesz budować zaawansowane wykresy, które pokażą Ci:

  • ilość użytkowników korzystających z twojej aplikacji
  • ilość błędów z plików logów
  • ilość requestów / min
  • średnie czasy odpowiedzi

Oczywiście to, co wyświetlisz na wykresach jest już twoim wyborem. Dobierzesz odpowiednie metryki, które są dla Ciebie istotne. Najważniejsze, że wyświetlając je na osobnym monitorze widzisz niemalże w czasie rzeczywistym co dzieje się z Twoim systemem.

Grafana: The open observability platform | Grafana Labs

Automatyczny deployment

Długo myślałem, czy ten punkt powinien się znaleźć na tej liście. Jednak po rozmowach z paroma osobami uznałem, że to dobry pomysł. Wiele osób nadal aktualizuje swoje aplikacje w sposób manualny. Ciężko mi sobie wyobrazić wrzucanie na serwer dziesiątek tysięcy plików w czasach, gdy automatyzacja tego procesu może kosztować 5$ / msc.

Dzięki automatyzacji możesz uniknąć problemów ze wdrażaniem nowej wersji takich jak np.:

  • przerwa w dostawie internetu/prądu, przez którą tylko część projektu została zaktualizowana
  • nadpisanie zmiennych środowiskowych przez co twój projekt łączy się z testową bazą danych
  • opublikowanie nieprzetestowanych zmian

Jeśli nie wiesz jak automatyzować proces wdrażania aplikacji, to niebawem na moim kanale YouTube pojawi się tutorial. Pokażę w nim jak skonfigurować i jak używać darmowego narzędzia Jenkins CI. Tymczasem jeśli nie odróżniasz CI od CD, to zapraszam Cię również na moje insta stories, gdzie tłumaczę tę subtelną różnicę.

https://www.instagram.com/stories/highlights/18105309376142458/

Platforma alertowa

Wyobraź sobie, że opiekujesz się sklepem internetowym Twojego klienta. Jest piątek. Twój klient zaplanował wieczorny webinar, na którym podaje uczestnikom kody rabatowe, które mogą wykorzystać jedynie do rana.

Webinar skończony klient nie może się doczekać jutrzejszego poranka, aby sprawdzić raport z nocnej sprzedaży. Jednak budzi się rano i widzi, że nie pojawiło się żadne nowe zamówienie. Wpada w depresje. Uznaje, że jego produkty to totalna klapa. Okazuje się jednak, że problemem nie były produkty ani webinar, a niedziałający proces zakupowy. Skrypt rzucał błędy dla wszystkich osób, które chciały kupować z nowo dodanym kodem rabatowym.

Czy tej sytuacji można było uniknąć? Błędy się zdarzają. Jednak można było zminimalizować straty. Wystarczy, że twój system zostanie zintegrowany z narzędziem do powiadamiania o awariach. Przykładem takiego rozwiązania może być np. VictorOps. Jest to narzędzie, które wysyła e-mail lub dzwoni do Ciebie na podany numer telefonu, jeśli występuje określona awaria.

Code Quality Measurement

Każdemu zdarzają się błędy. Literówki, brak zaimportowanych zależności czy użycie niezdefiniowanej wcześniej zmiennej. Oczywiście przed wieloma tego typu błędami chronią nas testy automatyczne, które mam nadzieję piszesz w swoich projektach. Dla programistów zakochanych w standardach powstał standard ISO/IEC 25010, który opisuje charakterystykę “dobrego kodu”.

Oczywiście mamy również odpowiednie narzędzia, które potrafią analizować kod pod kątem tych standardów. Jednym z takich narzędzi jest na przykład SonarQube. Jest to aplikacja, którą możemy zintegrować z naszym procesem CI/CD i uruchamiać ją na przykład za każdym razem, gdy robimy push’a do naszego brancha. Jest to tyle ciekawe rozwiązanie, że analiza może wykazać również tzw. security vulnerability. Z Sonar’a możesz skorzystać instalując go za pomocą obrazu dockerowego. Dostępny jest też w marketplace AWS. Jest to świetne rozwiązanie, jeśli trzymasz swoją infrastrukturę właśnie w Amazon.

Jeśli już o Amazonie rozmawiamy to jedynie jako ciekawostkę zachęcam Cię do sprawdzenia usługi AWS o nazwie CodeGuru. Jest to narzędzie, które za pomocą sztucznej inteligencji potrafi wykonać Code Review. Co ciekawe podobno nie daje jedynie informacji o błędach, ale potrafi również podpowiedzieć lepsze rozwiązania. Nie testowałem jeszcze tej usługi, więc jeśli wiesz o niej coś więcej to zostaw komentarz 🙂

Daj znać w komentarzu, czy korzystasz z któregoś z opisanych rozwiązań. Czy dbasz o jakość swoich rozwiązań oraz czym ta jakość jest dla Ciebie.

Na koniec skrzynia skarbów – newsletter. Znajdziesz w nim link do zapisu na darmowe 45-minutowe konsultacje online. Nie ma go w innym miejscu, tylko w wiadomościach ode mnie. A razem z nim dostaniesz w mailach czyste złoto, czyli wiedzę. Zero spamu.

Zapisz się na newsletter

.

Tu też znajdziesz wiedzę za darmo

Po rozwiązania zajrzyj również na octocode’owy kanał na YouTube’ie. Będzie Twoją latarnią morską w programowaniu.

Lubisz słuchać rozmów z ciekawymi ludźmi z branży? Zapraszam na Prograduchy – podcast na luzie, a jednocześnie merytoryczny. Nie odpłyniesz.

X