SlideShare a Scribd company logo
VARNISH-CACHE
Praktyczne zastosowania
Michał Gruchała
Agenda
1. Co to jest Varnish-Cache
2. Warsztat
3. Varnish-Cache w GOG.com
Varnish-Cache
Użytkownik LoadBalancer

(Varnish-Cache)
Backend
Backend
Backend
Varnish-Cache
Reverse Proxy / LoadBalancer
Cache
Konfigurowalność / Elastyczność
Protokół HTTP (brak SSL)
Badanie zdrowia backendów
Dowolna możliwość wyboru backendów
Możliwośc zmiany zapytania / odpowiedzi HTTP
Edge Side Includes
Trzyma w cache odpowiedzi otrzymane od backendów
Eliminuje dogpile effect
Maszyna stanowa / automat skończony
Konfiguracja jest kodem / zbiorem funkcji wykonywanych
w poszczególnych stanach
Możliwość pisania modułów albo wstawek inline-C
Varnish-Cache
vcl_recv() vcl_deliver() DONEvcl_fetch()
vcl_hit()
vcl_miss()
move bytesvcl_pipe()
vcl_pass()
vcl_hash()
Funkcja jest wykonywana w po pobraniu danych od backendu
Manipulujemy odpowiedzią
Podejmujemy decyzję czy zapisujemy do cache
Może nie być wykonana - żądanie HTTP zostało obsłużone przez cache
Varnish-Cache
vcl_recv()
vcl_fetch()
Funkcja jest wykonywana na początku przetwarzania zapytania
Ustawiamy backend / Wybieramy odpowiedź z cache
Normalizujemy zapytanie
Warsztat
devacademy.gog.com
Francja
Varnish-Cache
!
!
LOADBALANCER
web-{1,2}.devacademy.gog.com
Kanada
nginx + php-fpm
!
BACKENDY
Warsztat
Warsztat
LoadBalancer director / backends / health checks
vcl_recv
Zasoby statyczne vcl_recv + vcl_fetch
ochrona przed dogpile effect
Zasoby dynamiczne Cookie
Zasoby dynamiczne
personalizowane
ESI
Ajax
Co więcej?
Grace Serwuje przeterminowane dane z cache
Restarts Umożliwa zresetowanie procesu (powrót do vcl_recv).
Możliwa reakcja na błędne odpowiedzi z backendów
Moduły curl
throttle
geoip
Normalizacja URL Różne linki prowadzące do tych samych zasobów (przydatne
przy statycznych plikach typu js/css)
Sterowanie cache TTL można pobierać z backendu (nagłówek)

Inwalidacja cache przez HTTP
Varnish-Cache w GOG.com
Varnish-Cache w GOG.com
Wiele serwerowni Varnish-Cache na maszynach POP wybiera odpowiednie
datacenter
Obsługa OAuth2 Varnish-Cache rozwiązuje access token na client_id / user_id
Cache z cookie Ten sam URL ale wiele wersji językowych, wersja mobilne/
desktop.
Ochrona przez DoS Chcemy na Varnish-Cache zrealizować system ochrony przed
atakami typu DoS
DZIĘKUJĘ ZA UWAGĘ
Zapraszam do dyskusji

More Related Content

Viewers also liked (7)

PDF
The story of GOG.com Cache - PHPers 2014 ( PL )
GOG.com dev team
 
PDF
Jak wydaliśmy wiedźmina, GOG.com IT
GOG.com dev team
 
PDF
Dystrybucja gier w świecie online, przykład architektury webowego systemu ro...
GOG.com dev team
 
PDF
GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...
GOG.com dev team
 
PDF
Event sourcing w PHP (by Piotr Kacała)
GOG.com dev team
 
PDF
Intro do Domain Driven Design. ( PL )
GOG.com dev team
 
PDF
Clean architecture with ddd layering in php
Leonardo Proietti
 
The story of GOG.com Cache - PHPers 2014 ( PL )
GOG.com dev team
 
Jak wydaliśmy wiedźmina, GOG.com IT
GOG.com dev team
 
Dystrybucja gier w świecie online, przykład architektury webowego systemu ro...
GOG.com dev team
 
GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...
GOG.com dev team
 
Event sourcing w PHP (by Piotr Kacała)
GOG.com dev team
 
Intro do Domain Driven Design. ( PL )
GOG.com dev team
 
Clean architecture with ddd layering in php
Leonardo Proietti
 

Similar to Varnish cache (6)

PDF
Http cache - kiedy/dlaczego/jak
Paweł Mikołajczuk
 
PDF
Service workers - bądź online, nawet kiedy jesteś offline!
The Software House
 
PDF
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
allegro.tech
 
PPTX
Środowisko testowe pod REST-a
Future Processing
 
PDF
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Marcin Gajda
 
PDF
HTML5: Atak i obrona
Krzysztof Kotowicz
 
Http cache - kiedy/dlaczego/jak
Paweł Mikołajczuk
 
Service workers - bądź online, nawet kiedy jesteś offline!
The Software House
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
allegro.tech
 
Środowisko testowe pod REST-a
Future Processing
 
Webpack - Czym jest webpack i dlaczego chcesz go używać? - wersja krótka
Marcin Gajda
 
HTML5: Atak i obrona
Krzysztof Kotowicz
 
Ad

More from GOG.com dev team (6)

PDF
In-depth caching in Varnish - GOG Varnish Meetup, march 2019
GOG.com dev team
 
PDF
Always up to date, testable and maintainable documentation with OpenAPI
GOG.com dev team
 
PDF
Symfony without the framework
GOG.com dev team
 
PPTX
Versioning challenges in micro services of Gwent
GOG.com dev team
 
PPTX
Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej w grze...
GOG.com dev team
 
PDF
Wykorzystanie technologii webowych w aplikacjach desktopowych (1)
GOG.com dev team
 
In-depth caching in Varnish - GOG Varnish Meetup, march 2019
GOG.com dev team
 
Always up to date, testable and maintainable documentation with OpenAPI
GOG.com dev team
 
Symfony without the framework
GOG.com dev team
 
Versioning challenges in micro services of Gwent
GOG.com dev team
 
Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej w grze...
GOG.com dev team
 
Wykorzystanie technologii webowych w aplikacjach desktopowych (1)
GOG.com dev team
 
Ad

Varnish cache