inhire.ioBlogPraca w ITDlaczego duży e-commerce decyduje się na niszową technologię Golang?

Dlaczego duży e-commerce decyduje się na niszową technologię Golang?

Praca w IT
Praca w IT
27/06/2022

Miinto, to jedna z największych modowych platform e-commerce w Europie. Szybko rosnący biznes kreuje m.in. potrzebę skalowalnych rozwiązań technologicznych. Dlaczego wybrali niszową technologię Golang? Jakie możliwości daje taki wybór? Przeczytasz o tym w rozmowie z Piotrem Marczyszyn, Director of Engineering w Miinto.

Miinto, z perspektywy Twojego stanowiska Director of Engineering to? Kim jesteście, kogo zatrudniacie i jakie rozwiązania tworzycie? Co unikatowego przyszli kandydaci mogą znaleźć w Miinto?

Jako Miinto zajmujemy się dostarczaniem platformy łączącej najlepsze marki i butiki modowe z klientami z całego świata. Ze względu na globalny zasięg ostatnio weszliśmy na rynek Chiński. Pracownicy, którzy najlepiej się u nas odnajdują to osoby, które nie widzą nic dziwnego w redukowaniu ilości abstrakcji. Rozumieją także dlaczego technologię buduje się uwzględniając nie tylko łatwość i szybkość wytwarzania, ale przede wszystkim, że w przyszłości musi być utrzymywana, monitorowana i skalowalna. Dlatego szukamy do swojego zespołu ludzi, którzy są gotowi podjąć wyzwanie zrozumienia więcej niż zazwyczaj jest od nich wymagane.

Standaryzacja rozwiązań, wizji i podejścia pozwala nam utrzymywać nasz ekosystem znacznie mniejszą ilością osób niż w przypadku innych firm. Takie podejście pozostawia miejsce na sprawdzanie rozwiązań i możliwości, które nie są standardowe, ale mogą idealnie pasować do naszych potrzeb. Nie uznajemy argumentu w stylu “inni tak robią”, bo opieramy swoje decyzje na danych. Interesują nas metryki, takie jak dopasowanie do naszych potrzeb, zgodność z naszą wizją i wymierne, długoterminowe korzyści.

Wszystko to sprawia, że szukamy bardzo utalentowanych osób, które nie boją się iść wbrew przyjętym nurtom. Osób, które czerpią przyjemność z ciężkiej pracy i mierzenia się ze złożonymi problemami. Wypracowanie naszych rozwiązań zaczynamy od dogłębnego zrozumienia problemu i potrzeby jaką chcemy zaspokoić. Dzięki temu mamy wszystkie narzędzia do podjęcia przemyślanej decyzji o implementacji własnego rozwiązania lub skorzystania z gotowego narzędzia.

Golang to dość rzadka technologia na polskim rynku, dlaczego zdecydowaliście się na dodanie jej do swojego stacku technologicznego?

Nasz ekosystem został zbudowany w większości w oparciu o PHP i odseparowane usługi. Działa to naprawdę dobrze, ponieważ stos związany z PHP mamy już doskonale opanowany, jednak doszliśmy do miejsca gdzie zaczął nas ograniczać sam runtime PHP i jego założenia. 

W Miinto całą logikę biznesową umieszczamy w obrębie długo-żyjących procesów systemowych (workerów), które otrzymują komendy poprzez brokery RabbitMQ. PHP potrafi sobie z taką architekturą radzić jednak bywają problemy, których rozwiązanie jest bardzo uciążliwe lub wręcz niemożliwe na poziomie samego kodu. Dlatego uznaliśmy, że pora przejść na technologię bardziej przystosowaną do naszych potrzeb i wybór padł na Golang. Z jakiego powodu?

Jest ich kilka:

● Po pierwsze, mając już bardzo dobrych programistów PHP szukaliśmy czegoś, co będzie dla nich relatywnie łatwym krokiem w przód do wykonania. Naszym zdaniem przejście z PHP na Golang jest względnie proste i otwiera drogę do języków niższych warstw w przyszłości, jeśli będziemy tego potrzebowali.

● Po drugie, nasze podejście do rezygnowania ze zbędnych abstrakcji bardzo pasuje do społeczności programistów Golang, którzy również rozumieją i czują tę potrzebę. Daje nam to możliwość łatwiejszego znalezienia osób, które podzielają naszą wizję i chcą pracować w taki sposób jak my to już robimy.

● Po trzecie, nie rekrutujemy tylko osób w Polsce natomiast sam fakt, że nad Wisłą Golang jest jeszcze niszowy daje nam możliwość bycia promotorem i pionierem tego języka wśród osób, które szukają możliwości przejścia na tę technologię. Aktualnie szukamy zarówno osób już pracujących w Golang jak i tych, które mają mocne doświadczenie z PHP i chcą przejść na Go. Oferujemy każdemu deweloperowi w Miinto możliwość przejścia tej ścieżki z całym zespołem.

W jakich usługach czy projektach używacie Golang?

Używamy Golang zarówno w projektach biznesowych o różnym poziomie krytyczności jak i w projektach czysto technicznych. Mamy API Restowe napisane w Golang, mamy workery z logiką biznesową napisane w Go (zarówno w projektach pobocznych, wspierających jak i w projektach krytycznych), mamy komponenty wewnętrznego monitoringu napisane w Go. Używamy tej technologii również do pisania jednorazowych narzędzi automatyzujących  migrację pomiędzy usługami.

Nie używamy Go tylko w przypadku usług webowych, których jedynym zadaniem jest realizacja logiki prezentacji dla zwykłych użytkowników.

Jakie są plany na dalszą implementację Golang w Miinto?

Aktualnie jesteśmy w fazie migracji na Go. Część usług już została przepisana z PHP i działa bardzo dobrze. Kolejne są przepisywane, a jeszcze następne czekają w kolejce. Nie będziemy oczywiście przepisywać wszystkiego – robimy to tam gdzie to ma sens i uzasadnienie, jednak na przestrzeni najbliższych kwartałów Go stanie się dominującym językiem w Miinto obok aktualnie używanych PHP i Java.

Dodatkowo przygotowaliśmy na nasze potrzeby zestaw bibliotek i narzędzi w Go, których używamy jako podstaw dla naszych projektów i jak tylko uznamy, że mają dostatecznie stabilny interfejs i będziemy mieli pełną dokumentację planujemy je upublicznić jako open source.

Jaka jest struktura zespołu Golang? Jaka jest rola managera?

Unikamy ustalania struktury zespołu z góry aby móc lepiej reagować na potrzeby zespołu. Każdy zespół ma strukturę, rozmiar i zakres kompetencji dopasowywany do projektów, nad którymi będzie pracował. Jedyny stały element to fakt, że leadership teamu zawsze składa się z 3 osób. Tech Managera, SRE domenowego i Product Managera.

Taki podział pozwala każdej osobie koncentrować się na wspieraniu zespołu w jednym temacie, bez konieczności dzielenia uwagi na wiele rzeczy równolegle. Na koniec dnia realizujemy wspólny cel dla całej domeny. TM zapewnia wsparcie organizacyjne i managerskie, SRE pełni rolę mentora technologicznego i dodaje do zespołu kompetencje infrastrukturalne, a PM zapewnia wsparcie biznesowe.

Przeczytaj także – Historie kobiet, które odmieniły świat IT