AtomStore – wieści z frontu

plaforma e-commerce W tym tygodniu udało nam się ruszyć do przodu kilka ważnych spraw. Skupiliśmy się głównie nad optymalizacją pracy skryptów.


Nasza platforma e-commerce posiada wiele zaawansowanych mechanizmów związanych z zapisywaniem historii operacji klienta, tworzeniem profilu zakupowego i generowaniem spersonalizowanych rekomendacji. To wszystko zajmuje sporo czasu, a jak wiadomo czas jest wrogiem programisty, bazy danych i webservera.

Każda z poszczególnych operacji zajmuje kilka czy kilkanaście milisekund. Jeśli jednak uwzględnimy, iż przy wyświetlaniu listy czy karty produktu wykonywanych jest kilkadziesiąt „mini” operacji, zaczyna się robić z tego problem.

Postanowiliśmy poświęcić 2 dni na optymalizacje skryptów i rekonfiguracje serwera.

Co udało się zrobić?

System AtomStore ma dość oryginalnie pomyślaną koncepcje współdzielenia core-a aplikacji. Nie wchodząc w szczegóły, udało nam się załadować wszystkie skrypty do RAM disk-u, dzięki temu czas dostępu do skryptów jest znacznie szybszy. Oprócz tego uruchomiliśmy APC (Dlaczego APC a nie np. eAccelerator? Bo APC będzie włączone domyślnie w PHP 6). Mogliśmy sobie przy tym pozwolić na ustawienie apc.stat na 1 (skrypty mamy w RAM disk-u, więc czas dostępu i wykonania stat-a jest stosunkowo niewielki), co jest bardzo wygodne np. w przypadku drobnych modyfikacji widoków.

Do tego przerobiliśmy trochę zapytań na listingach i w panelu. Co prawda większe prace optymalizacyjne mamy zaplanowane na koniec maja, jednak najważniejsze rzeczy zrobiliśmy już teraz. Wyłączyliśmy preloading obrazków w panelu. Przenieśliśmy także cache modeli do pamięci.

Wyniki

Zaczynaliśmy od 3-4 sekund (wiem – wolno, ale nie koncentrowaliśmy się na optymalizacji) na wyświetlenie pokaźnej strony z listingiem i obsłudze 30 klientów w ciągu 10 sekund. Skończyliśmy w okolicach 1 sekundy przy obsłudze 70 klientów w ciągu 10 sekund. Jak na 2 dni pracy jesteśmy bardzo zadowoleni!

Mamy nadzieje, że na przełomie maja i czerwca zejdziemy do około 0,5-0,6s. Uwzględniając fakt, iż wykonujemy znacznie więcej operacji niż przeciętne systemy e-commerce dostępne na rynku, będzie to bardzo dobry czas renderowania strony.

Jedna uwaga – nie staramy się być przy szybsi od IAI-a czy Shopera, gdyż jest to raczej niemożliwe. To trochę jakby próbować zbudować TIR-a szybszego od samochodu rajdowego. Nasz system wykonuje bardzo wiele operacji, które później pozwalają efektywnie targetować klientów, wysyłać spersonalizowane newslettery czy analizować profil zakupowy klientów. Takie funkcjonalności do tej pory dostępne były tylko w systemach korporacyjnych lub poprzez wykupienie dodatkowych usług w SaaS-ie (które same w sobie nie należały do najszybszych).

Nie samym kodem człowiek żyje, czyli trochę funkcjonalności na pokładzie

Żeby nie było, że cały tydzień przebumelowaliśmy nazywając to optymalizacją 🙂 Oprócz tego kończymy moduł historii operacji, który pozwala między innymi na sprawdzanie kto edytował dane klientów, zamówień czy cenniki oraz przywrócenie poprzedniej wersji rekordów!

Najbliższe 3 tygodnie będziemy ostro pracować nad integracjami oraz drobnymi modułami (np. wyprzedaże, kredyt kupiecki i przedpłaty, rabaty ilościowe). Na Targach eHandlu zobaczycie rezultaty naszych zmagań!

Dzięki dla całego teamu i udanego długiego weekendu 🙂

ps.

Acha – te wyniki uzyskiwane są dla sklepów na współdzielonym hostingu z użyciem peruser-a (wymagane ze względów bezpieczeństwa – dajemy klientom dostęp do layoutów!). Na hostingu dedykowanym z tradycyjnym mod_php to jest zupełnie inna bajka. Czasy są 3-5 razy mniejsze!

Jeśli spodobał Ci się ten post, napisz co myślisz w komentarzu lub subskrybuj RSS-a aby w przyszłości otrzymać powiadomienie o najnowszych postach.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *