Zamiast inwestować w marketing zacznij już dzisiaj inwestować w sprzęt

Ratuj serweryGodzina 10.00, czwartek 27 sierpnia – aplikacja społecznościowa “Quizz” została udostępniona. Godzina 11.00 – 25 tysięcy odsłon, godzina 12.00 – 75 tysięcy. O tej godzinie wiadomo już było że serwer nie wytrzyma obciążenia. Quizzy bardzo szybko zaakceptowało przeszło 10 tysięcy gronowiczów. 13.00 – aplikacja została przeniesiona na serwer zapasowy, ale i ten nie wytrzymał obciążenia, przeszło 100 000 odsłon w 2 godziny, byłby milion w ciągu dnia. Aplikacja musiała zostać wyłączona…

Takim scenariuszem grozi udostępnienie aplikacji nieskalowalnej dużej społeczności. Najbardziej popularne aplikacje działają na kilku serwerach.Wiele aplikacji boryka się z problemem skalowalności, temat  jest poruszany coraz częściej, zaczynając od wpisu “Niedziałające aplikacje są bezsensowne” w Techcrunch, w którym autor podkreśla, że aplikacje oparte o API serwisów społecznościowych mają większe problemy ze skalowalnością niż zwykłe strony WWW, nie tylko ze względu na popularność, ale i potrzebę komunikacji z API macierzy.

Serwery padają... jak muchy

Są serwery odpowiedzialne za bazy danych, serwery aplikacji, cache, mirrory i load balancery. Do tego potrzebna jest ogromna przepustowość łącza i ciągły nadzór nad całą infrastrukturą. W takiej skali błąd doprowadza do frustracji wielu osób. Wolne działanie aplikacji bywa irytujące, może doprowadzić do błędów i utraty danych. To nie jest zamknięcie jednego sklepu w centrum handlowym tylko zatrzymanie rollercoastera z pasażerami w środku. Zbytnie obciążenie serwerów dostawcy może spowodować, że podziękuje on nam za współpracę. Zaufania użytkowników i obsługi serwisu nie da się tak łatwo odbudować.

Ale jest też i inny problem: jak przewidzieć która aplikacja będzie aż tak wirusowa, aby zarazić dziesiątki i setki tysięcy ludzi? Czy jest sens na wyrost kupować serwery i zatrudniać osoby do optymalizacji baz danych? Chciałoby się pisać wiele aplikacji, ale jak skoro do każdej potrzeba po kilka serwerów, poza tym najbardziej żywotne aplikacje są popularne przez parę miesięcy, nie więcej!

Czytaj podobne  5 zasad użytkowości (ang. usability)

A skąd na to pieniądze? Reklamy w serwisach społecznościowych mają bardzo niski zwrot.

Jak uniknąć tych problemów? A raczej poradzić sobie z nimi?

Pisząc aplikacje społecznościowe uczysz się radzić z problemami, których nie poznasz tylko "pisząc strony" albo tylko "programując"

Facebook radzi korzystać z Memcached. Aplikacja też musi być skonstruowana tak, aby móc dużo rzeczy keszować. Musi też być niestety ograniczona wizualnie – każdy element graficzny przy takiej ilości użytkowników to już nie gigabajty ale terrabajty transferu.

Oprócz tego trzeba zoptymalizować serwer WWW, konfigurację bazy danych. Na koniec przejrzeć zapytania do bazy i upewnić się, że są one optymalne. Przyjrzeć się statystykom bazy, które podpowiadają czy indeksy są używane we wszystkich zapytaniach, zwiększyć szybkość odpowiedzi bazy danych.

W trakcie może się okazać, że z powodów “designu” trzeba zmienić sposób działania aplikacji.

Kiedy to wszystko zostanie zrobione, można zrobić testy A/B obciążenia, wykupić lepszego VPS-a a nawet kilka i połączyć je w klaster, powołać parę baz danych do odczytu i uruchomić między nimi replikację. Balansować obciążeniem poszczególnych serwerów. Tutaj ważne okazuje się, aby mieć odpowiedzialnego dostawcę hostingu, kogoś kto dostawi serwer w godzinę i nie zablokuje konta, jeżeli przekroczy się limity.

Wyniki optymalizacji można badać na wiele sposobów. Najlepiej symulować przewidywaną liczbę użytkowników i czas odpowiedzi.

Jak utrzymać serwery pod aplikację? Zapewne do pewnego poziomu nie potrzeba pełnego zaplecza. Można zacząć ze zwykłym hostingiem. I czekać, aż aplikacja stanie się ekstremalnie popularna.

A doświadczenia i wiedza wyniesiona z takiego projektu jest o wiele więcej warta niż poczynione inwestycje. Dlatego takie projekty są według mnie szczególnie atrakcyjne dla studentów. Optymalizacja i skalowanie serwerów pod takie aplikacje to unikalna umiejętność i nieśmiało przewiduję, że w najbliższych latach będzie to najbardziej pożądana umiejętność na rynku IT.

Czytaj podobne  Aplikacje społecznościowe - cz. 2 - dokumentacja, tagi i narzędzia

Nie inwestuj w marketing, ale w maszyny!

Jedyny problem to  w takiej sytuacji to znaleźć firmę, która zainwestuje w naukę i wypożyczy parę serwerów.

Podsumowując: pisząc aplikacje społecznościowe nie musisz martwić się o to jak dotrzeć do osób, które chciałyby z nich korzystać. Dlatego środki, które normalnie przeznaczyłbyś na marketing można śmiało inwestować w oprogramowanie, sprzęt i oczywiście specjalistów od baz danych i serwerów.

Przeczytaj też

Najlepsza książka do Pythona Nie wiesz, z jakiej książki/ebooka uczyć się programowania w języku Python? Postanowiłem zrobić zestawienie 10 książek z Heliona na ten temat, abyś mó...
Komplet 28 ebooków i kursów, aby zostać programist... Od jakiegoś czasu dostaję zapytania na temat tego jakie książki, kursy i ebooki polecam. W związku z tym postanowiłem przygotować dzisiaj zestaw, któr...
120 tapet programistycznych za darmo do pobrania Trochę mi się nudziło, więc przygotowałem zestaw 120 tapet dla programistów. Możesz go pobrać. Tapety są w rozdzielczości 1366x768. Podzielone ...
10 fiszek do nauki programowania w Pythonie Uczysz się programowania w Pythonie? Pobierz te 10 fiszek, które ułatwią Ci zapamiętanie funkcji wbudowanych* w Pythona! Programowanie potrafi ...
Napisano w Kolumna Tagi: , , , , , , , , , , , ,

Menu