Po drugiej stronie serwisu internetowego - na przykładzie Allegro
Każde żądanie (przeładowanie strony) wysłane do serwisu internetowego przebywa daleką drogę od przeglądarki poprzez infrastrukturę sieciową i serwery aż do wnętrza aplikacji, by z powrotem, wraz z danymi, zostać odesłanym do użytkownika.
Zainspirowany jedną z prelekcji na InfoShare 2013 (patrz 1, 2 ) postanowiłem przyjrzeć się tej drodze śledząc przez jakie warstwy, po kolei, przechodzi typowe żądanie i jakie decyzje są na nich podejmowane. Na przykładzie Allegro.pl postaram się zaprezentować architekturę oraz rozwiązania techniczne stojące za wysoką wydajnością i niezawodnością serwisu. Mam nadzieję, że uda mi się pokazać złożoność i skomplikowanie procesu od kliknięcia/wpisania adresu w przeglądarce do prezentacji wyników w postaci strony www.
Zapraszam na wycieczkę!
W liczbach
Jak wspomniałem wcześniej, posłużę się przykładem doskonale wszystkim znanego serwisu aukcyjnego Allegro.pl, który należy do Grupy Allegro. Analizie poddany zostanie przypadek użycia (ang. use case) wyszukiwania towarów, czyli od wpisania szukanego hasła aż do prezentacji listy aukcji do niego pasujących.
Grupa Allegro to:
- 50% wartości rynku e-commerce w Polsce - według raportu Rzeczypospolitej z października 2012r.;
- 125 platform e-commerce na całym świecie;
- 23 kraje, w których prowadzona jest działalność, a do najbardziej egzotycznych należą: Turcja i Kazachstan;
- ponad 4 000 pracowników, [list] w tym 1500 osób w Polsce;
- w tym około 500 pracowników IT, [list] z czego 80 osób zajmuje się tylko infrastrukturą IT:
- zajmują się serwerowniami (Data Center - DC), utrzymaniem serwisów i developmentem narzędzi wspomagających pracę administratorów, np. Ralph ;
[/item] [/list]
[/item][item]około 3 000 serwerów zlokalizowanych w dwóch Data Center - trzecia lokalizacja jest w trakcie tworzenia;[/item][/list]
Allegro.pl to:
Dane statystyczne na temat serwisu Allegro.pl przedstawiają się następująco:
- ponad 6 000 wywołań serwisu na sekundę;
- 180 mln aukcji;
- kilkaset GB danych;
- rozproszone rozwiązania IT;
- 2 serwerownie, [list] w każdej znajdują się po 2 redundantne klastry zdolne w każdej chwili przejąć ruch do i z serwisu;
- klastry składają się z kilkudziesięciu (około 40) połączonych ze sobą maszyn serwerowych;
[/item][/list]
Historia Data Center Grupy Allegro
Działalność Grupy Allegro prawie od samego początku opiera się na outsourcingu Data Center.
- 1999 rok - początki portalu aukcyjnego i serwer przyniesiony pod pachą do jednej z Poznańskich piwnic, w której nad głowami ciągnęły się rury wodno-kanalizacyjne, a między nimi pełno było pajęczyn.
- 2004 rok - pierwsze DC zlokalizowane w serwerowni firmy TK Telekom w Poznaniu.
- 2008 rok - drugie DC zlokalizowane w serwerowni firmy Beyond w Poznaniu- działa do dnia dzisiejszego.
- 2009 rok - trzecie DC zlokalizowane we Frankfurcie. Zdecydowano się na nie jako zapasowe DC na wypadek: zalania, odcięcia prądu, pożaru, wybuchu czy ogłoszenia ataku bombowego :-) Po uruchomieniu tej serwerowni, ze względu na odległość, pojawił się problem opóźnień rzędu 23-25ms. Zlikwidowano je, we współpracy z operatorami internetowymi, za pomocą TCP window, czyli zwiększania okna odbioru danych powyżej jego maksymalnej pojemności 65 535 bajtów.
- 2012 rok - czwarte DC zlokalizowane w serwerowni firmy Polkom. Jesienią 2012 roku, ze względów ekonomicznych, zdecydowano się na przenosiny z Frankfurtu do Skawiny pod Krakowem.
Przetwarzanie żądania
Po garści informacji statystycznych czas na konkrety. Po wpisaniu hasła w polu tekstowym rozpoczyna się bardzo złożony proces:
1. DNS
W pierwszej kolejności żądanie trafia do serwerów DNS, które decydują która z serwerowni obsłuży dane zapytanie. Rozwiązują nazwę domeny na konkretny adres IP, na który kierują ruch.
2. Trasa do serwerowni
Allegro.pl jako duży serwis korzysta z usług wielu dostawców internetu (providerów). Żądanie dociera do serwerowni w możliwie najkrótszym czasie. Zanim dotrze do celu przechodzi przez wiele węzłów, przełączników (switchy) i routerów na całym świecie (zależnie od położenia geograficznego użytkownika).
3. Wejście do serwerowni
Na tym etapie żądanie filtrowane jest przez firewalle i kierowane do lokalnych load balancerów, których zadaniem jest równomierne rozkładanie obciążenia na serwery znajdujące się w serwerowni.
4. Serwer aplikacji
Load balancery kierują żądanie do konkretnego serwera aplikacji, która je przetwarza i decyduje jakie dane i skąd musi je pobrać.
5. Źródło danych
Po określeniu czego potrzebuje, zapytanie kierowane jest do źródeł danych, którymi mogą być różnego rodzaju bazy danych, repozytoria danych czy hurtownie danych. Allegro wykorzystuje całe spektrum technologii: MySQL, Oracle, PostgreSQL czy NoSQL działających na serwerach, które umożliwiają skalowanie horyzontalne. Zapewniona jest też redundancja źródeł danych, co oznacza, że w przypadku awarii jednego z urządzeń nie ma przerwy w dostępie do żądanych treści. Najistotniejsza jest wydajność i dostępność.
6. Składanie odpowiedzi
Po zebraniu wszystkich danych serwer aplikacji generuje odpowiedź dla użytkownika - kod HTML strony internetowej wraz treścią.
7. Wysłanie odpowiedzi
Zebrane dane wysyłane są do przeglądarki użytkownika możliwie najkrótszą drogą przez łącza providerów - niekonieczną tą samą trasą jaką przyszło żądanie!
8. < 1 sec.
Całość procesu od wysłania zapytania do uzyskania odpowiedzi trwa mniej niż 1 sekundę.
Ciekawostki
- W serwerowni zawsze znajduje się kilka wolno stojących (na stocku) maszyn, które w krótkim czasie można dołączyć do klastra w celu zwiększenia mocy obliczeniowej, np. w okresie przed świętami Bożego Narodzenia kiedy zainteresowanie serwisem wzrasta kilkukrotnie.
- Żadna z serwerowni nie jest pośrednikiem pomiędzy Allegro a dostawcami internetu. Pozycja firmy jest tak duża, że we własnym zakresie negocjuje umowy, stawki i przepustowości oraz posiada własne przyłącza światłowodowe do swojej infrastruktury.
- W lipcu 2012 roku Grupa Allegro po raz pierwszy opublikowała oprogramowanie na zasadzie Open Source. Był to Ralph - system ułatwiający uporządkowanie informacji na temat infrastruktury serwerowej. Umożliwia też zautomatyzowanie pracy wykonywanej przy utrzymaniu serwerowni.
Wnioski
Z technologicznego punktu widzenia jest to bardzo skomplikowana architektura, ale zapewnia skalowalność i dostępność serwisu Allegro.pl mimo ogromnej liczby użytkowników odwiedzających go każdego dnia.
Źródła wiedzy i danych
- prezentacja pracowników Allegro na konferencji InfoShare 2013 (skrupulatnie notowałem ;-))
- doświadczenia własne
- http://www.youtube.com/watch?v=WoKaEtHPlR0
- http://www.komputerswiat.pl/jak-to-dziala/2009/06/nasza-klasa-od-kuchn... Nasza Klasa też koszysta z Data Center firmy Beyond
- http://www.bankier.pl/wiadomosc/Po-czym-poznac-dobra-serwerownie-20471...
- http://niebezpiecznik.pl/post/allegro-udostepnia-ralpha/