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 permane...
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.
Hej, jesteśmy na Google News - Obserwuj to, co ważne w techu