Architektura serwisow webowych

41
Architektura serwisów webowych szybko i boleśnie Robert Janeczek G-Forces Web Management Polska

description

Introduction to designing scalable web architectures. Presentation in Polish only.

Transcript of Architektura serwisow webowych

Page 1: Architektura serwisow webowych

Architektura serwisów webowych

szybko i boleśnie

Robert Janeczek

G-Forces Web Management Polska

Page 2: Architektura serwisow webowych

Monetyzacja vs koszty infrastruktury

Page 3: Architektura serwisow webowych

Monetyzacja vs koszty infrastruktury

Page 4: Architektura serwisow webowych

Monetyzacja vs koszty infrastruktury

Page 5: Architektura serwisow webowych

Monetyzacja vs koszty infrastruktury

Page 6: Architektura serwisow webowych

Monetyzacja vs koszty infrastruktury

Page 7: Architektura serwisow webowych

Monetyzacja vs koszty infrastruktury

Page 8: Architektura serwisow webowych

Monetyzacja vs koszty infrastruktury

Page 9: Architektura serwisow webowych

Monetyzacja vs koszty infrastruktury

Page 10: Architektura serwisow webowych

Monetyzacja vs koszty infrastruktury

Page 11: Architektura serwisow webowych

Monetyzacja vs koszty infrastruktury

Page 12: Architektura serwisow webowych

Monetyzacja vs koszty infrastruktury

Page 13: Architektura serwisow webowych

Monetyzacja vs koszty infrastruktury

Page 14: Architektura serwisow webowych

Monetyzacja vs koszty infrastruktury

Page 15: Architektura serwisow webowych

Monetyzacja vs koszty infrastruktury

Page 16: Architektura serwisow webowych

Architektura – o co chodzi?

Jak maksymalizować wykorzystanie istniejącej infrastruktury?Jak zwiększać wydajność infrastruktury?Jak minimalizować wydatki na nową infrastrukturę?

Page 17: Architektura serwisow webowych

Statyczna strona WWW

Page 18: Architektura serwisow webowych

Statyczna strona WWW

1200 odwiedzających/sekundę1 plik1200 wyświetleń/sekundę

Page 19: Architektura serwisow webowych

Statyczna strona WWW

1200 odwiedzających/sekundę1 plik1200 wyświetleń/sekundę

3mld odsłon miesięcznie!

• łatwo serwować

• szybkość

• skalowalność

• tanio (tylko transfer)

• pierwsza piątka Megapanelu ;)

Page 20: Architektura serwisow webowych

Statyczna strona + pliki dodatkowe

1200 żądań/sekundę80 plików15 wyświetleń/sekundę

Page 21: Architektura serwisow webowych

Statyczna strona + pliki dodatkowe

1200 żądań/sekundę80 plików15 wyświetleń/sekundę

Bądź cache-friendly!

• oszczędzaj żądania

• plik niewysłany jest lepszy od wysłanego

• wciąż ładnie się skaluje

• wypadliśmy z Megapanelu :(

Page 22: Architektura serwisow webowych

Dynamiczna strona

750 żądań/sekundę80 plików9 wyświetleń/sekundę

Page 23: Architektura serwisow webowych

Dynamiczna strona

750 żądań/sekundę80 plików9 wyświetleń/sekundę

Dynamika szkodzi!

• unikaj żądań dynamicznych

• przechowuj wyniki zamiast obliczać

• cache kodu (APC)

Page 24: Architektura serwisow webowych

Połączenie z bazą danych

500 żądań/sekundę80 plików6 wyświetleń/sekundę

Page 25: Architektura serwisow webowych

Połączenie z bazą danych

500 żądań/sekundę80 plików6 wyświetleń/sekundę

Podziel przez liczbę zapytań…

• nie łącz się z bazą jeśli nie musisz

• przechowuj wyniki zamiast o nie pytać bazę

• nie zakładaj, że indeksy „są”

Page 26: Architektura serwisow webowych

Wymiękamy: WWW nie wyrabia

Page 27: Architektura serwisow webowych

Zanim zaczniesz kombinować

Szybsza maszyna?Przekaż serwowanie statycznych plików na zewnątrzKolejkowanie zadańWielopoziomowy cache (zapytania, fragmenty, strony)ProfilerSpójrz na dane z innej perspektywy, a może się okazać, że wszystko jest cache’owalne

Page 28: Architektura serwisow webowych

Load balancer/reverse proxy• konfigurujemy reverse-proxy

• dodajemy kilka serwerów WWW

• ruch płynie przez reverse-proxy

Page 29: Architektura serwisow webowych

Load balancer/reverse proxy• konfigurujemy reverse-proxy

• dodajemy kilka serwerów WWW

• ruch płynie przez reverse-proxy

• dociera do jednego z serwerów WWW

• wraca przez reverse-proxy

• szybkie zamknięcie połączenia

• wynik przechowany jeśli nagłówki pozwalają

Page 30: Architektura serwisow webowych

Load balancer/reverse proxy• konfigurujemy reverse-proxy

• dodajemy kilka serwerów WWW

• ruch płynie przez reverse-proxy

• dociera do jednego z serwerów WWW

• wraca przez reverse-proxy

• szybkie zamknięcie połączenia

• wynik przechowany jeśli nagłówki pozwalają

• część (większość!) ruchu nie dojdzie nawet do serwerów WWW

• zmniejszone obciążenie

• dodaj maszyny – więcej mocy

Page 31: Architektura serwisow webowych

Load balancer/reverse proxy - uwagi• jak load balancer kieruje ruch?

• sesje w plikach

• konieczność synchronizacji zawartości serwerów WWW

• HA przy okazji (tylko dla WWW!)

• nie skaluje się w nieskończoność

Page 32: Architektura serwisow webowych

Wymiękamy: baza nie wyrabia

Page 33: Architektura serwisow webowych

Zanim zaczniesz kombinować

Szybsza maszyna?Zmniejsz liczbę zapytań – cache wynikówZmniejsz liczbę zapytań – nie pytaj o niepotrzebne daneZmniejsz liczbę zapytań – nie pytaj kilka razy o to samoDenormalizacja struktury bazyTuning (bufory bazy, filesystem)

Page 34: Architektura serwisow webowych

Master-slave• wszystkie zapisy wędrują do bazy Master

Page 35: Architektura serwisow webowych

Master-slave• wszystkie zapisy wędrują do bazy Master

• baza Master umieszcza kilka kopii danych w bazach Slave

Page 36: Architektura serwisow webowych

Master-slave• wszystkie zapisy wędrują do bazy Master

• baza Master umieszcza kilka kopii danych w bazach Slave

• odczyty wykonywane z baz Slave, czyli teoretycznie liniowa skalowalność odczytów

Page 37: Architektura serwisow webowych

Master-slave - uwagi• synchronizacja może stać się wąskim gardłem

• Master i wszystkie Slave muszą być w stanie udźwignąć samodzielnie wszystkie zapisy

• czy Twitter/Blip może tak się skalować?

• sprawdza się przy znacznej przewadze odczytów

Page 38: Architektura serwisow webowych

Jesteśmy Twitterem i wciąż mamy problem

ShardingRezygnacja z relacyjnych baz (MemcacheDB, SimpleDB, Google AppEngine Data Store…)Ogranicz sztucznie dostępność danychKolejkuj zapisy (np. importy, powiadomienia znajomych)Bądź otwarty na alternatywy dla SQL(np. Sphinx do przeszukiwania MySQL)

Page 39: Architektura serwisow webowych

Porównanie obciążenia

LB (~75% ruchu)

WWW (~25% ruchu)

DB (<25% ruchu)

Page 40: Architektura serwisow webowych

Na co zwrócić szczególną uwagę

Elastyczny monitoringWydajna strategia backupowania i zapisywania logówHASynchronizacja maszyn, czyszczenie cacheZłożoność obliczeniowa zadańOdczyt z dysku vs odczyt z RAM po sieci

Page 41: Architektura serwisow webowych

Dziękuję za uwagę

[email protected]