Transport i Logistyka

Skrócenie czasu ładowania CRM o 67% dla firmy transportowej

Przepisaliśmy starą aplikację z PHP na React i Node.js. Zoptymalizowałem zapytania do bazy danych, dzięki czemu panel admina przestał się zawieszać przy 47 użytkownikach jednocześnie.

–67% czasu ładowania
KlientTrans-Logistyka Gdańsk
BranżaTransport i Logistyka
HarmonogramStyczeń–Kwiecień 2024

Firma transportowa z Gdańska borykała się z systemem, który pamiętał czasy Windowsa XP. Gdy rano 47 spedytorów odpalało panel, wszystko stawało w miejscu. Naprawiliśmy to, przepisując backend i czyszcząc bazę danych.

ReactNode.jsPostgreSQLTypeScriptDocker

Wyzwanie

Główny problem leżał w starym kodzie PHP i zapytaniach SQL, które mieliły dane bez żadnego indeksowania. Wyciągnięcie listy 156 ostatnich zleceń zajmowało systemowi 12 sekund. Pracownicy tracili czas na czekanie, aż strona się przeładuje, zamiast rozmawiać z kierowcami. Dodatkowo baza danych puchła od niepotrzebnych logów, co co tydzień powodowało krótkie awarie całego panelu.

Podejście

Zacząłem od audytu bazy danych i logów serwera. Szybko wyszło, że 83% czasu procesora idzie na puste przebiegi i źle napisane pętle. Postawiłem na prostą architekturę: Node.js na backendzie i React na froncie. Pracowaliśmy w 3 osoby – ja, jeden programista od frontendu i ich wewnętrzny administrator, który tłumaczył nam, jak działają trasy. Żadnej magii, po prostu czysty kod i lepsza struktura danych.

Rozwiązanie

Zbudowaliśmy nowy panel od zera. Wprowadziłem mechanizm stronicowania danych, dzięki czemu przeglądarka nie musi już wczytywać 5000 wierszy naraz. Dodaliśmy też WebSockety – teraz statusy ciężarówek na mapie odświeżają się same, bez klikania F5 co minutę. Całość wrzuciliśmy na stabilny serwer, który nie poci się przy większym ruchu rano.

Rezultaty

System przestał być wąskim gardłem w firmie. Spedytorzy pracują szybciej, a szef nie musi już co poniedziałek dzwonić do informatyka, że 'znowu nie działa'. Wszystko śmiga płynnie nawet przy pełnym obłożeniu biura.

1.8s
Czas ładowania strony głównej
47
Aktywnych użytkowników bez lagów
0
Awarii systemu w marcu 2024
23%
Mniejsze zużycie zasobów serwera

Harmonogram

  1. Styczeń 2024
    Analiza starej bazy i wyłapanie błędnych zapytań SQL
  2. Luty 2024
    Budowa API w Node.js i migracja najważniejszych danych
  3. Marzec 2024
    Wdrożenie interfejsu React i testy z grupą 5 spedytorów
  4. Kwiecień 2024
    Pełny start systemu i wyłączenie starego serwera PHP

"Z początku bałem się kosztów, bo trzy inne firmy dawały dwa razy wyższe wyceny. Eric pokazał nam konkretnie, co trzeba wyciąć, a co zostawić. Teraz dashboard odpala się w sekundę i nikt już nie marudzi w biurze."

Marek Wiszniewski Właściciel, Trans-Logistyka Gdańsk Maj 2024

* Powyższa opinia i wyniki optymalizacji są specyficzne dla opisanego projektu. Rezultaty mogą się różnić w zależności od stanu wyjściowego kodu i infrastruktury klienta.