Technology Radar jest kwartalnym, wysokopoziomowym rzutem oka na technologie z każdego programistycznego i dev-opsowego ekosystemu. Tworzony jest przez specjalistów z różnych dziedzin z firmy Thoughtworks. Przyglądają się oni platformom, językom programowania, frameworkom i narzędziom, i podpowiadają nam, na co warto zwrócić uwagę, albo wręcz przeciwnie – z jakiej technologii warto się przenieść na coś lepszego.
Wydanie Technology Radar można pobrać tutaj
Cztery kategorie Technology Radar
Każdy z przedmiotów analizy ląduje w jednej z czterech kategorii – Hold, Assess, Trial i Adopt.
Hold oznacza, że dla danej technologii pojawiła się lepsza alternatywa, albo w perspektywie czasu okazała się ona nieefektywna.
Assess – warto technologii się przyjrzeć, zrozumieć na czym polega i czy ma zastosowanie w naszym ogródku.
Trial – warto zrobić PoC dla danego tematu, użyć w pobocznym produkcie, który można wrazie czego przepisać w sprawdzonej technologii. Zwalidować czy nadaje się do użycia w głównym produkcie.
Adopt – rzecz warta wprowadzenia do głównej grupy produktów.
Techniki programistyczne
Na omówieniu skupimy się na programistycznym ekosystemie full-stack JavaScript. Dodatkowo skupie się bardziej na przyziemnych rzeczach interesujących zwykłego klepacza CRUDów, niż na nowinkach ze świata machine learningu czy analizy danych.
I tak z obszaru technik coraz wyżej, do statusu Adopt, wspiął się microfrontend. Zasługuje on na własny cykl artykułów, ale to gdy sam przekonam się o ich działaniu przy tworzeniu większego projektu, w który jestem obecnie zaangażowany. W dużym skrócie – kilka lat temu mocno na popularności zyskały, po stronie backendu, microserwisy. Polegają one (w gigantycznym uproszczeniu, ponownie) na podzieleniu jednego, dużego programu na kilka mniejszych, każdy odpowiedzialny za swoją domenę (np. zarządzanie użytkownikami, księgowość, etc.). Microserwisy następnie komunikowały się ze sobą wzajemnie i ze światem zewnętrznym w ten sam sposób za pomocą API REST albo kolejek. Ostatnie lata pokazały, że dane podejście sprawdziło się, natomiast pojawił się problem innej natury.
Mianowicie cały ten ładnie podzielony, zaizolowany system był przykrywany jedyną, wielką aplikacją webową. Tak więc pozbyliśmy się monolitu na back-endzie i problemy zaczął sprawiać ten reprezentujący naszą aplikację u klienta. I tu wkracza idea microfrontendów, czyli podzieleniu wielkiej aplikacji interentowej na kilka pomniejszych. Artykuł wprowadzający do tego tematu jest dostępny tutaj.
Na pole „Hold” zostali przesunięci rock-star developerzy, czyli wybitnie uzdolnione jednostki, które potrafią wyprodukować gigantyczną ilość działającego kodu. Ruch ten tłumaczony jest faktem, że programowanie to obecnie sport mocno zespołowy o ile taki programista 10x może dużo naprodukować, to z reguły praca z innymi nie jest ich mocną stroną, mówiąc łagodnie. Co prowadzi na dłuższa metę do spadku wydajności całego zespołu. O wiele większy nacisk powinno się kłaść na stworzenie sprawnych i zgranych ze sobą zespołów programistycznych z członkami z różnym poziomem doświadczenia i ekspertyzą zawodową.
Kolejny problem, który naświetla ta edycja Technology Radar to Lambda Pinball, czyli zachłyśnięcie się podejściem servletless i dotarcie do tego stopnia, że ogarnięcie pajęczyny serwisów servletless, które miało zastąpić nam tradycyjny serwer pochłania nam więcej sił i skupienia niż problemy biznesowe, które mamy rozwiązać.
Platformy
W tym wydaniu nic nie rzuciło mi się w oczy jeśli chodzi o platformy programistyczne.
Narzędzia
Z interesujących rzeczy na poziomie Adopt znajduję się ES-Lint, czyli znane i lubiane narzędzie do statycznej analizy kodu JavaScript/TypeScript. Zaskoczenia tu wielkiego nie ma, bo ES-Lint już od dawna jest używany przy poważnych produktach i bardzo ułatwia utrzymanie porządku w kodzie.
Pierwszy raz słyszę (no ale od tego Tech Radar jest, żeby takie rzeczy pokazywać) o narzędziu React Styleguidist, z opisu w dokumencie wynika, że może on zastąpić Storybooka. Zobaczymy co z tego wyniknie, ja ze swojej strony zamierzam sprawdzić go w praktyce, bo akurat w pracy w tematach Storybookowych zacząlem się obracać.
Języki, biblioteki i frameworki
Tutaj podziało się najwięcej z rzeczy mnie interesujących. Po pierwsze do etapu Trail trafił jest-when oraz React Testing Library, czyli biblioteki bezpośrednio powiązane z testami jednostkowymi. Pierwsza z nich wspomaga dopasowywanie argumentów przy używaniu jest’owych mocków, druga natomiast jest na najlepszej drodze do zastąpienia Enzyme (który został przesunięty do sekcji Hold) jako biblioteka do testowania reacta.
Pojawiły się również Styled Components jako rozwiązanie do stylowania komponentów reactowych, które zdobywa dominację na tym polu. Również jest na etapie Trail.
Co ciekawe to nie koniec rzeczy powiązanych mniej lub bardziej powiązanych z ReactJS – w sekcji Assess odnajdziemy GatsbyJS. Jest to framework do tworzenia stron statycznych (choć nie tylko) z użyciem ReactJS. Obok niego mamy GraphQL, czyli bibliotekę do wyciągania i agregacji danych, można o nim myśleć jak o czymś na kształt REST, ale GraphQL oferuję znacznie więcej, większym kosztem kodu jaki musimy napisać by np. połączyć więcej niż jedno źródło danych.
Na koniec zostawiłem polski akcent – NestJS. Framework pisany z myślą o użyciu wraz TypeScript. Został on nazwany Spring-bootem po stronie JavaScript, bo „przykrywa” on wygodniejszym api wiele innych bibliotek takich jak express czy passport i zdecydowanie ułatwia zgranie wszystkiego w spójną całość. Trafił on do sekcji Assess… co czynie przy budowie pewnej aplikacji. Osobiście jestem z niego bardzo zadowolony, choć oczywiście zobaczymy jak przetrwa spotkanie z użytkownikami 🙂
Jeśli interesuję Cię NestJS to zupełnie przypadkiem oferuję kurs wprowadzający (tworzenie CRUD’a) w ramach darmowych kursów na kursy.clockworkjava.pl
Jeśli chcesz dowiedzieć się więcej na temat jakiejkolwiek z wymienianych technologii w Technology Radar daj znać w komentarzu… albo zapisz się do newslettera i głosuj na nią sondach na kolejny, darmowy kurs 🙂