Programiści NFQ podjęli wyzwanie zbudowania platformy handlowej, która z powodzeniem obsłużyłaby rosnącą ilość danych (na początku czerwca 2019 r. było 1 mln produktów, a w 2021 r. już około 20 mln), i to w ciągu 6 miesięcy. Tak właśnie narodziła się platforma Smarketer.

Smarketer.Shopping to znana niemiecka porównywarka cen. Nasz zespół, programując w języku Kotlin na silniku wyszukiwania ElasticSearch, zbudował na AWS dostosowaną do szybkiego wzrostu platformę handlową, na której użytkownicy końcowi mogą szybko i skutecznie wyszukiwać pożądane produkty oraz porównywać ich ceny u różnych dostawców.

I to się sprawdziło. Liczba unikatowych użytkowników systemu rośnie średnio o 66% co 6 miesięcy, i będzie to trwać nadal pomimo pogorszenia sytuacji rynkowej w związku z epidemią COVID-19 w latach 2020–2021.

„W trakcie opracowywania Smarketera zwracano szczególną uwagę na stabilność i skalowalność. W niedalekiej przyszłości planujemy zwiększyć potencjał monetyzacji platformy oraz umożliwić radykalne zwiększanie liczby produktów. Docelowo chcemy osiągnąć poziom 100 milionów produktów” – mówi Vainius Venclovas, kierownik zespołu w NFQ.

Wyzwanie technologiczne

Podczas opracowywania platformy Smarketer.Shopping zmierzyliśmy się z ważnym problemem. Duże rozmiary plików ze zdjęciami produktów w wysokiej rozdzielczości spowalniały szybkość ładowania tej platformy internetowej. Ponieważ planowana liczba produktów była ogromna, przetwarzanie obrazów musiało być prowadzone w sposób ostrożny. Aby umożliwić codzienne importowanie milionów zdjęć produktów, inżynierowie firmy NFQ skorzystali z usług Amazon Web Services. 

Mówiąc dokładniej: podczas importowania obrazów produktów ich rozmiar jest zmniejszany w czasie rzeczywistym za pomocą usługi obliczeniowej AWS Lambda. Po przetworzeniu obrazy są przechowywane w magazynie danych AWS S3.

A to tylko jeden mały proces w dobrze zaprojektowanym ekosystemie. By wymienić tylko kilka innych:

  • Pliki produktów są ładowane do systemu z modułu administratora. Podczas importu dane o produktach na serwerze są przetwarzane i ładowane/aktualizowane do silnika wyszukiwania ElasticSearch. Do stworzenia front-endu panelu administracyjnego użyto CoreUI opartego na frameworku React.js.
  • Do tworzenia front-endu (portalu platformy handlowej) systemu wykorzystywany jest także dostępny w modelu open-source język TypeScript z frameworkami React.js i Elastic UI oraz komponentami biblioteki ReactiveSearch.
  • Aby opracować back-end i obsłużyć ruch i logikę systemu, nasz zespół koduje w Kotlinie na frameworku Ktor.

„Podczas pracy nad projektem największym wyzwaniem było dla mnie uświadomienie sobie, jak skomplikowane mechanizmy mogą kryć się za tym, co z zewnątrz może wyglądać na coś bardzo prostego. A także przemyślenie wszystkich szczegółów i sytuacji, które mogą wystąpić” — mówi Paul-Willem Thum, Senior Team Lead w firmie Smarketer.

Usługi, które świadczymy