Maciej Matysiak

SAP Hybris Engineer, Team Leader

Kontrolowanie wydajności systemów e-commerce w cloudzie

Dzisiejsze systemy e-commerce nie przypominają tych sprzed kilku lat. Nie tylko dostarczają treści multimedialne oraz pozwalają na składanie zamówienia i płatności online, ale projektuje się je z myślą o user experience, w oparciu o Single Page Application, zgodnie z zasadami Progressive Web Application.

Są odporne na najważniejsze zagrożenia bezpieczeństwa (TOP 10 OWASP) i wysokowydajne. Skala trudności rozwoju takich aplikacji rośnie - podobnie jak oczekiwania klientów i presja czasowa na szybkie dostarczanie funkcji biznesowych. Jak zapewnić najwyższą wydajność takiej platformy?

Wydajność jako cel biznesowy

Przyczyną niepowodzeń wielu złożonych projektów jest zaniedbywanie problemu wydajności. Nie istnieje ona bezpośrednio w backlogu, nie jest postrzegana jako cecha systemu, ale zespół i klient traktują ją jako oczywistość. To dlatego łatwo zlekceważyć czy pominąć ten aspekt, gdy klient zgłasza zapotrzebowanie na kolejne funkcje systemu, podczas gdy dodanie elementów będzie wymagało dodatkowej pracy, by utrzymać założony poziom wydajności.

Przy budowaniu dużych systemów zrozumienie znaczenia wydajności ma kluczowe znaczenie. Dbanie o nią powinno być częścią sprintów rozwojowych. Należy wyjaśnić klientowi wagę tego zagadnienia, dzięki czemu świadomie przeznaczy on część czasu zespołu na realizację tego zadania. Innymi słowy, trzeba traktować wydajność jako ficzer systemu. Obok przyjęcia filozofii “performance as a feature” potrzebujemy też jednoznacznej weryfikacji, czy zadanie spełnia zasady DoD (Definition of Done), a więc musi istnieć wiarygodny sposób jej pomiaru.

Metodyka pomiaru wydajności

Słynne słowa Toma de Marco “You can’t control what you can’t measure” z książki “Controlling Software Project” odnoszą się do szacowania rozmiarów oprogramowania. Jeżeli chcemy panować nad kosztem wyprodukowania software, należy wypracować metodykę szacowania rozmiaru oprogramowania oraz móc go zmierzyć. Tą ideą warto inspirować się także w przypadku wydajności i opracować sposób pomiaru oraz jednoznaczne metryki. Klienci systemów najczęściej używają nieprecyzyjnych określeń typu “aplikacja działa wolno” - to bardziej percepcja niż miarodajny wynik.

Najprostszym parametrem jest czas odpowiedzi serwera, który łatwo zebrać z logów aplikacji i przekazać do obróbki statystycznej. Aby bardziej uwzględnić percepcję i odczucia użytkownika lepiej oprzeć się na czasach ładowania aplikacji w przeglądarce (Load Time, Finish Time). Należy pamiętać że Finish Time może się znacznie różnić od Load Time, ponieważ uwzględnia ładowanie dodatkowych elementów na stronie (requesty ajax, dodatkowe zasoby typu obrazki). Takie podejście wprowadza pewne elementy, nad którymi nie mamy kontroli, na przykład wyniki zależne są od ruchu sieciowego pomiędzy serwerem a klientem oraz szybkości komputera użytkownika. Mierzenie czystego czasu odpowiedzi z serwera pozwala skupić się tylko na pomiarze działania samej aplikacji, która może działać wydajnie, ale nie zweryfikuje, czy użytkownikowi strona ładuje się wolno np. ze względu na za dużą liczbę obrazków na stronie.

Czy mój system jest wydajny?

Serwowanie stron sklepu internetowego średnio powyżej 4 sekund może mieć znaczący wpływ na finansowe straty mierzone spadkiem sprzedaży. Zniecierpliwienie użytkowników wolnym działaniem może zachęcić ich do znalezienia innego sprzedawcy. Kluczowym aspektem w tym momencie staje się monitorowanie na bieżąco “stanu zdrowia” aplikacji. O ile de Marco sugeruje wypracowanie własnej metodologii pomiaru, o tyle w przypadku weryfikacji wydajności nie jest konieczne odkrywanie koła na nowo. Możemy skorzystać z gotowych narzędzi, jak Nagios, Grafana, Splunk, które badają m.in. bieżącą liczbę requestów na sekundę i stan użycia CPU na serwerach.

Application Performance Management jako standard w rozwiązaniu SAP Hybris Commerce Cloud

Samo mierzenie nie wystarczy gdy napotkamy regres w działaniu systemu. Do szybkiej naprawy potrzebujemy technologii Application Performance Management. To w skrócie duży kombajn do diagnostyki software, który wprowadza do systemu tzw. agentów. Ich zadaniem jest zbieranie określonych metryk, jednocześnie nie zaburzając badanego środowiska. Wszystkie te dane zbierane są do agregatora danych, gdzie można je przeglądać i wyciągać raporty. Platformę Application Performance Management wykorzystaliśmy w B2B e-commerce firmy Inter Cars S.A. System jest hostowany w SAP Hybris Commerce Cloud, czyli chmurowym rozwiązaniu dla aplikacji opartych o framework SAP Hybris. Hybris Commerce Cloud korzysta z narzędzia Dynatrace, wiodącego producenta w branży APM.

Po uruchomieniu aplikacji w środowisku produkcyjnym otrzymujemy gotowy monitoring z narzędzia Dynatrace. Informacje, które w innym wypadku należałoby żmudnie zbierać na podstawie różnych źródeł, system APM dostarcza na bieżąco w aplikacji raportującej. Istnieje możliwość obserwacji stanu środowiska na żywo lub pracy offline (nagrania danych do dalszej analizy). Dostępne są wszystkie możliwe parametry: od standardowych danych o serwerach i JVM do bardzo ciekawych informacji z punktu widzenia dewelopmentu aplikacji, np. które części kodu aplikacji działają najwolniej. Poprzez wstrzykiwanie skryptu Javascript do stron html Dynatrace pozwala mierzyć zachowanie aplikacji bezpośrednio w przeglądarce użytkowników. Oczywiście należy pamiętać o tzw. efekcie obserwatora i unikać nadmiernej ilości czujników pomiarowych, aby nie spowolnić systemu. Lepiej jednak kosztem pewnej utraty szybkości posiadać pełną informację o stanie aplikacji. Dzięki temu zespół techniczny szybko dowiaduje się o problemach oraz miejscach, które wymagają optymalizacji i może zareagować zanim klienci lub biznes zgłoszą tę kwestię.

 

Inter Cars: nowa platforma B2B
e-commerce dla 16 krajów

Zobacz Case Study

Testowanie na produkcji

Klasyczne podejście do testowania wydajności (tzw. stress tests) zakłada symulowanie warunków produkcyjnych na środowisku testowym, generowanie ruchu użytkowników do systemu docelowego, a następnie obserwacja zachowania systemów, znalezienie bottlenecków i wprowadzenie poprawek. Ale dlaczego nie robić tego na produkcji? Takie podejście rozwiązuje problem symulowania produkcyjnego ruchu do aplikacji - to klienci aplikacji wygenerują rzeczywisty ruch oraz właściwy wolumen danych. Działające w tle czujki APM dostarczą wiarygodnych informacji na temat zachowania systemu.

Tuning Sessions - wsparcie od zespołów SAP

Właściwa diagnoza bottlenecków może wymagać spojrzenia na środowisko przekrojowo - od warstwy sieciowej i systemowej po aspekty działania Java Virtual Machine. W takich sytuacjach wiedza ekspercka zespołów SAP Hybris Commerce Cloud wydaje się nieoceniona. Nasze spotkania techniczne z zespołem utrzymaniowym SAP skróciły czas naprawienia defektów, co bezpośrednio przełożyło się na finansowe korzyści dla klienta. Współpraca techniczna zespołów e-point, SAP i Inter Cars w tzw. tuning sessions zagwarantowała właściwe przygotowanie infrastruktury produkcji do uruchomienia produkcyjnego.

Pomiar wydajności pomiędzy wersjami aplikacji

Ustandaryzowanie procesu testowania w łatwy sposób umożliwia uruchomienie procesu porównania wydajności pomiędzy kolejnymi wersjami aplikacji. Klient może sprawdzić, czy dodawanie kolejnych funkcji nie pogarsza responsywności (czyli czasu, jaki użytkownik musi odczekać od np. kliknięcia w łącza do czasu wyrenderowania odpowiedzi przez przeglądarkę). Dodatkowo, szybki rozwój platformy Hybris daje dostęp do wszystkich poprawek wydajnościowych oraz nowych funkcjonalności wprowadzanych przy upgrade aplikacji.

Miara zadowolenia klienta e-commerce

Dla biznesu jednoznaczną informacją o właściwym działaniu systemu e-commerce jest wysoka sprzedaż. Jednak z technicznego punktu widzenia lepiej opierać się na współczynniku Apdex (Application Performance Index). Standard ten w założeniu próbuje mierzyć to, co ma znaczenie, a więc satysfakcję klienta docelowego. Upraszczając: parametr przyjmuje wartości pomiędzy 0 a 1 zaś wartości poniżej 0,5 oznaczają słabe wyniki. Implementacja miary Apdex jest dla SAP Hybris Commerce Cloud dostępna także w narzędziu Dynatrace. Pozwala nie tylko śledzić ten parametr w czasie rzeczywistym, ale też dostroić go do potrzeb własnej aplikacji.

Stosując opisane powyżej mierniki i narzędzia pozyskujemy bezcenną wiedzę o tym, jak aktualnie działa nasz system, co przekłada się bezpośrednio na wyniki finansowe.