11

Jak zabić Pana Gąbkę ? – Czyli o wydajności słów kilka

W życiu każdego startupa w pewnej chwili wydajność staje się poważnym i pilnym problemem. W niektórych przypadkach problem ten przeradza się w permanentny dramat, inni sobie z nim radzą. Ponieważ temat ten wydał mi się dość ciekawy postanowiłem zapytać się kilku polskich serwisów jak radzą sobie z zagadnieniem wydajności serwisów www. Pierwszy na pytania odpowiedział […]

W życiu każdego startupa w pewnej chwili wydajność staje się poważnym i pilnym problemem. W niektórych przypadkach problem ten przeradza się w permanentny dramat, inni sobie z nim radzą. Ponieważ temat ten wydał mi się dość ciekawy postanowiłem zapytać się kilku polskich serwisów jak radzą sobie z zagadnieniem wydajności serwisów www.

Pierwszy na pytania odpowiedział Michał Jaskólski IT Director nokaut.pl:

Czy tak zwana „wydajność” to duży procent w budżecie takiego serwisu jak twój ? Jak dużo wydajesz na utrzymanie infrastruktury (mogą to być przybliżone kwoty lub widełki)

Obecnie koszt infrastruktury to około 5% naszych przychodów. Z wydajnością i skalowalnością związanych jest jednak mniej więcej 20-30% projektów realizowanych przez zespół IT, a to ma również wpływ na budżet.

Jak radzisz sobie z utrzymaniem odpowiedniej wydajności serwisu, czy zatrudniałeś (zatrudniasz) specjalistów w tej dziedzinie?

Równolegle zwiększamy liczbę serwerów, szukamy tych elementów aplikacji, które stanowią największe obciążenie i pracujemy nad ich optymalizacją. To ciągły proces.
Jeśli chodzi o specjalistów, to kilka osób w naszym zespole miało już wcześniejsze doświadczenia z serwisami internetowymi odwiedzanymi przez kilkaset tysięcy użytkowników dziennie. Już na starcie mieliśmy więc pewną wiedzę w tym zakresie.


Czy w tych czasach (dostępnych technologi i taniejących serwerów, łączy itp) wydajność może być permanentnym problemem – czy też powinna być rozwiązywana wraz z „kolejną dostawą serwerów”

W tym momencie, gdy z dnia na dzień można uruchomić np. 100 dodatkowych serwerów korzystając z usługi Amazon EC2, a know-how dotyczący skalowalności jest łatwo dostępny, główną barierą staje się czas wprowadzania zmian w aplikacji, który z kolei zależy od wiedzy i doświadczenia programistów oraz administratorów. Wydajność może być permanentnym problemem tylko jeśli tempo wzrostu oglądalności jest na tyle duże, że „development nie nadąża za traffikiem”.

Twitter to już chyba symbol problemów z dostępnością serwisu internetowego w tych czasach – co według Ciebie może być główną przyczyną tych problemów i jaka kwota pieniędzy powinna je definitywnie rozwiązać

Twitter otrzymał spore dofinansowanie, stać ich na zakup lub dzierżawę setek maszyn, więc nie sprzęt jest tu problemem, a sama aplikacja. Wąskie gardła zapewne są dwa: połączenia HTTP (szczególnie te związane z API) oraz baza danych. Rozwiązania typu haproxy oraz nginx lub lighttpd, w połączeniu z dobrym cache w pamięci RAM (niekoniecznie opartym na popularnym memcached), pomogłyby serwisowi rozwinąć skrzydła. Jeśli chodzi o bazę danych, to z pewnością tzw. sharding, czyli w tym wypadku – przechowywanie danych konkretnego użytkownika na 2-3 konkretnych serwerach bazodanowych wybranych spośród kilkuset dostępnych w puli, rozwiązałby wiele problemów. Wówczas rzeczywiście wystarczyłaby kolejna dostawa serwerów by obsłużyć kolejne tysiące userów.

Być może jest też tak, że Twitterowi brakuje kogoś na miarę Cala Hendersona, głównego architekta Flickra i autora znakomitej książki „Building Scalable Web Sites”, dostępnej również w języku polskim – http://helion.pl/ksiazki/skalow.htm

Jakieś rady dla tych którzy właśnie zauważyli, że ich popularny startup zaczyna wolno działać?

Warto przeznaczyć kilka wieczorów na lekturę bloga highscalability.com – to obecnie najciekawsze źródło informacji na tematy związane ze skalowalnością i wydajnością.
Kolejny krok to przejrzenie naszej prezentacji z ostatniego 3campa – http://www.slideshare.net/grzybciak/skalowalno-przy-byskawicznym-wzrocie/. Wspominamy tam o kilku pożytecznych narzędziach (m.in. nginx, haproxy, memcached, xdebug, mysqlsla, sphinx) oraz o sposobie podejścia do problemów z wydajnością w funkcjonującym już projekcie.

Obrazek zabitego Pana Gąbki pobrałem z prezentacji nokaut.pl na temat skalowalności.

Odpowiedzi od kolejnych serwisów internetowych już wkrótce, ten sam zestaw pytań zadałem takim serwisom jak fotka.pl, wykop.pl czy patrz.pl.