marcin skwarek exatel

Elastyczność w pracy to skutek a nie przyczyna. Historia Marcina Skwarka

– Ta “elastyczność” daje dużo satysfakcji, bo masz możliwość zobaczenia, jak działa rozwiązanie, nad którym spędziłeś sporo czasu. Dodatkowo wymaga ona poznania całości systemu, co pozytywnie wpływa na rozwój, powstawanie pomysłów i pozwala na dostarczanie jeszcze lepszego produktu – powiedział nam Marcin Skwarek, Starszy Programista w Dziale Nowych Rozwiązań w EXATEL. Rozmawiamy z nim m.in. o tym, jakie korzyści zespołowi przynosi elastyczność i wolność w wyborze rozwiązań.

elastyczność exatel

Co skłoniło Ciebie do przejścia do EXATEL?

To zabawne. Przeglądałem oferty na jednym z konkurencyjnych portali i oferta EXATEL wyróżniała się na tle innych dość ciekawymi technologiami (np. VHDL). Po formule ogłoszenia i researchu nie byłem jednak zainteresowany wysyłaniem CV. Namówił mnie jednak kolega z (wtedy) aktualnej pracy i później było już tylko milej. Bardzo mnie zaskoczył szybki kontakt a game changerem było spotkanie on site. 

Po rozmowie z moimi przyszłymi kolegami z zespołu nie miałem wątpliwości, że jest się od kogo uczyć, że projekt jest ciekawy i oryginalny. Prawda jest taka, że wyzwania, które stawiamy przed sobą w EXATEL są na tyle interesujące, że prawdopodobnie gdybym nie miał ich w pracy zawodowej i tak robiłbym podobne rzeczy w wolnym czasie, jako hobby. Tu nie dość, że zarabiam za to pieniądze, to jeszcze mam możliwość i czas na rozwijanie się w godzinach pracy.

Na co zwracasz uwagę podczas rozmowy rekrutacyjnej do nowej firmy? Co dokładnie sprawia, że podejmujesz ostateczną decyzję o przyjęciu oferty pracy?

Jeśli jest już jakaś propozycja na stole, czyli mam dogadane warunki finansowe i technicznie odpowiadam firmie, to zaczynam zastanawiać się, czy rzeczywiście ta zmiana jest zmianą na lepsze. Mam swój standardowy zestaw pytań, które zbierałem przez kilka rekrutacji i dotyczą one mojej roli, zespołu, organizacji pracy, podejścia do pracy zdalnej, czasami modelu biznesowego firmy. To pozwala wyczuć, czy rzeczywiście będzie to takie miejsce, gdzie będę się czuł dobrze.  

Zmiana pracy wymusza na Tobie dalszy rozwój? Twoim celem zmiany pracy jest możliwość podniesienia kompetencji czy coś innego?

Myślę, że tylko do czasu. Jeśli najwydajniej podnosisz swoje kompetencje poprzez zmianę pracy, to w sumie nic mi do tego, ale musisz być przygotowany na wielokrotne wdrażanie się w różne firmy a nie zawsze jest to przyjemne. Na początku kariery na pewno możesz poznawać wiele różnych systemów i dzięki temu patrzeć na całą działkę IT z różnych perspektyw. Później wydaje mi się, że trochę to powszednieje. Traktuję zmianę pracy raczej jako ostateczność niż rutynę. Moim celem najczęściej jest polepszenie własnej sytuacji. Jeśli gdzieś nie czuję się dobrze, jestem wypalony, czy zwyczajnie nie pasjonuje mi to co robię, to traktuję to jako dobry powód żeby pracę zmienić. Jeśli są to jakieś pomniejsze problemy, to nie uważam, że warto zaczynać od szukania nowej pracy. Dlatego nie wiązałbym tak wprost rozwoju ze zmianą stanowisk.

Nie lubisz nudnych projektów. Czym zajmujecie się w EXATEL?

Interesujący na pewno jest projekt TAMA z branży ICT. Trzeba się znać na Linuksie, sieciach i programowaniu. Dla mnie ciekawe jest to, że projekt fajnie automatyzuje pracę użytkowników. Problem pozornie nie jest trudny, właściwie doświadczony sieciowiec z odpowiednimi narzędziami (jakiś monitoring i sesja BGP z routerem) mógłby robić wszystko ręcznie. Tylko musiałby gapić się cały czas na ekran i kompulsywnie naciskać F5 żeby sprawdzać, czy na pewno nasza infrastruktura nie jest atakowana. 

Oczywiście problem robi się bardziej złożony, gdy routerów jest więcej, a monitoring nie obejmuje tylko jednego adresu/klienta/sieci, gdzie każdy element może mieć swoje konfiguracje czy wyjątki. Dodatkowe komplikacje powstają, gdy nie chcemy twardo odcinać klientów, którzy są atakowani, a chcemy jedynie wyciąć ruch pochodzący od atakującego. Urządzenie, które umie to robić albo jest drogie, albo jest fajnym wyzwaniem inżynierskim. My wybraliśmy drugą opcję, bo lubimy podejmować takie wyzwania. 

Na temat samego problemu wpinania takiego komponentu w sieć można pewnie dyskutować bardzo długo. Poruszanie się w takiej dziedzinie to codzienna walka o każdy cykl procesora, by zapewnić możliwie najniższe opóźnienia, żeby internet działał po prostu szybciej. To zdecydowanie inny poziom dbałości o wydajność niż spotykałem w innych projektach. 

Czy możesz więcej powiedzieć o nowych funkcjonalnościach w TAMIE?

TAMA w pierwszych wersjach była dość podstawowym systemem ochrony przed atakami DDoS. Wykonuje swoją pracę bardzo dobrze, z powodzeniem chroni naszą sieć. Jednak cyberataki to ciągły wyścig zbrojeń, gdzie niczego do końca nie można być pewnym. Dlatego planujemy wciąż rozwijać system, szczególnie w zakresie detekcji, analizy i mitygacji ataków. Istota detekcji jest oczywiście zrozumiała – im wcześniej wykryjemy atak, tym lepiej dla sieci Exatela i tym lepiej dla naszego klienta. Podobnie z mitygacją – są ataki trudniejsze do identyfikacji i te prostsze. Dużo łatwiej jest odsiać pakiety z niepoprawną sumą (swoją drogą, słabo przygotowany DDoS) niż pakiety z ataku na warstwę aplikacyjną. 

My chcemy to robić – chcemy powiększać portfolio mitygowanych ataków, bo wiem, że mamy takie możliwości. Jeśli chodzi o analizę ataków, o której wspomniałem, to robimy to, aby lepiej rozumieć jakie trendy są aktualnie wykorzystywane przy próbach ataku na naszą infrastrukturę. 

W jaki sposób analizujecie ataki? Na jakie czynniki zwracacie uwagę i ile czasu zajmuje Wam taka analiza?

Na obecną chwilę analizę ataków opieramy głównie na protokole netflow, w naszym przypadku jest to wersja 9. Netflow to statystyczna informacja w bardziej przystępnej, wstępnie zagregowanej formie. Używamy tego protokołu nie tylko do analizy ataków, ale też do samego ich wykrywania. Dzięki netflow można zebrać naprawdę szczegółowe informacje na temat ruchu i do podstawowych detekcji jest to w zupełności wystarczające. 

Detekcja uwzględnia kilka czynników. Jednym z najprostszych i najłatwiejszym do wyobrażenia sobie jest ruch w bitach na sekundę. Kolejnym, może delikatnie bardziej wymagającym jest miara pakietów na sekundę. Dodatkowo analizujemy ruch przykładowo pod kątem użytych flag w protokole TCP czy odchylenia w stosunku do danych historycznych. Wiele z naszych rozwiązań jest generycznych i staraliśmy się pokryć algorytmami jak największą liczbę ataków. Czas samej detekcji ataku DDoS to kwestia sekund.

Jeśli atak wydawał się nam z jakiegoś powodu ciekawy (bo na przykład jest nowy i nie do końca taki jeszcze znamy) to mamy możliwość analizy surowych danych netflow lub nawet możemy zrzucić sobie PCAPa z takiego ruchu. Jest to później potężna dawka danych do analizy takiego zdarzenia i wtedy tylko od inwestygatora zależy jak dużo czasu poświęci na dowiedzenie się, co takiego zadziało się w tym ataku DDoS. 

Jak konkretnie działa fuzzing w waszym projekcie?

Bardzo polecam artykuł mojego kolegi z zespołu, w którym szerzej opisuje fuzzing. W dużym skrócie: wysyłamy różne pakiety do naszych komponentów, które te pakiety odbierają i sprawdzamy, co się stanie. Pakiety mogą być poprawne, niepoprawne, zupełnie absurdalne. Wykorzystujemy do tego clanga i libFuzzer, podłączamy taki komponent i czekamy z nadzieją, że fuzzer niczego niepokojącego nie znajdzie.

Jakie procesy staracie się automatyzować w IT?

Staramy się zautomatyzować wszystko, co jest warte automatyzacji. Moją ulubioną dziedziną jest automatyzowanie powtarzalnych zadań, które wynikają z moich obowiązków, ale nie zawsze się da. Jednak odstawiając żarty na bok i przechodząc do samego procesu developerskiego, automatyzujemy testy jednostkowe i integracyjne, konfigurację infrastruktury oraz po części wdrożenie. Automatycznie dbamy o spójność stylu, kod poszczególnych komponentów skanujemy też statycznymi analizatorami. Staramy się przy tym działać w duchu fail-fast i jeśli tylko coś nie spełnia naszych wymagań jakościowych, to szybko wracać do programisty z informacją zwrotną. 

Co daje automatyzacja z punktu widzenia programisty?

Dzięki temu nie musimy przejmować się rozpraszaczami, tylko zająć się realizacją zadań. Czuję się bardzo komfortowo, jeśli wiem, że przed commitem zmian automat poprawi wszystkie wymagania, które ustaliliśmy sobie w projekcie (lub zakończy działanie z błędem jeśli tak nie będzie). Podobnie testy automatyczne, jeśli przechodzą i są dobrze napisane to możemy im zaufać. My skupiamy się na testowaniu tego, co istotne, czyli na przykład logiki, spójności zachowania naszego systemu bądź na jego bezpieczeństwie. Eliminacja powtarzalnych i nudnych zadań pozwala nam trzymać się istoty problemu oraz zapewnia psychiczny komfort przy zmianach, wdrożeniach i refaktorach.

elastyczność tama exatel

Jak wyglądają priorytety jeżeli chodzi o produkty w EXATEL? Na co szczególnie zwracacie uwagę podczas developmentu?

Właściwie to różnie, w zależności na jakim etapie byliśmy (projekt jako projekt i ja jako programista). Zawsze była świadomość, że bardzo istotna jest wydajność, ale też nie wszędzie za wszelką cenę. Czasami warto poświęcić ją na korzyść jakości kodu, jego czytelności i utrzymywalności. Na pewno szczególną wagę przywiązujemy do wydajności, czytelności, łatwości wprowadzania zmian i do bezpieczeństwa kodu. Kiedyś mniej, a teraz bardziej staramy się, aby aplikacje z tak a nie inaczej napisanym kodem możliwie łatwo dało się wdrożyć, a łatwo o tym zapomnieć, gdy jest się tylko przy procesie developmentu.

Nad czym obecnie pracujecie?

Aktualnie poświęciliśmy chwilę czasu na integrację TAMY z innymi systemami, interesowaliśmy się tematem BGP Flowspec, implementowaliśmy nowe funkcje na podstawie flowspeca oraz rozgryzaliśmy monitorowanie tuneli GRE. Kolejnymi tematami w kolejce są pełne wsparcie wysokiej dostępności (baz danych, jak i naszych autorskich komponentów), nowe metody detekcji i mitygacji nowych rodzajów ataków, rozszerzenie funkcji pozwalających na analizę ataków (D)DoS i rozwój modułu raportowania po atakach.

W firmie masz dużo swobody odnośnie tego, czym aktualnie się zajmujesz. Dlaczego preferujesz taką elastyczność, zamiast zagłębiania się w konkretną niszę?

Elastyczność to trochę skutek a nie przyczyna. Lubię mieć poczucie kontroli nad tym, co robię. Nie wyobrażam sobie, że w TAMIE piszemy tylko kod aplikacji X i nie obchodzi nas w jakiej konfiguracji będzie to później uruchomione albo jak właściwie będzie to deployowane. Ta “elastyczność” daje dużo satysfakcji, bo masz możliwość zobaczenia, jak działa rozwiązanie, nad którym spędziło się sporo czasu. Dodatkowo wymaga to poznania całości systemu, co pozytywnie wpływa na rozwój, dostarcza pomysłów i pozwala na dostarczanie jeszcze lepszego produktu. 

Poza tym technologia wciąga. Myślę, że jest niewiele miejsc, gdzie jako programista mógłbym zbudować sieć na światłowodach 40G/100G, procesować 25M pakietów na sekundę czy zajmować się statystyką albo analizą ataków DDoS (albo je przeprowadzać). 

Na jakiego rodzaju wsparcie w rozwoju może liczyć nowa osoba w EXATEL?

To wszystko zależy od obszaru, w który chcielibyśmy się zagłębić. Myślę, że mamy bardzo duże możliwości, jeśli chodzi o działkę ICT i kompetencje jakie są tam cenione. Nasze umiejętności w zakresie C/C++ można ocenić samemu, przeglądając kod libnetflow9 udostępniony na githubie EXATEL. Fakt, że ten kod został opublikowany też sam w sobie potwierdza, że firma pcha pracowników w kierunku rozwoju. Rozumiemy potrzebę projektów open-source i też chcieliśmy dołożyć cegiełkę od siebie. 

Nowe osoby staramy się od razu włączać w zadania projektowe. Może nie jest to commit on the first day, ale i tak bardzo szybko przechodzimy do faktycznej pracy nad projektem. Umożliwia nam to środowisko, możemy jedną komendą zbudować projekt, bez większej wiedzy o samym rozwiązaniu. Z punktu widzenia rozwojowego nowe osobą są zazwyczaj trochę faworyzowane – dostają zadania, które nie są tak silnie osadzone w realiach projektu (nie potrzeba do nich specjalistycznej wiedzy domenowej), żeby to na nich uczyć się projektu. Czasami bywa tak, że skutkuje to interesującymi wnioskami i później praca już sama idzie dobrze do przodu. 

Staramy się, aby praca zdalna nie utrudniała nam kontaktu ze sobą. W biurze dużo łatwiej było się wdrażać, ale staramy się przenosić dobre biurowe przyzwyczajenia do realiów zdalnych. 

Gdybyś miał dać radę juniorowi: specjalizacja czy próbowanie wielu alternatywnych ścieżek kariery?

Moja rada to próbowanie wielu alternatywnych ścieżek, ale też bez przesady. Myślę, że mamy aktualnie na rynku tak wiele specyficznych rozwiązań, krojonych pod konkretne potrzeby (i może nie zawsze potrzebnych), że nie ma sensu od razu podejmować decyzji o tym, żeby się zagłębiać na 100% w *coś*. Porządne poznanie uniwersalnych technologii na pewno będzie w cenie. Poza tym, dostosowywanie do zmieniających się warunków również znalazłoby się gdzieś wysoko na liście moich rad.


Marcin Skwarek. Starszy Programista w Dziale Nowych Rozwiązań w EXATEL. Zajmuje się programowaniem i researchem w zespole odpowiedzialnym za produkt anty-DDoS – TAMA. Naukę programowania zaczynał od C, później zajmował się chwilę C++, po czym przeszedł głównie do Pythona. Jest fanem prostych i ponadczasowych rozwiązań (poleca produkty firmy GNU, szczególnie Linux i emacs), a od kilku lat polubił się z automatyzacją (niemal każdą). W wolnym czasie jeździ na nartach, rowerem, motocyklem, pływa żaglówką, oddaje się wątpliwej przyjemności oglądania polskiej piłki klubowej oraz programuje i konstruuje dziwne rzeczy, które z jakiegoś powodu wydają mu się interesujące.

Zdjęcie główne artykułu pochodzi z unsplash.com.

Zapraszamy do dyskusji

Patronujemy

 
 
More Stories
fullstack łukasz tkacz
Dobrego programistę wyróżnia umiejętność zrozumienia potrzeb klienta. Wywiad z Łukaszem Tkaczem