4. GOG.com - pla?orma cyfrowej dystrybucji gier
Historia Start w 2008 pod skrzydłami CD Projekt, zespół kilku osób
Obecnie zatrudnionych jest ponad 100 osób
Obecna pozycja #1 globalnej dystrybucji klasycznych gier na PC i Mac
#2 globalnej dystrybucji gier indie na PC i Mac
Partnerzy 250+ twórców i wydawców gier
Klienci Ponad 5 miliony unikalnych wejść miesięcznie z całego
świata
Gry Ponad 1400 tytułów w katalogu
Ponad 40 milionów gier na kontach użytkowników
7. Założenia projektu GOG Galaxy
• Uproszczenie instalacji oraz aktualizacji gier
• Automatyczne dostarczanie aktualizacji do graczy
• Automatyzacja procesu budowania gier
• Minimalizacja czasu instalacji
• Wsparcie premier gier, także wersji pudełkowej
9. Premiera gry w wydaniu pudełkowym
• Pre-load - możliwość pobrania znaczącej części gry przez
fizyczną premierą. Znacznie skraca czas potrzebny do zagrania
• 0-day patch - uruchomienie dostępu do gry wszystkim
graczom dokładnie w tym samym momencie
10.
11. Wydanie Wiedźmina 3 - statystyki
• 600 000 aktywacji gry w pierwszych dniach od premiery w
pla?ormie GOG Galaxy
• bez problemów
13. Budowa i działanie systemu
Naszym głównym założeniem było odseparowanie logiki pobierania gier od ich
fizycznego położenia oraz wsparcie dla wielu storage’y plikowych, głównie w
chmurze
15. CONTENT SYSTEM
Budowa i działanie systemu - Content System
CLOUD STORAGE
GOG GALAXY
desktop web
CONTENT SYSTEM
16. Budowa i działanie systemu - Content-System API
• Aplikacja PHP
• Generuje dane dostępowe do procesu ściągania gier
• Przechowuje meta dane wszystkich gier
• API całkowicie niezależne od użytego Cloud Storage
• Technologie: Varnish Cache, PHP 5.6, Symfony2, HHVM
17. Budowa i działanie systemu - Content-System API - wydajność
• PHP + HHVM + Symfony2
• 1000 r/s z pojedynczej maszyny (8x core)
• 15.000 r/s dla meta-danych - Varnish Cache
• Prosta konstrukcja zapewnia skalowanie prawie liniowe
• Mikro serwis, skalowany oraz rozwijany osobno
• Pełne HA, redundancja każdego elementu
18. GOG Galaxy ADN PHPVarnish CacheApp cache
CDN
Budowa i działanie systemu - Content-System API - cache
19. CONTENT SYSTEM
Budowa i działanie systemu - Cloud Storage
CLOUD STORAGE
GOG GALAXY
desktop web
CONTENT SYSTEM
20. Budowa i działanie systemu - Struktura gry
• Gra złożona jest do jednego pliku bigfile
• Bigfile jest opisany przez plik z meta danymi manifest
• Bigfile składa się z depotów, konkretnych fragmentów gry np. plików językowych
• Do wydania nowej wersji gry potrzebny jest upload nowego bigfile
• Aplikacja desktopowa pobiera update różnicowo z rozdzielczością jednego pliku
21. Budowa i działanie systemu - Struktura gry
GAME_PL.DAT
GAME.EXE GAME_PL.DAT GAME_EN.DAT
GAME.EXE
GAME_EN.DATGAME.EXE
MANIFEST_PL MANIFEST_EN
22. Budowa i działanie systemu - Struktura gry
GAME_PL.DAT
GAME.EXE GAME_PL.DAT GAME_EN.DAT
GAME.EXE
GAME_EN.DATGAME.EXE
MANIFEST_PL MANIFEST_EN
23. Budowa i działanie systemu - Cloud Storage
• Przechowuje pliki gier
• Użytkownicy ściągają gry bezpośrednio z Cloud Storage
• Technologie: EdgeCast® oraz Akamai@
25. Budowa i działanie systemu - Cloud Storage - tryby pracy
Tryby pracy: Tryby dostępu do plików:
Pull - nieużywany
Push - game builder Open - meta dane
Secure - pliki gier
26. CONTENT SYSTEM
Budowa i działanie systemu - GOG Galaxy
CLOUD STORAGE
GOG GALAXY
desktop web
CONTENT SYSTEM
27. Budowa i działanie systemu - GOG Galaxy
• Aplikacja desktopowa na Windows oraz OSX
• Potrafi przeanalizować lokalne pliki gry oraz porównuje je ze Cloud Storage
• Pozwala na pobranie poprzednich wersji gry - rollback system
• Obsługuję wiele wersji gry na raz - branches
• Technologie: C++, Chromium embeded, AngularJS
28. CONTENT SYSTEM
Budowa i działanie systemu - upload gry
CLOUD STORAGE
GOG GALAXY
desktop web
GAME BUILDER
29. CONTENT SYSTEM
Budowa i działanie systemu - pobieranie meta danych
CLOUD STORAGE
GOG GALAXY
desktop web
CONTENT SYSTEM
30. CONTENT SYSTEM
Budowa i działanie systemu - lokalne porównanie plików
CLOUD STORAGE
GOG GALAXY
desktop web
CONTENT SYSTEM
31. CONTENT SYSTEM
Budowa i działanie systemu - uzyskanie dostępu do plików gry
CLOUD STORAGE
GOG GALAXY
desktop web
CONTENT SYSTEM
32. CONTENT SYSTEM
Budowa i działanie systemu - pobieranie plików
CLOUD STORAGE
GOG GALAXY
desktop web
CONTENT SYSTEM
34. GOG.com Galaxy - problem #1
Długi czas dostarczenia gry do CDN
• Cała gra budowana jest do jednego pliku
• Nawet najmniejsza zmiana wymusza ponowny upload całej gry
• Każdy mały update generuje zawsze duży upload
35. GOG.com Galaxy - problem #2
Długi czas dostarczenia gry do graczy z CDN
• Cała gra budowana jest do jednego pliku
• Wiedźmin 3 miał 50Gb w dniu premiery
• Pojedynczy plik 50GB musi zostać rozpropagowany na wszystkie POP’y
• Całkowity czas wykonania oraz dostarczenia aktualizacji trwa nawet 3 dni!
37. GOG Galaxy Pipeline 2.0
Nowe wymagania
• Niektóre gry uaktualniane są codziennie
• Developerzy chcą wydawać aktualizacje natychmiast
• a Użytkownicy chcą otrzymywać je jak najszybciej jest to możliwe
• Co raz więcej gier wydawanych jest w modelu in-development
38. GOG Galaxy Pipeline 2.0
Proponowane rozwiązania
• Rezygnacja z budowania gry do jednego pliku
• Stworzenie narzędzi do automatycznego budowania oraz wrzucania gier
39. GOG Galaxy Pipeline 2.0 - rozwiązanie #1
Rezygnacja z budowania całej gry do jednego pliku
• Gry będą dzielone na chunki o wielkości 10MB
• Mniejsze pliki grupowane są do pełnego chunka
• Każdy z nich opisany jest przez hash czyli skrót z swojej zawartości
40. GOG Galaxy Pipeline 2.0 - rozwiązanie #2
Narzędzia dla developerów gier
• Oddajemy narzędzia do wrzucania gier do developerów
• Content System API przechowuje informacje o wszyskich wrzuconych chunkach
oraz ich hashach
• Umożliwia to deduplikację danych podczas uploadu
• Upload dyferencyjny
41. GOG Galaxy Pipeline 2.0 - rozwiązanie #2
Narzędzia dla developerów gier
• Developerzy zyskują możliwość samodzielnego publikowania zmian
• Developerzy rozproszeni są po całym świecie
• Developerzy pracują 24/7
43. Nowa usługa webowa - Game Receiver
• Aplikacja PHP
• Przyjmuje bezpośredni upload od developerów poprzez HTTPS
• Propaguje asynchronicznie pliki do dowolnej ilości Cloud Storage
• Aby być bliżej developerów, aplikacja została rozproszona po całym świecie
• Technologie: Varnish Cache, PHP 5.6, Symfony2, HHVM, RabbitMQ, Celery
44. Budowa i działanie systemu - Game Receiver - wydajność
• PHP + HHVM + Symfony2
• Celery + RabbitMQ
• Prosta konstrukcja zapewnia skalowanie prawie liniowe
• Serwery dostawiane są zgodnie z zapotrzebowaniem od developerów
• Mikro serwis, skalowany oraz rozwijany osobno
• Pełne HA, redundancja każdego elementu
45. CONTENT SYSTEM
Budowa i działanie systemu - upload gry 2.0
CLOUD STORAGE
GOG GALAXY
desktop web
GAME BUILDER
GAME RECEIVER
CLOUD STORAGE
46. CONTENT SYSTEM
Budowa i działanie systemu - upload gry 2.0
CLOUD STORAGE
GOG GALAXY
desktop web
GAME RECEIVER
CLOUD STORAGE
CONTENT SYSTEM
48. Infrastruktura GOG w liczbach
• Stale rosnąca infrastruktura, przyrost ok 200% na rok
• Ponad 100 serwerów fizycznych
• Blisko 800 serwerów wirtualnych
• Prawie 200 serwerów wirtualnych w biurze
• Od 15 do 30 wcketów na dzień
• Ruch sieciowy między 20 a 200 Gbps
50. Infrastruktura z lotu ptaka
• Każde urządzenie w redundancji
• Wiele sesji BGP
• Między rackami 2x10Gbps
51. Pojedynczy compute node
• 2x1Gbps, dlaczego ?
• Bonding
• Osobne sieci vlan dla usług
• Między rackami 2x10Gbps
• XEN
• Wszędzie bridge
52. Typowy projekt
• Każdy projekt ma szablonową konstrukcję
• Acwve/Acwve vs Acwve/Standby
• LB tests
53. Co dalej ?
• Skalowanie na zawołanie?
• Wrzutka kodu, co z aktualizacjami?
• Wąskie gardła? :-)
• Statystyki, dashboardy
• Logi, centralizacja, wizualizacja
• Co robi aplikacja?
54. Jak pomóc devom zrozumieć serwery :)
• Newrelic - analiza działania aplikacji
• XDebug - profilowania kodu
• Wykresy - statystyki i anomalie
• Logi - czemu się popsuło
55. Knujemy
• Co mówi biznes? setki tysięcy pobrań pierwszego dnia!
• Ile użytkowników? setki tysięcy użytkowników online!
• Jakie łącza? setki gigabitów ruchu!
• Jak to wszystko skonfigurować? automatyzacja!
56. Cele wydaniowe:
• Nie kupujemy sprzętu! / Wynajmujemy !
• Automatyzacja konfiguracji oraz deploymentu
• Dystrybucja plików poprzez CDN, @EdgeCast
• Wzrost ruchu o ponad 1500%, co z pozostałymi usługami?
• Prefetch przed wydaniem
• Dzień premiery