SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
WIELOWARSTWOWY CACHE
Na przykładzie serwisu GOG.com
Maciej Włodarkiewicz
O mnie
GG Network S.A.
Web Backend Lead
GOG.com
Head of Web Development
7 lat doświadczenia
przy dużych aplikacjach internetowych
5 lat doświadczenia
jako kierownik zespołu
Agenda
1. GOG.com - kim jesteśmy?
2. Wyzwania, którym musimy sprostać
3. Walka z odległością
4. Wykorzystanie cache w GOG.com
5. Podsumowanie i wnioski
GOG.com - kim jesteśmy?
Historia Start w 2008 pod skrzydłami CD Projekt - zespół 10 osób
Obecnie zatrudnionych jest 70 osób
Obecna pozycja #1 globalnej dystrybucji klasycznych gier na PC i Mac
#2 globalnej dystrybucji gier indie na PC i Mac
Partnerzy 180+ twórców i wydawców gier
Klienci Ponad 2.7 miliona unikalnych wejść miesięcznie z całego świata
Gry Ponad 700 tytułów w katalogu
Ponad 39 milionów gier na kontach użytkowników
Wyzwania, którym musimy sprostać
Globalny
zasięg
Szybkość
dostępu
Dynamika
odwiedzalności
Globalny zasięg
Regularne wejścia na stronę
GOG.com ma odnotowane przynajmniej jedno wejście z każdego kraju na świecie
Szybkość dostępu
1%
spadku sprzedaży przy
wydłużeniu ładowania
Amazon.com o 100 ms
30%
użytkowników opuszcza
Amazon.com jeśli czas
ładowania przekracza 4 sek
7%
spadku konwersji po
każdej sekundzie ładowania
Amazon.com
Czas ładowania strony ma wpływ na jej pozycję w wynikach wyszukiwania Google!
http://blog.edgecast.com/post/42404930702/ecommerce-performance-website-speed-impacts-your
Dynamika odwiedzalności
Free Game:
Dungeon Keeper
Fall Insomnia
Promo
DRM-Free
Winter Sale
EA Exclusives
Weekend Promo
Walka z odległością - początki GOG.com
2008
DataCenter w Kanadzie (Montreal)
Walka z odległością
Problem:
Prędkość ograniczona do maksymalnej
prędkości łącza
Każdy router powoduje opóźnienie
Połączenie narażone jest na zmiany
topologii sieci oraz jej awarie
Każdy błąd powoduje retransmisje danych
Rozwiązanie:
Zastosowanie CDN / ADN
content bliżej użytkownika
obliczenia dalej odbywają się w jednym
datacenter
Walka z odległością
2011
DataCenter w Polsce (Warszawa);
sieć rozproszona EdgeCast (POP’y)
Content Delivery Network - CDN
Tryby pracy: Tryby dostępu do plików:
Pull
ADN (Application Delivery
Network); aplikacja pobiera
zawartość
Push
sami uploadujemy na serwery
zewnętrzne
Open
niezabezpieczone, dostępne
dla wszystkich
Secure
chronione poprzez
podpisywanie URL z krótkim
TTL
Cache pełnych stron
Problem:
Nie można cachować gotowych stron –
każda posiada dane spersonalizowane dla
użytkownika
Czym różnią się strony dla poszczególnych
użytkowników?
Czy są jakieś strony, które są całkowicie różne
dla poszczególnych użytkowników?
Rozwiązanie:
Gotowy HTML trzymany w całości w cache
Personalizacja poprzez AJAX
Szybkość działania
HTML generowany jednorazowo dla wszystkich
Oszczędność transferu
Lepsze skalowanie ruchu
Cache pełnych stron globalnie
Browser ADN Backend
CDN
Problemy ADN
Problemy:
Jako zewnętrzna usługa, nie jest w pełni
konfigurowalna i dostosowana do naszych
potrzeb
Czym więcej punktów dostępowych (POP)
tym lepsze user-experience ale też mniejsze
hity
Brak dobrej obsługi SSL
Sposoby ich rozwiązania:
Aby zniwelować braki ADN używamy
lokalnego reverse-proxy cache
Varnish-Cache
Browser ADN Backend
Varnish-Cache
CDN
Browser ADN Backend
Varnish-Cache
Varnish
CDN
Varnish-Cache
Zalety Łatwy w konfiguracji
Rozszerzalny przy użyciu wstawek C
Nie pozwala na dogpile
Dodatkowe możliwości Expires At
Last-Modified
GZIP
Cache wewnętrzny
Browser ADN BackendVarnish
CDN
Cache wewnętrzny
Browser ADN BackendVarnish Cache
wewnętrzny
CDN
Cache wewnętrzny
Memcached
Cache pomiędzy elementami infrastruktury,
np cache pokrywający bazę danych
Dane właściwe dla użytkownika takie jak lista
posiadanych gier, wishlist etc.
Katalog gier z cenami uwzględniającymi
promocje
XCache
Dane niezmienne i niezależne od użytkownika
Cache danych użytkowników daje bardzo mały
hit-rate
Tylko na niewielkie dane, ograniczona
pojemność poszczególnego obiektu, oraz ilości
obiektów
Browser cache
Browser ADN BackendVarnish Cache
wewnętrzny
CDN
Browser ADN BackendVarnish Cache
wewnętrzny
Browser
cache
Browser cache
CDN
Browser cache
HTML5 Local Storage Wspierany przez większość przeglądarek
Key / Value
Limit do 5 MB
Szybsza odpowiedź
Prawie niewidoczne oczekiwanie na personalizację
(Trochę) mniejszy ruch
Strona może działać„offline”
Wiele różnych poziomów cache
Zarządzanie inwalidacją cache Stosowanie długiego cache z wymuszeniem inwalidacji jest
trudną i kosztowną operacją, czasem prawie niemożliwą jak np.:
cache przeglądarki, CDN
Stosujemy krótki cache ~1 minutowy.
Nawet nałożeniu się warstw zapewnia świeżość w ~2 minuty.
Cache 1minutowy od 1 godzinnego albo 1 dniowego różni się
wystarczająco nieznacznie
Wnioski:
HTML jest w cache
Koszyk trzymany jest na szybkim
tymczasowym nośniku
Użytkownik jest zalogowany i jego dane są
dostępne w cache lub personalizacja jest
wyłączona
Efekty i korzyści:
Nie ma ruchu na bazie danych do
momentu transakcji
Idealnie skalowalny system
Bardzo szybki dostęp na całym świecie
Podsumowanie
Wyzwania, którym sprostaliśmy
Globalny
zasięg
Szybkość
dostępu
Dynamika
odwiedzalności
Podsumowanie
Wnioski:
Dostosowujmy architekturę do potrzeb
CDN znacznie zwiększa możliwości strony,
szczególnie przy globalnym zasięgu
Ale to nie wystarczy, stosujmy dodatkowo
cache wewnątrz infrastruktury
Krótki TTL mocno upraszcza logikę
Plany:
Stworzenie od podstaw własnego systemu
klasy ADN (już jesteśmy w trakcie
pierwszych testów!)
Rozproszenie reszty architektury
Technologie w GOG.com
ADN
CDN
Varnish-Cache
MemCached
PHP-XCache
HTML5 Local Storage
Browser Cache
akamai.com
edgecast.com
varnish-cache.org
memcached.org
xcache.lighttpd.net
developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage
developers.google.com/speed/docs/best-practices/caching
SZUKAMY WEBDEVÓW
Więcej informacji u mnie lub na stronie GOG.com/work
DZIĘKUJĘ ZA UWAGĘ
…i zapraszam po darmowego Wiedźmina :)
SZUKAMY WEBDEVÓW
Więcej informacji u mnie lub na stronie GOG.com/work

Weitere ähnliche Inhalte

Was ist angesagt?

Przyspieszyć mobilność - co powinieneś wiedzieć o AMP
Przyspieszyć mobilność - co powinieneś wiedzieć o AMPPrzyspieszyć mobilność - co powinieneś wiedzieć o AMP
Przyspieszyć mobilność - co powinieneś wiedzieć o AMPKrzysztof Neumann
 
Fryday Warsaw 27.09.2017 BLOCKCHAIN FOR CEO
Fryday Warsaw 27.09.2017 BLOCKCHAIN FOR CEOFryday Warsaw 27.09.2017 BLOCKCHAIN FOR CEO
Fryday Warsaw 27.09.2017 BLOCKCHAIN FOR CEOMaria Saifudinova
 
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł StefańskiPLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł StefańskiPROIDEA
 
Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...
Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...
Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...Sages
 
Seo surgery polska #2 by Michal Suski
Seo surgery polska #2 by Michal SuskiSeo surgery polska #2 by Michal Suski
Seo surgery polska #2 by Michal SuskiAnton Shulke
 
Kompresja stron internetowych, Tech 3 Camp, Patryk yarpo Jar
Kompresja stron internetowych, Tech 3 Camp, Patryk yarpo JarKompresja stron internetowych, Tech 3 Camp, Patryk yarpo Jar
Kompresja stron internetowych, Tech 3 Camp, Patryk yarpo JarPatryk Jar
 
Pocałunek śmierci
Pocałunek śmierciPocałunek śmierci
Pocałunek śmierciDivante
 
Seo Surgery Polska 2 by Damian Salkowski
Seo Surgery Polska 2 by Damian SalkowskiSeo Surgery Polska 2 by Damian Salkowski
Seo Surgery Polska 2 by Damian SalkowskiAnton Shulke
 
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...PROIDEA
 
SEO Surgery Polska #1 by Łukasz Rogala
SEO Surgery Polska #1 by Łukasz RogalaSEO Surgery Polska #1 by Łukasz Rogala
SEO Surgery Polska #1 by Łukasz RogalaAnton Shulke
 

Was ist angesagt? (11)

Web Cache
Web CacheWeb Cache
Web Cache
 
Przyspieszyć mobilność - co powinieneś wiedzieć o AMP
Przyspieszyć mobilność - co powinieneś wiedzieć o AMPPrzyspieszyć mobilność - co powinieneś wiedzieć o AMP
Przyspieszyć mobilność - co powinieneś wiedzieć o AMP
 
Fryday Warsaw 27.09.2017 BLOCKCHAIN FOR CEO
Fryday Warsaw 27.09.2017 BLOCKCHAIN FOR CEOFryday Warsaw 27.09.2017 BLOCKCHAIN FOR CEO
Fryday Warsaw 27.09.2017 BLOCKCHAIN FOR CEO
 
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł StefańskiPLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
 
Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...
Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...
Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...
 
Seo surgery polska #2 by Michal Suski
Seo surgery polska #2 by Michal SuskiSeo surgery polska #2 by Michal Suski
Seo surgery polska #2 by Michal Suski
 
Kompresja stron internetowych, Tech 3 Camp, Patryk yarpo Jar
Kompresja stron internetowych, Tech 3 Camp, Patryk yarpo JarKompresja stron internetowych, Tech 3 Camp, Patryk yarpo Jar
Kompresja stron internetowych, Tech 3 Camp, Patryk yarpo Jar
 
Pocałunek śmierci
Pocałunek śmierciPocałunek śmierci
Pocałunek śmierci
 
Seo Surgery Polska 2 by Damian Salkowski
Seo Surgery Polska 2 by Damian SalkowskiSeo Surgery Polska 2 by Damian Salkowski
Seo Surgery Polska 2 by Damian Salkowski
 
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...
 
SEO Surgery Polska #1 by Łukasz Rogala
SEO Surgery Polska #1 by Łukasz RogalaSEO Surgery Polska #1 by Łukasz Rogala
SEO Surgery Polska #1 by Łukasz Rogala
 

Ähnlich wie The story of GOG.com Cache

The story of GOG.com Cache - 4developers 2014 ( PL )
The story of GOG.com Cache - 4developers 2014 ( PL )The story of GOG.com Cache - 4developers 2014 ( PL )
The story of GOG.com Cache - 4developers 2014 ( PL )GOG.com dev team
 
The story of GOG.com Cache - PHPers 2014 ( PL )
 The story of GOG.com Cache - PHPers 2014 ( PL ) The story of GOG.com Cache - PHPers 2014 ( PL )
The story of GOG.com Cache - PHPers 2014 ( PL )GOG.com dev team
 
Projektowanie stron www dla ngo i projektow eko - case study
Projektowanie stron www dla ngo i projektow eko - case studyProjektowanie stron www dla ngo i projektow eko - case study
Projektowanie stron www dla ngo i projektow eko - case studyKrakweb
 
TV i video w Internecie
TV i video w InternecieTV i video w Internecie
TV i video w InternecieDivante
 
PLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimy
PLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimyPLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimy
PLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimyPROIDEA
 
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...PROIDEA
 
Jak przyspieszyć internet? Uwolnij maksymalną moc łącza!
Jak przyspieszyć internet? Uwolnij maksymalną moc łącza!Jak przyspieszyć internet? Uwolnij maksymalną moc łącza!
Jak przyspieszyć internet? Uwolnij maksymalną moc łącza!michalip
 
Wprowadzenie do Big Data i Apache Spark
Wprowadzenie do Big Data i Apache SparkWprowadzenie do Big Data i Apache Spark
Wprowadzenie do Big Data i Apache SparkSages
 
Optymalizacja hostingu
Optymalizacja hostinguOptymalizacja hostingu
Optymalizacja hostinguDivante
 
Architektura serwisu gg.pl 2 przemek łącki (2)
Architektura serwisu gg.pl 2   przemek łącki (2)Architektura serwisu gg.pl 2   przemek łącki (2)
Architektura serwisu gg.pl 2 przemek łącki (2)Cendoo
 
#MTC2018: Optymalizacja doświadczenia użytkownika na stronach mobilnych w cel...
#MTC2018: Optymalizacja doświadczenia użytkownika na stronach mobilnych w cel...#MTC2018: Optymalizacja doświadczenia użytkownika na stronach mobilnych w cel...
#MTC2018: Optymalizacja doświadczenia użytkownika na stronach mobilnych w cel...Mobile Trends
 
PLNOG 6: Marcin Kaptur, Tomasz Charewicz - Onet VOD
PLNOG 6: Marcin Kaptur, Tomasz Charewicz - Onet VODPLNOG 6: Marcin Kaptur, Tomasz Charewicz - Onet VOD
PLNOG 6: Marcin Kaptur, Tomasz Charewicz - Onet VODPROIDEA
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Adrian Kalbarczyk
 
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacjiProjektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacjiAntoni Orfin
 
infraxstructure: Rafał Stańczak "Postępujący rozwój infrastruktury na potrze...
infraxstructure: Rafał Stańczak  "Postępujący rozwój infrastruktury na potrze...infraxstructure: Rafał Stańczak  "Postępujący rozwój infrastruktury na potrze...
infraxstructure: Rafał Stańczak "Postępujący rozwój infrastruktury na potrze...PROIDEA
 
Word up warszawa 2015
Word up warszawa 2015Word up warszawa 2015
Word up warszawa 2015Tomasz Dziuda
 

Ähnlich wie The story of GOG.com Cache (20)

The story of GOG.com Cache - 4developers 2014 ( PL )
The story of GOG.com Cache - 4developers 2014 ( PL )The story of GOG.com Cache - 4developers 2014 ( PL )
The story of GOG.com Cache - 4developers 2014 ( PL )
 
The story of GOG.com Cache - PHPers 2014 ( PL )
 The story of GOG.com Cache - PHPers 2014 ( PL ) The story of GOG.com Cache - PHPers 2014 ( PL )
The story of GOG.com Cache - PHPers 2014 ( PL )
 
Projektowanie stron www dla ngo i projektow eko - case study
Projektowanie stron www dla ngo i projektow eko - case studyProjektowanie stron www dla ngo i projektow eko - case study
Projektowanie stron www dla ngo i projektow eko - case study
 
TV i video w Internecie
TV i video w InternecieTV i video w Internecie
TV i video w Internecie
 
PLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimy
PLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimyPLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimy
PLNOG 4: Przemysław Frasunek - CDN w Polsce - czyli jak my to robimy
 
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...
 
Jak przyspieszyć internet? Uwolnij maksymalną moc łącza!
Jak przyspieszyć internet? Uwolnij maksymalną moc łącza!Jak przyspieszyć internet? Uwolnij maksymalną moc łącza!
Jak przyspieszyć internet? Uwolnij maksymalną moc łącza!
 
Wprowadzenie do Big Data i Apache Spark
Wprowadzenie do Big Data i Apache SparkWprowadzenie do Big Data i Apache Spark
Wprowadzenie do Big Data i Apache Spark
 
Html5 i css3
Html5 i css3Html5 i css3
Html5 i css3
 
Optymalizacja hostingu
Optymalizacja hostinguOptymalizacja hostingu
Optymalizacja hostingu
 
Architektura serwisu gg.pl 2 przemek łącki (2)
Architektura serwisu gg.pl 2   przemek łącki (2)Architektura serwisu gg.pl 2   przemek łącki (2)
Architektura serwisu gg.pl 2 przemek łącki (2)
 
#MTC2018: Optymalizacja doświadczenia użytkownika na stronach mobilnych w cel...
#MTC2018: Optymalizacja doświadczenia użytkownika na stronach mobilnych w cel...#MTC2018: Optymalizacja doświadczenia użytkownika na stronach mobilnych w cel...
#MTC2018: Optymalizacja doświadczenia użytkownika na stronach mobilnych w cel...
 
MongoDB 2011
MongoDB 2011MongoDB 2011
MongoDB 2011
 
PLNOG 6: Marcin Kaptur, Tomasz Charewicz - Onet VOD
PLNOG 6: Marcin Kaptur, Tomasz Charewicz - Onet VODPLNOG 6: Marcin Kaptur, Tomasz Charewicz - Onet VOD
PLNOG 6: Marcin Kaptur, Tomasz Charewicz - Onet VOD
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)
 
Wydajny frontend 2023
Wydajny frontend 2023Wydajny frontend 2023
Wydajny frontend 2023
 
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacjiProjektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
 
Środowisko PWA
Środowisko PWAŚrodowisko PWA
Środowisko PWA
 
infraxstructure: Rafał Stańczak "Postępujący rozwój infrastruktury na potrze...
infraxstructure: Rafał Stańczak  "Postępujący rozwój infrastruktury na potrze...infraxstructure: Rafał Stańczak  "Postępujący rozwój infrastruktury na potrze...
infraxstructure: Rafał Stańczak "Postępujący rozwój infrastruktury na potrze...
 
Word up warszawa 2015
Word up warszawa 2015Word up warszawa 2015
Word up warszawa 2015
 

The story of GOG.com Cache

  • 1. WIELOWARSTWOWY CACHE Na przykładzie serwisu GOG.com Maciej Włodarkiewicz
  • 2. O mnie GG Network S.A. Web Backend Lead GOG.com Head of Web Development 7 lat doświadczenia przy dużych aplikacjach internetowych 5 lat doświadczenia jako kierownik zespołu
  • 3. Agenda 1. GOG.com - kim jesteśmy? 2. Wyzwania, którym musimy sprostać 3. Walka z odległością 4. Wykorzystanie cache w GOG.com 5. Podsumowanie i wnioski
  • 4. GOG.com - kim jesteśmy? Historia Start w 2008 pod skrzydłami CD Projekt - zespół 10 osób Obecnie zatrudnionych jest 70 osób Obecna pozycja #1 globalnej dystrybucji klasycznych gier na PC i Mac #2 globalnej dystrybucji gier indie na PC i Mac Partnerzy 180+ twórców i wydawców gier Klienci Ponad 2.7 miliona unikalnych wejść miesięcznie z całego świata Gry Ponad 700 tytułów w katalogu Ponad 39 milionów gier na kontach użytkowników
  • 5. Wyzwania, którym musimy sprostać Globalny zasięg Szybkość dostępu Dynamika odwiedzalności
  • 6. Globalny zasięg Regularne wejścia na stronę GOG.com ma odnotowane przynajmniej jedno wejście z każdego kraju na świecie
  • 7. Szybkość dostępu 1% spadku sprzedaży przy wydłużeniu ładowania Amazon.com o 100 ms 30% użytkowników opuszcza Amazon.com jeśli czas ładowania przekracza 4 sek 7% spadku konwersji po każdej sekundzie ładowania Amazon.com Czas ładowania strony ma wpływ na jej pozycję w wynikach wyszukiwania Google! http://blog.edgecast.com/post/42404930702/ecommerce-performance-website-speed-impacts-your
  • 8. Dynamika odwiedzalności Free Game: Dungeon Keeper Fall Insomnia Promo DRM-Free Winter Sale EA Exclusives Weekend Promo
  • 9. Walka z odległością - początki GOG.com 2008 DataCenter w Kanadzie (Montreal)
  • 10. Walka z odległością Problem: Prędkość ograniczona do maksymalnej prędkości łącza Każdy router powoduje opóźnienie Połączenie narażone jest na zmiany topologii sieci oraz jej awarie Każdy błąd powoduje retransmisje danych Rozwiązanie: Zastosowanie CDN / ADN content bliżej użytkownika obliczenia dalej odbywają się w jednym datacenter
  • 11. Walka z odległością 2011 DataCenter w Polsce (Warszawa); sieć rozproszona EdgeCast (POP’y)
  • 12. Content Delivery Network - CDN Tryby pracy: Tryby dostępu do plików: Pull ADN (Application Delivery Network); aplikacja pobiera zawartość Push sami uploadujemy na serwery zewnętrzne Open niezabezpieczone, dostępne dla wszystkich Secure chronione poprzez podpisywanie URL z krótkim TTL
  • 13. Cache pełnych stron Problem: Nie można cachować gotowych stron – każda posiada dane spersonalizowane dla użytkownika Czym różnią się strony dla poszczególnych użytkowników? Czy są jakieś strony, które są całkowicie różne dla poszczególnych użytkowników? Rozwiązanie: Gotowy HTML trzymany w całości w cache Personalizacja poprzez AJAX Szybkość działania HTML generowany jednorazowo dla wszystkich Oszczędność transferu Lepsze skalowanie ruchu
  • 14. Cache pełnych stron globalnie Browser ADN Backend CDN
  • 15. Problemy ADN Problemy: Jako zewnętrzna usługa, nie jest w pełni konfigurowalna i dostosowana do naszych potrzeb Czym więcej punktów dostępowych (POP) tym lepsze user-experience ale też mniejsze hity Brak dobrej obsługi SSL Sposoby ich rozwiązania: Aby zniwelować braki ADN używamy lokalnego reverse-proxy cache Varnish-Cache
  • 18. Varnish-Cache Zalety Łatwy w konfiguracji Rozszerzalny przy użyciu wstawek C Nie pozwala na dogpile Dodatkowe możliwości Expires At Last-Modified GZIP
  • 19. Cache wewnętrzny Browser ADN BackendVarnish CDN
  • 20. Cache wewnętrzny Browser ADN BackendVarnish Cache wewnętrzny CDN
  • 21. Cache wewnętrzny Memcached Cache pomiędzy elementami infrastruktury, np cache pokrywający bazę danych Dane właściwe dla użytkownika takie jak lista posiadanych gier, wishlist etc. Katalog gier z cenami uwzględniającymi promocje XCache Dane niezmienne i niezależne od użytkownika Cache danych użytkowników daje bardzo mały hit-rate Tylko na niewielkie dane, ograniczona pojemność poszczególnego obiektu, oraz ilości obiektów
  • 22. Browser cache Browser ADN BackendVarnish Cache wewnętrzny CDN
  • 23. Browser ADN BackendVarnish Cache wewnętrzny Browser cache Browser cache CDN
  • 24. Browser cache HTML5 Local Storage Wspierany przez większość przeglądarek Key / Value Limit do 5 MB Szybsza odpowiedź Prawie niewidoczne oczekiwanie na personalizację (Trochę) mniejszy ruch Strona może działać„offline”
  • 25. Wiele różnych poziomów cache Zarządzanie inwalidacją cache Stosowanie długiego cache z wymuszeniem inwalidacji jest trudną i kosztowną operacją, czasem prawie niemożliwą jak np.: cache przeglądarki, CDN Stosujemy krótki cache ~1 minutowy. Nawet nałożeniu się warstw zapewnia świeżość w ~2 minuty. Cache 1minutowy od 1 godzinnego albo 1 dniowego różni się wystarczająco nieznacznie
  • 26. Wnioski: HTML jest w cache Koszyk trzymany jest na szybkim tymczasowym nośniku Użytkownik jest zalogowany i jego dane są dostępne w cache lub personalizacja jest wyłączona Efekty i korzyści: Nie ma ruchu na bazie danych do momentu transakcji Idealnie skalowalny system Bardzo szybki dostęp na całym świecie Podsumowanie
  • 28. Podsumowanie Wnioski: Dostosowujmy architekturę do potrzeb CDN znacznie zwiększa możliwości strony, szczególnie przy globalnym zasięgu Ale to nie wystarczy, stosujmy dodatkowo cache wewnątrz infrastruktury Krótki TTL mocno upraszcza logikę Plany: Stworzenie od podstaw własnego systemu klasy ADN (już jesteśmy w trakcie pierwszych testów!) Rozproszenie reszty architektury
  • 29. Technologie w GOG.com ADN CDN Varnish-Cache MemCached PHP-XCache HTML5 Local Storage Browser Cache akamai.com edgecast.com varnish-cache.org memcached.org xcache.lighttpd.net developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage developers.google.com/speed/docs/best-practices/caching
  • 30. SZUKAMY WEBDEVÓW Więcej informacji u mnie lub na stronie GOG.com/work
  • 31. DZIĘKUJĘ ZA UWAGĘ …i zapraszam po darmowego Wiedźmina :) SZUKAMY WEBDEVÓW Więcej informacji u mnie lub na stronie GOG.com/work