09-08-2022

Projekt Inspirations & Acquisition

Share

W projekcie Inspirations & Acquisition rozwijanych i utrzymywanych jest kilka kluczowych usług:

Flight search & price calendars

Jeden z najważniejszych projektów w firmie składający się z dwóch aplikacji – Flight Search Result (FSR) oraz Instant Flight Search (IFS). Pierwsza z nich realizuje wyświetlanie wyników wyszukiwania połączeń lotniczych na zadane przez klienta kryteria, podając kierunki oraz daty. Druga aplikacja przedstawia wyniki wyszukiwania w kalendarzu cen dla kierunku wybranego przez klienta. Oba rozwiązania są zasilane danymi dostarczonymi przez system rozwijany przez zespół w ramach projektu Flight Content. Rozwiązania są w całości rozwijane w ramach monorepo, w oparciu o NX oraz framework Angular. Całość jest serwowana przez mikrobackend w oparciu o serwer NestJS. Aplikacje wykorzystują Redis do przetrzymywania danych lokalizacyjnych oraz tłumaczeń.

Stack technologiczny:

Node.js 16+, NestJS 7+, Angular 12+, NX, Redis, REST, GraphQL, Docker, Kubernetes, Google Cloud

Flights landing pages & static content

W ramach projektu rozwijane są landing page związane z lotami, między innymi strony kierunkowe oraz strony lotnisk i linii lotniczych. Ich celem jest ściąganie ruchu z wyszukiwarek internetowych i innych źródeł do naszych systemów wyszukiwania. Strony te są zasilane treściami statycznym, danymi słownikowymi czy lokalizacyjnymi z autorskich rozwiązań, między innymi z systemu CMS oraz Intl, który również rozwijany jest przez zespół. Do części statycznej możemy jeszcze zaliczyć: Poradnik Podróżnika, Okazje, formularz kontaktowy, opinie, a także strony ze zniżkami.
Projekt składa się z jednej większej aplikacji oraz kilkunastu mikroserwisów rozwijanych głównie w technologii PHP, w oparciu o bazę PostgreSQL oraz cache Redis.

Stack technologiczny:

PHP 7.2+, Symfony 4.4+, JQuery, Webpack, Varnish, Redis, PostgreSQL, REST, SOAP, Docker, Kubernetes, Google Cloud

Autocomplete & indexer

Projekt skupiony na rozwoju systemu podpowiadania użytkownikom naszych serwisów kierunków podróży, które są wykorzystywane w wyszukiwarce ofert lotniczych, hotelowych, ubezpieczeniowych oraz pakietowych. Rozwiązanie skupia w sobie takie typy obiektów jak: kontynenty, kraje, regiony, miejscowości, lotniska czy hotele. Wykorzystuje również potęgę silnika wyszukiwania Elasticsearch i potrafi wyczuć intencje użytkownika, by podpowiedzieć jak najbardziej trafne kierunki. Ponadto gromadzone są wybory użytkowników w celu wyliczenia najbardziej popularnych kierunków. Projekt składa się z dwóch mikroserwisów, samego autocomplete rozwijanego w Node.js oraz usługi popularności opartej o PHP. Jest w nim także wykorzystywany worker indeksujący dane.

Stack technologiczny:

PHP 7.4+, Symfony 4.4+, Node.js 14+, TypeScript, NestJS 8+, Elasticsearch 7+, MongoDB 4+, Redis, REST, Docker, Kubernetes, Google Cloud

Mailing system

Projekt stanowi podstawę komunikacji z klientami eSky za pośrednictwem wiadomości e-mail. Pozwala na generowanie wiadomości oraz dokumentów PDF z szablonu oraz danych. Wygenerowane wiadomości są następnie wysyłane do naszych klientów na całym świecie. Rozwiązanie składa się usługi przyjmującej żądania i kolejkującej wiadomości do wysyłki oraz workera wysyłającego wiadomość z pomocą SMTP. W całości uczestniczy też worker weryfikujący status wiadomości u dostawców. Projekt jest rozwijany w PHP w oparciu o bazę MongoDB oraz system kolejkowy RabbitMQ.

Stack technologiczny:

PHP 7.4+, Symfony 4.4+, MongoDB 4+, RabbitMQ, Redis, REST, SOAP, SMTP, Wkhtmltopdf, Docker, Kubernetes, Google Cloud

Affiliation & partners program

Szereg rozwiązań, umożliwiający naszym partnerom rezerwację usług w preferencyjnych cenach, jak również sprzedaż naszych produktów w ramach programu afiliacyjnego. Partnerzy mają możliwość podglądania rezerwacji i generowania raportów. W ramach projektu rozwijana jest platforma oparta na Angular i wspierana przez mikroserwis napisany w Node.js. Całość jest uzupełniona przez rozwijane w PHP narzędzie umożliwiające wstawianie widgetów ułatwiających sprzedaż na stronach partnerów.

Stack technologiczny:

Node.js 12+, Express.js, Angular 5+, PHP 7.4+, Symfony 4.4+, PostgreSQL, Redis, REST, Docker, Kubernetes, Google Cloud

Organizacja zespołu

Na co dzień pracujemy w Scrum. Nasze sprinty trwają dwa tygodnie i kończą się review, na którym prezentujemy wyniki naszych prac. Sprint zawsze zaczyna się planingiem, na którym ustalamy zakres prac na najbliższe dwa tygodnie. W trakcie sprintu mamy regularne groomingi oraz refinementy. Raz dziennie spotykamy się na daily, wspólnie obierając poszczególne cele dnia. Często pracujemy w parach i wymieniamy się wiedzą oraz doświadczeniem. Nasz czas pracy jest podzielony: w przybliżeniu nowe tematy zajmują nam około 40%, 30% to maintenance, a pozostałe 30% spotkania.

Codzienne wykorzystywane narzędzia

G Suite, Slack, Jira, Bitbucket, Jenkins, Spinnaker
Prace DevOps

W ramach IT działa sześcioosobowy zespół Site Reliability Engineering, który odpowiedzialny jest również za DevOps. Zespół SRE współpracuje na bieżąco z zespołami deweloperskimi. Z grubsza wygląda to tak, że SRE przygotowuje środowiska dynamiczne, mikrośrodowiska i utrzymuje infrastrukturę (też we współpracy z odrębnym zespołem SysOps). SRE wraz z developerami zajmuje się przygotowaniem procesów wdrożeniowych. Z kolei developerzy wdrażają aplikacje i zajmują się ich konteneryzacją.

Testowanie rozwiązań

Staramy się zachować piramidę testów i kładziemy duży nacisk na weryfikację poprawnego działania naszych rozwiązań. Na co dzień testujemy jednostkowo, przy wsparciu PHPSpec i Jest oraz integracyjnie, wykorzystując Behat i Cucumber.js. Za testy e2e utrzymywane w Cypress jest odpowiedzialny cały zespół. Aktualnie poszukujemy również testera.

Dyżury i praca po godzinach 

Dyżury on-call są wprowadzone jedynie w zespołach SRE/SysOps/Incident management. Developerzy nie mają dyżurów, jednak może się zdarzyć, że potrzebna jest konsultacja z programistą po godzinach pracy. Zwykle do takich zadań wyznaczani są liderzy lub osoby z dłuższym stażem.

Znajomość języka angielskiego

Wymagamy znajomości angielskiego na poziomie komunikatywnym. Developerzy mają czasem okazję do rozmów w języku angielskim z naszymi partnerami, dostawcami zewnętrznymi lub pracownikami eSky, ale obecnie nie jest to codzienność. Chcielibyśmy w niedalekiej przyszłości otworzyć się na możliwość zatrudniania w dziale IT osób angielskojęzycznych. W razie potrzeby, wspieramy również rozwój umiejętności posługiwania się tym językiem.