Imagine Blog - technologie internetowe bez tajemnic

Optymalizacja wydajności aplikacji internetowych

Na ostatnim spotkaniu działu technologicznego Empathy poruszony został temat wydajności aplikacji internetowych. Przygotowana przez Wojtka Soczyńskiego prezentacja była okazją do dyskusji o różnych aspektach optymalizacji wydajności.

Podczas spotkania omówione zostały m.in. takie kwestie jak różnice w postrzeganiu wydajności przez twórców aplikacji i jej użytkowników oraz narzędzia mierzenia wydajności, bez których trudno ocenić dokładnie efekty działań optymalizacyjnych. Nie sposób było nie wspomnieć o tych kwestiach, które najczęściej negatywnie wpływają na wydajność. Jak się okazuje, większość problemów wynika tak naprawdę z niewłaściwych założeń projektowych. Przy okazji rozprawiliśmy się także z kilkoma mitami dotyczącymi optymalizacji.

Wojtek na konkretnym przykładzie (blog stworzony w oparciu o autorski framework) przedstawił, jak różne rozwiązania z zakresu optymalizacji wydajności wpływają na jej poprawę. Ostatecznie, dzięki wszystkim zabiegom czas reakcji aplikacji został poprawiony o 77%.

Poniżej publikujemy prezentację ze spotkania. Niestety bez komentarza prelegenta.

Szymon Szymczyk

Tagi: , , , ,

4 odpowiedzi do “Optymalizacja wydajności aplikacji internetowych”

  1. Psz Says:

    O co chodzi z rozróżnieniem wydajności na “perspektywę programisty” i “perspektywę użytkownika”? Czy w obu przypadkach nie chodzi po prostu o czas reakcji?

  2. Wojciech S Says:

    No nie chodzi, bo czas reakcji jest odczuciem subiektywnym użytkownika, sprawdź sam jakie masz odczucie dotyczące czasu reakcji jak ci się wyświetla np. pasek postępu i jak się nie wyświetla. Zawsze jak masz pasek postępu czy coś się zaczyna dziać, to jest odczucie szybszej reakcji.

  3. Jacek Says:

    Spowalniacze – baza danych.
    Tu pisałbym raczej o samym projekcie bazy. Teza o ilości zwracanych danych wydaje się intuicyjna, ale jak wiele podobnych kwestii w praktyce może nie mieć żadnego znaczenia (o chyba, że różnice w wielkościach pobieranych danych są jakieś gigantyczne).

  4. Pablo Says:

    A czy wspomniane w prezentacji elementy wpływające na wydajność wyczerpują temat? Jeżeli rozważymy aplikacje podłączone do dużych baz danych – mam na myśli bazy wielkości rzędu setek GB. Przy takiej wolumetrii najczęściej okazuje się, że wąskie gradła leżą zupełnie gdzie indziej – w samej bazie danych. Można stworzyć doskonały projekt systemu i bazy danych a później nieświadomy programista napisze zapytanie sql, które pomimo, że nie zwraca wcale dużej ilości danych wykonuje się wiele sekund/minut. No dobra – dodaje się wskaźnik postępu aby oszukać “perspektywę użytkownika”. Tylko, że zapytanie powielone w wielu instancjach konsumuje zasoby motoru bazy co wpływa na wydajność całego systemu. Potem dokupuje się sprzętu i buduje superskalowalną infrastrukturę sewerów aby spełnić kryteria na czasy odpowiedzi. A wszystko zaczyna się od zapytania i ścieżki dostępu jego realizacji w motorze bazy danych. Z doświadczenia wiem, że najczęściej problemy leżą w zapytaniach do bazy danych i tutaj można osiągać zyski liczone nie w dziesiątkach a w setkach procent. Ale te tematy zostały jakby przemilczane w prezentacji.

Dodaj odpowiedź