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.
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.
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.
Harmonogram
-
Styczeń 2024Analiza starej bazy i wyłapanie błędnych zapytań SQL
-
Luty 2024Budowa API w Node.js i migracja najważniejszych danych
-
Marzec 2024Wdrożenie interfejsu React i testy z grupą 5 spedytorów
-
Kwiecień 2024Peł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."
* 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.