Wyzwania techniczne
Projekt stanowił ogromną nierozwiązywalną łamigłówkę, którą podzieliliśmy na mniejsze zadania, priorytetyzowaliśmy i stopniowo rozwiązywaliśmy. Wybraliśmy platformę Vendure.io, ponieważ to nowoczesna bezgłowa struktura do szybkiego tworzenia sklepów internetowych z możliwością rozwijania niestandardowego interfejsu użytkownika i rozszerzania istniejącej funkcjonalności przy użyciu Node.js i GQL. Następnie przearanżowaliśmy bazy danych: połączyliśmy je, przekształciliśmy format danych, wykluczyliśmy duplikaty i usunęliśmy uszkodzone dane, przenieśliśmy do Postgre. MVP zostało miękkie uruchomione, a stara wersja tymczasowo działała równolegle w celach beta-testowania. Kolejnym wyzwaniem było zbudowanie bogatszej funkcjonalności i zaktualizowanie bazy danych nowymi danymi – producenci, części, cenniki, schematy rabatowe. Nowa funkcjonalność obejmowała system rabatowy, obsługę wielojęzyczną, importowanie cen i automatyzację eksportu zamówień. Najtrudniejszym zadaniem było odtworzenie systemu rabatowego i rozwinięcie automatyzacji cennika. Te same części samochodowe są produkowane w różnych fabrykach i miejscach, mogą mieć w pełni zamienne odpowiedniki innych marek, a każdy producent oferuje kumulacyjne zakresy rabatów, które zależą od ilości zakupionych przedmiotów przez firmę na stałe. Zanim zaczęliśmy budować tę funkcjonalność, zebraliśmy wszystkie wymagania, aby mieć pewność, że wszyscy mówimy o tym samym. Jeśli chodzi o automatyzację importu, co 3 miesiące Klient otrzymuje pliki z aktualnymi produktami i nowymi cenami od dostawców. Pliki te zawierają miliony wierszy, i konieczne było sparsowanie ich przy użyciu wielowątkowości i kolejek, a następnie skuteczne zaktualizowanie katalogu produktów, obsługa błędów przetwarzania i skrócenie czasów aktualizacji. Po załadowaniu danych katalog produktów wzrósł do 10 milionów unikalnych części, co spowodowało poważny spadek wydajności. Przeprowadziliśmy sesje testów obciążeniowych, optymalizując logikę biznesową, strukturę bazy danych, indeksy, zapytania SQL, API, schematy GQL, interfejs użytkownika, skrypty, infrastrukturę. Po 3 tygodniach skrupulatnej pracy osiągnęliśmy pożądane rezultaty. Teraz nowa witryna całkowicie zastąpiła starszą wersję.