SlideShare ist ein Scribd-Unternehmen logo
1 von 60
Downloaden Sie, um offline zu lesen
DYSTRYBUCJA GIER W ŚWIECIE ONLINE
przykład architektury webowego systemu rozproszonego
GOG Galaxy Pipeline
Maciej Włodarkiewicz
WYKORZYSTANIE JĘZYKA PHP
w systemach cyfrowej dystrybucji gier
Maciej Włodarkiewicz
O mnie
GOG.com
Producer
Czym się zajmuję?
Prowadzeniem projektów,
architekturą systemów
Wcześniej:
Head of Web Development - GOG
Head of Web Backend - GG
GOG.com - plaHorma 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
Agenda
1. Założenia projektu GOG Galaxy Pipeline
2. Start GOG Galaxy
3. Budowa i działanie systemu
4. GOG Galaxy Pipeline 2.0
5. plany na przyszłość
GOG Galaxy Pipeline
Założenia projektu GOG Galaxy Pipeline
Założenia projektu GOG Galaxy Pipeline
Problemy graczy oraz developerów
• Za dużo patchy, użytkownicy nie wiedzą co skąd pobrać i jak
wykonać update do najnowszej wersji
• Gracze muszą manualnie zarządzać instalacją
• Do ściągania dużych plików potrzebny jest własny Download
Manager albo GOG Downloader
• Budowa patch’y trwa długo i jest skomplikowane
Ilość plików do manualnego pobrania - przykład Dying Light
GOG Downloader
Założenia projektu GOG Galaxy Pipeline
Wymagania
• 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
Założenia projektu GOG Galaxy Pipeline
Dlaczego nie użyliśmy gotowego systemu
kontroli wersji ?
ponieważ instalacji oraz aktualizacja gry jest dużo bardziej
skomplikowana niż samo pobranie plików
GOG Galaxy Pipeline
GOG Galaxy Pipeline 1.0
Start GOG Galaxy oraz Wiedźmina 3
Start GOG Galaxy
• 6 Maja - start GOG Galaxy
• 19 Maja - wydanie Wiedźmina 3
• GOG Galaxy obsługiwało wersję pudełkową TW3, dla której
przygotowaliśmy:
- preload
- day1patch
Wydanie Wiedźmina 3 - statystyki z pierwszego miesiąca
• 21.5 PB danych dostarczonych do graczy
• do 600 Gbps ruchu
• … czyli 2 pełne gry na sekundę
• 600 000 aktywacji gry na poprzez GOG Galaxy
• bez problemów
GOG Galaxy Pipeline
Budowa systemu
CONTENT SYSTEM
Budowa i działanie systemu - upload gry
CLOUD STORAGE
GOG GALAXY
desktop web
GAME BUILDER
Budowa i działanie systemu - Struktura gry
• Gra złożona jest do jednego pliku bigfile
• Bigfile jest opisany przez plik z meta danmi 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
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
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
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
Budowa i działanie systemu - Cloud Storage
• Przechowuje pliki gier
• Użytkownicy ściągają gry bezpośrednio z Cloud Storage
• Technologie: EdgeCast®
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
DataCenter (Warszawa) oraz
sieć rozproszona CDN
Budowa i działanie systemu - Cloud Storage - zasięg
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
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
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
GOG Galaxy ADN PHPVarnish CacheApp cache
CDN
Budowa i działanie systemu - Content-System API - cache
CONTENT SYSTEM
Budowa i działanie systemu - upload gry
CLOUD STORAGE
GOG GALAXY
desktop web
GAME BUILDER
CONTENT SYSTEM
Budowa i działanie systemu - pobieranie meta danych
CLOUD STORAGE
GOG GALAXY
desktop web
CONTENT SYSTEM
CONTENT SYSTEM
Budowa i działanie systemu - lokalne porównanie plików
CLOUD STORAGE
GOG GALAXY
desktop web
CONTENT SYSTEM
CONTENT SYSTEM
Budowa i działanie systemu - uzyskanie dostępu do plików gry
CLOUD STORAGE
GOG GALAXY
desktop web
CONTENT SYSTEM
CONTENT SYSTEM
Budowa i działanie systemu - pobieranie plików
CLOUD STORAGE
GOG GALAXY
desktop web
CONTENT SYSTEM
GOG Galaxy Pipeline
Analiza wybranych problemów
GOG.com Galaxy - problem #1
Kosztowny proces budowania gry
• 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
GOG.com Galaxy - problem #2
Czas dostarczenia gry na serwery
• Cała gra budowana jest do jednego pliku
• Wiedźmin 3 miał 26Gb w dniu premiery
• Pojedynczy plik 26GB musi zostać rozpropagowany na wszystkie serwery Cloud
Storage
• Całkowity czas wykonania oraz dostarczenia aktualizacji trwa nawet 3dni!
DataCenter (Warszawa) oraz
sieć rozproszona CDN
Budowa i działanie systemu - Cloud Storage - zasięg
GOG Galaxy Pipeline
GOG Galaxy Pipeline 2.0
games in-development
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
GOG Galaxy Pipeline 2.0
Proponowane rozwiązania
• Rezygnacja z budowania gry do jednego pliku
• Stworzenie narzędzi do automatycznego budowania oraz wrzucania gier
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
Budowa i działanie systemu - Struktura gry 2.0
GAME_PL.DAT
GAME.EXE GAME_PL.DAT GAME_EN.DAT
GAME.EXE
GAME_EN.DATGAME.EXE
MANIFEST_PL MANIFEST_EN
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 zmian
• Upload dyferencyjny
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
GOG Galaxy Pipeline
Nowa usługa webowa - Game Receiver
GOG Galaxy Pipeline 2.0
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
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
CONTENT SYSTEM
Budowa i działanie systemu - upload gry 2.0
CLOUD STORAGE
GOG GALAXY
desktop web
GAME BUILDER
GAME RECEIVER
CLOUD STORAGE
CONTENT SYSTEM
Budowa i działanie systemu - upload gry 2.0
CLOUD STORAGE
GOG GALAXY
desktop web
GAME RECEIVER
CLOUD STORAGE
CONTENT SYSTEM
GOG Galaxy Pipeline
Nowa usługa webowa - Dev Portal
GOG Galaxy Pipeline 2.0
Nowa usługa webowa - Dev Portal
• Interfejs graficzny do Content System API
• Możliwość publikacji wybranej wersji gry w GOG Galaxy
• Technologie: Varnish Cache, PHP 5.6, Symfony2, HHVM, AngularJS
CONTENT SYSTEM
Budowa i działanie systemu - Dev Portal
CLOUD STORAGE
GOG GALAXY
desktop web
GAME RECEIVER
CLOUD STORAGE
CONTENT SYSTEM
DEV PORTAL
PYTANIA?
GOG Galaxy Pipeline
Plany na przyszłość
Plany na przyszłość
• Pełna kontrola developerów nad całością procesu wydawania gier?
• Obsługa wielu gier AAA
• Dalsza optymalizacja oraz usprawnianie systemów
• PHP7 ?
Podsumowanie wydania Wiedźmina 3 na GOG Galaxy
hvps://www.youtube.com/watch?v=9vh5mxm5Jy8
PYTANIA?
SZUKAMY WEBDEVÓW
Więcej informacji u mnie lub na stronie GOG.com/work
DZIĘKUJĘ ZA UWAGĘ

Weitere ähnliche Inhalte

Was ist angesagt?

Jak poprawić Core Web Vitals w aplikacji Next.js
Jak poprawić Core Web Vitals w aplikacji Next.jsJak poprawić Core Web Vitals w aplikacji Next.js
Jak poprawić Core Web Vitals w aplikacji Next.jsThe Software House
 
Kubernetes (Canary) Deployments
Kubernetes (Canary) DeploymentsKubernetes (Canary) Deployments
Kubernetes (Canary) DeploymentsThe Software House
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
 
Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackThe Software House
 
Jak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńJak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńPaweł Kondraciuk
 
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
 
DynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychDynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychThe Software House
 
Lokalny development z kubernetes
Lokalny development z kubernetesLokalny development z kubernetes
Lokalny development z kubernetesPiotr Mińkowski
 
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]Droptica
 
Metaprogramowanie w JS
Metaprogramowanie w JSMetaprogramowanie w JS
Metaprogramowanie w JSDawid Rusnak
 
Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Droptica
 
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Mateusz Paprocki, PMP
 
Kubernetes - 0 do 1 - 4Developers Warszawa 2019
Kubernetes - 0 do 1 - 4Developers Warszawa 2019Kubernetes - 0 do 1 - 4Developers Warszawa 2019
Kubernetes - 0 do 1 - 4Developers Warszawa 2019Michał Kurzeja
 
3Camp Tech 2016/11/15 - Front-end tooling: package managers
3Camp Tech 2016/11/15 - Front-end tooling: package managers3Camp Tech 2016/11/15 - Front-end tooling: package managers
3Camp Tech 2016/11/15 - Front-end tooling: package managersMichał Michalczuk
 
Hugo - make webdev fun again
Hugo - make webdev fun againHugo - make webdev fun again
Hugo - make webdev fun againMarcin Gajda
 
Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]Droptica
 

Was ist angesagt? (19)

The story of GOG.com Cache
The story of GOG.com Cache The story of GOG.com Cache
The story of GOG.com Cache
 
Jak poprawić Core Web Vitals w aplikacji Next.js
Jak poprawić Core Web Vitals w aplikacji Next.jsJak poprawić Core Web Vitals w aplikacji Next.js
Jak poprawić Core Web Vitals w aplikacji Next.js
 
Kubernetes (Canary) Deployments
Kubernetes (Canary) DeploymentsKubernetes (Canary) Deployments
Kubernetes (Canary) Deployments
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 
Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStack
 
Jak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńJak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzień
 
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...
 
DynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychDynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornych
 
PHP-PM. Hit czy kit?
PHP-PM. Hit czy kit?PHP-PM. Hit czy kit?
PHP-PM. Hit czy kit?
 
WordCamp Gdynia 2016
WordCamp Gdynia 2016WordCamp Gdynia 2016
WordCamp Gdynia 2016
 
Lokalny development z kubernetes
Lokalny development z kubernetesLokalny development z kubernetes
Lokalny development z kubernetes
 
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
Uwierzytelnianie dwuetapowe (2FA) w Drupalu [PL]
 
Metaprogramowanie w JS
Metaprogramowanie w JSMetaprogramowanie w JS
Metaprogramowanie w JS
 
Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]
 
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
 
Kubernetes - 0 do 1 - 4Developers Warszawa 2019
Kubernetes - 0 do 1 - 4Developers Warszawa 2019Kubernetes - 0 do 1 - 4Developers Warszawa 2019
Kubernetes - 0 do 1 - 4Developers Warszawa 2019
 
3Camp Tech 2016/11/15 - Front-end tooling: package managers
3Camp Tech 2016/11/15 - Front-end tooling: package managers3Camp Tech 2016/11/15 - Front-end tooling: package managers
3Camp Tech 2016/11/15 - Front-end tooling: package managers
 
Hugo - make webdev fun again
Hugo - make webdev fun againHugo - make webdev fun again
Hugo - make webdev fun again
 
Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]
 

Andere mochten auch

SCUOLA DI COUNSELING MOTIVAZIONALE FERRARA
SCUOLA DI COUNSELING MOTIVAZIONALE FERRARASCUOLA DI COUNSELING MOTIVAZIONALE FERRARA
SCUOLA DI COUNSELING MOTIVAZIONALE FERRARAFranca Mazzanti
 
Презентация Забродина Ю.М. 2016
Презентация Забродина Ю.М.  2016Презентация Забродина Ю.М.  2016
Презентация Забродина Ю.М. 2016sodrugestvo
 
Łódzkie przyjazne rodzinie - warsztaty design thinking
Łódzkie przyjazne rodzinie - warsztaty design thinkingŁódzkie przyjazne rodzinie - warsztaty design thinking
Łódzkie przyjazne rodzinie - warsztaty design thinkingDesign thinking
 
Getting the most from your reading
Getting the most from your readingGetting the most from your reading
Getting the most from your readingWDCNewcastle
 
Deploying Elastic Java EE Microservices in the Cloud with Docker
Deploying Elastic Java EE Microservices in the Cloud with DockerDeploying Elastic Java EE Microservices in the Cloud with Docker
Deploying Elastic Java EE Microservices in the Cloud with DockerPayara
 
Migrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFXMigrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFXBruno Borges
 
Manejo de información (Adicción en los Videojuegos)
Manejo de información (Adicción en los Videojuegos)Manejo de información (Adicción en los Videojuegos)
Manejo de información (Adicción en los Videojuegos)Juan Carlos Arredondo R
 
Securing the Manufacturing Digital Thread
Securing the Manufacturing Digital ThreadSecuring the Manufacturing Digital Thread
Securing the Manufacturing Digital ThreadFrank Backes
 

Andere mochten auch (14)

Control y seguridad de sistemas
Control y seguridad de sistemasControl y seguridad de sistemas
Control y seguridad de sistemas
 
Zimnie zabavy bredihina
Zimnie zabavy bredihinaZimnie zabavy bredihina
Zimnie zabavy bredihina
 
SCUOLA DI COUNSELING MOTIVAZIONALE FERRARA
SCUOLA DI COUNSELING MOTIVAZIONALE FERRARASCUOLA DI COUNSELING MOTIVAZIONALE FERRARA
SCUOLA DI COUNSELING MOTIVAZIONALE FERRARA
 
Presentationaneta
PresentationanetaPresentationaneta
Presentationaneta
 
Dictionary oil industry
Dictionary oil industryDictionary oil industry
Dictionary oil industry
 
FlyerSmartHawk
FlyerSmartHawkFlyerSmartHawk
FlyerSmartHawk
 
Презентация Забродина Ю.М. 2016
Презентация Забродина Ю.М.  2016Презентация Забродина Ю.М.  2016
Презентация Забродина Ю.М. 2016
 
Łódzkie przyjazne rodzinie - warsztaty design thinking
Łódzkie przyjazne rodzinie - warsztaty design thinkingŁódzkie przyjazne rodzinie - warsztaty design thinking
Łódzkie przyjazne rodzinie - warsztaty design thinking
 
Getting the most from your reading
Getting the most from your readingGetting the most from your reading
Getting the most from your reading
 
Deploying Elastic Java EE Microservices in the Cloud with Docker
Deploying Elastic Java EE Microservices in the Cloud with DockerDeploying Elastic Java EE Microservices in the Cloud with Docker
Deploying Elastic Java EE Microservices in the Cloud with Docker
 
Migrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFXMigrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFX
 
Manejo de información (Adicción en los Videojuegos)
Manejo de información (Adicción en los Videojuegos)Manejo de información (Adicción en los Videojuegos)
Manejo de información (Adicción en los Videojuegos)
 
Securing the Manufacturing Digital Thread
Securing the Manufacturing Digital ThreadSecuring the Manufacturing Digital Thread
Securing the Manufacturing Digital Thread
 
FAQs zur Technik
FAQs zur TechnikFAQs zur Technik
FAQs zur Technik
 

Ähnlich wie Dystrybucja gier w świecie online, przykład architektury webowego systemu rozproszonego 2

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
 
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
 
Word up warszawa 2015
Word up warszawa 2015Word up warszawa 2015
Word up warszawa 2015Tomasz Dziuda
 
ROS3D - Podsumowanie prac nad projektem
ROS3D - Podsumowanie prac nad projektemROS3D - Podsumowanie prac nad projektem
ROS3D - Podsumowanie prac nad projektemOpen-RnD
 
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio playerFull Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio playerMarek Będkowski
 
4Developers: Jarek Wojczakowski- Technologie w świecie gier mobilnych
4Developers: Jarek Wojczakowski- Technologie w świecie gier mobilnych4Developers: Jarek Wojczakowski- Technologie w świecie gier mobilnych
4Developers: Jarek Wojczakowski- Technologie w świecie gier mobilnychPROIDEA
 
PLNOG 3: Tomasz Paszkowski Wysokowydajny system składowania plików graficzny...
PLNOG 3: Tomasz Paszkowski  Wysokowydajny system składowania plików graficzny...PLNOG 3: Tomasz Paszkowski  Wysokowydajny system składowania plików graficzny...
PLNOG 3: Tomasz Paszkowski Wysokowydajny system składowania plików graficzny...PROIDEA
 
Prezentacja "Praca z Gitem" - Dawid Cieszyński OLMUG 22.01.14
Prezentacja "Praca z Gitem" - Dawid Cieszyński OLMUG 22.01.14Prezentacja "Praca z Gitem" - Dawid Cieszyński OLMUG 22.01.14
Prezentacja "Praca z Gitem" - Dawid Cieszyński OLMUG 22.01.14Sagittario
 
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITaWersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITamarekmisztal
 
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
 
Niezbędnik administratora - prezentacja Bartosz Sałach
Niezbędnik administratora - prezentacja Bartosz SałachNiezbędnik administratora - prezentacja Bartosz Sałach
Niezbędnik administratora - prezentacja Bartosz SałachBartosz Sałach
 
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
 
TV i video w Internecie
TV i video w InternecieTV i video w Internecie
TV i video w InternecieDivante
 
Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...
Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...
Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...Kainos Polska
 
Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.
Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.
Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.Meet Magento Poland
 
Różnice w wynikach wyszukiwania spowodowane wprowadzeniem Google Global Cache
Różnice w wynikach wyszukiwania spowodowane wprowadzeniem Google Global CacheRóżnice w wynikach wyszukiwania spowodowane wprowadzeniem Google Global Cache
Różnice w wynikach wyszukiwania spowodowane wprowadzeniem Google Global CacheSilesia SEM
 
Kivy na Androidzie
Kivy na AndroidzieKivy na Androidzie
Kivy na AndroidzieDaftcode
 

Ähnlich wie Dystrybucja gier w świecie online, przykład architektury webowego systemu rozproszonego 2 (20)

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 )
 
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 )
 
Word up warszawa 2015
Word up warszawa 2015Word up warszawa 2015
Word up warszawa 2015
 
ROS3D - Podsumowanie prac nad projektem
ROS3D - Podsumowanie prac nad projektemROS3D - Podsumowanie prac nad projektem
ROS3D - Podsumowanie prac nad projektem
 
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio playerFull Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
 
4Developers: Jarek Wojczakowski- Technologie w świecie gier mobilnych
4Developers: Jarek Wojczakowski- Technologie w świecie gier mobilnych4Developers: Jarek Wojczakowski- Technologie w świecie gier mobilnych
4Developers: Jarek Wojczakowski- Technologie w świecie gier mobilnych
 
PLNOG 3: Tomasz Paszkowski Wysokowydajny system składowania plików graficzny...
PLNOG 3: Tomasz Paszkowski  Wysokowydajny system składowania plików graficzny...PLNOG 3: Tomasz Paszkowski  Wysokowydajny system składowania plików graficzny...
PLNOG 3: Tomasz Paszkowski Wysokowydajny system składowania plików graficzny...
 
Prezentacja "Praca z Gitem" - Dawid Cieszyński OLMUG 22.01.14
Prezentacja "Praca z Gitem" - Dawid Cieszyński OLMUG 22.01.14Prezentacja "Praca z Gitem" - Dawid Cieszyński OLMUG 22.01.14
Prezentacja "Praca z Gitem" - Dawid Cieszyński OLMUG 22.01.14
 
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITaWersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa
 
Środowisko PWA
Środowisko PWAŚrodowisko PWA
Środowisko PWA
 
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)
 
Niezbędnik administratora - prezentacja Bartosz Sałach
Niezbędnik administratora - prezentacja Bartosz SałachNiezbędnik administratora - prezentacja Bartosz Sałach
Niezbędnik administratora - prezentacja Bartosz Sałach
 
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
 
TV i video w Internecie
TV i video w InternecieTV i video w Internecie
TV i video w Internecie
 
Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...
Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...
Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...
 
Feo w-joomla
Feo w-joomlaFeo w-joomla
Feo w-joomla
 
Od Zera do Farmera
Od Zera do FarmeraOd Zera do Farmera
Od Zera do Farmera
 
Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.
Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.
Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.
 
Różnice w wynikach wyszukiwania spowodowane wprowadzeniem Google Global Cache
Różnice w wynikach wyszukiwania spowodowane wprowadzeniem Google Global CacheRóżnice w wynikach wyszukiwania spowodowane wprowadzeniem Google Global Cache
Różnice w wynikach wyszukiwania spowodowane wprowadzeniem Google Global Cache
 
Kivy na Androidzie
Kivy na AndroidzieKivy na Androidzie
Kivy na Androidzie
 

Mehr von GOG.com dev team

In-depth caching in Varnish - GOG Varnish Meetup, march 2019
In-depth caching in Varnish - GOG Varnish Meetup, march 2019In-depth caching in Varnish - GOG Varnish Meetup, march 2019
In-depth caching in Varnish - GOG Varnish Meetup, march 2019GOG.com dev team
 
Always up to date, testable and maintainable documentation with OpenAPI
Always up to date, testable and maintainable documentation with OpenAPIAlways up to date, testable and maintainable documentation with OpenAPI
Always up to date, testable and maintainable documentation with OpenAPIGOG.com dev team
 
Symfony without the framework
Symfony without the frameworkSymfony without the framework
Symfony without the frameworkGOG.com dev team
 
Versioning challenges in micro services of Gwent
Versioning challenges in micro services of GwentVersioning challenges in micro services of Gwent
Versioning challenges in micro services of GwentGOG.com dev team
 
Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej w grze...
Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej w grze...Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej w grze...
Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej w grze...GOG.com dev team
 
Event sourcing w PHP (by Piotr Kacała)
Event sourcing w PHP (by Piotr Kacała)Event sourcing w PHP (by Piotr Kacała)
Event sourcing w PHP (by Piotr Kacała)GOG.com dev team
 
Design Thinking Workshop: Empathy in the User Experience
Design Thinking Workshop: Empathy in the User ExperienceDesign Thinking Workshop: Empathy in the User Experience
Design Thinking Workshop: Empathy in the User ExperienceGOG.com dev team
 
Lean UX - How to start with Lean Startup in User Experience
Lean UX - How to start with Lean Startup in User ExperienceLean UX - How to start with Lean Startup in User Experience
Lean UX - How to start with Lean Startup in User ExperienceGOG.com dev team
 

Mehr von GOG.com dev team (9)

In-depth caching in Varnish - GOG Varnish Meetup, march 2019
In-depth caching in Varnish - GOG Varnish Meetup, march 2019In-depth caching in Varnish - GOG Varnish Meetup, march 2019
In-depth caching in Varnish - GOG Varnish Meetup, march 2019
 
Always up to date, testable and maintainable documentation with OpenAPI
Always up to date, testable and maintainable documentation with OpenAPIAlways up to date, testable and maintainable documentation with OpenAPI
Always up to date, testable and maintainable documentation with OpenAPI
 
Symfony without the framework
Symfony without the frameworkSymfony without the framework
Symfony without the framework
 
Versioning challenges in micro services of Gwent
Versioning challenges in micro services of GwentVersioning challenges in micro services of Gwent
Versioning challenges in micro services of Gwent
 
Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej w grze...
Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej w grze...Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej w grze...
Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej w grze...
 
Event sourcing w PHP (by Piotr Kacała)
Event sourcing w PHP (by Piotr Kacała)Event sourcing w PHP (by Piotr Kacała)
Event sourcing w PHP (by Piotr Kacała)
 
Design Thinking Workshop: Empathy in the User Experience
Design Thinking Workshop: Empathy in the User ExperienceDesign Thinking Workshop: Empathy in the User Experience
Design Thinking Workshop: Empathy in the User Experience
 
Lean UX - How to start with Lean Startup in User Experience
Lean UX - How to start with Lean Startup in User ExperienceLean UX - How to start with Lean Startup in User Experience
Lean UX - How to start with Lean Startup in User Experience
 
Varnish cache
Varnish cacheVarnish cache
Varnish cache
 

Dystrybucja gier w świecie online, przykład architektury webowego systemu rozproszonego 2

  • 1.
  • 2. DYSTRYBUCJA GIER W ŚWIECIE ONLINE przykład architektury webowego systemu rozproszonego GOG Galaxy Pipeline Maciej Włodarkiewicz
  • 3. WYKORZYSTANIE JĘZYKA PHP w systemach cyfrowej dystrybucji gier Maciej Włodarkiewicz
  • 4. O mnie GOG.com Producer Czym się zajmuję? Prowadzeniem projektów, architekturą systemów Wcześniej: Head of Web Development - GOG Head of Web Backend - GG
  • 5. GOG.com - plaHorma 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
  • 6. Agenda 1. Założenia projektu GOG Galaxy Pipeline 2. Start GOG Galaxy 3. Budowa i działanie systemu 4. GOG Galaxy Pipeline 2.0 5. plany na przyszłość
  • 7. GOG Galaxy Pipeline Założenia projektu GOG Galaxy Pipeline
  • 8. Założenia projektu GOG Galaxy Pipeline Problemy graczy oraz developerów • Za dużo patchy, użytkownicy nie wiedzą co skąd pobrać i jak wykonać update do najnowszej wersji • Gracze muszą manualnie zarządzać instalacją • Do ściągania dużych plików potrzebny jest własny Download Manager albo GOG Downloader • Budowa patch’y trwa długo i jest skomplikowane
  • 9. Ilość plików do manualnego pobrania - przykład Dying Light
  • 11. Założenia projektu GOG Galaxy Pipeline Wymagania • 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
  • 12. Założenia projektu GOG Galaxy Pipeline Dlaczego nie użyliśmy gotowego systemu kontroli wersji ? ponieważ instalacji oraz aktualizacja gry jest dużo bardziej skomplikowana niż samo pobranie plików
  • 13. GOG Galaxy Pipeline GOG Galaxy Pipeline 1.0 Start GOG Galaxy oraz Wiedźmina 3
  • 14. Start GOG Galaxy • 6 Maja - start GOG Galaxy • 19 Maja - wydanie Wiedźmina 3 • GOG Galaxy obsługiwało wersję pudełkową TW3, dla której przygotowaliśmy: - preload - day1patch
  • 15.
  • 16. Wydanie Wiedźmina 3 - statystyki z pierwszego miesiąca • 21.5 PB danych dostarczonych do graczy • do 600 Gbps ruchu • … czyli 2 pełne gry na sekundę • 600 000 aktywacji gry na poprzez GOG Galaxy • bez problemów
  • 18. CONTENT SYSTEM Budowa i działanie systemu - upload gry CLOUD STORAGE GOG GALAXY desktop web GAME BUILDER
  • 19. Budowa i działanie systemu - Struktura gry • Gra złożona jest do jednego pliku bigfile • Bigfile jest opisany przez plik z meta danmi 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
  • 20. 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
  • 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®
  • 24. 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
  • 25. DataCenter (Warszawa) oraz sieć rozproszona CDN Budowa i działanie systemu - Cloud Storage - zasięg
  • 26. 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
  • 27. 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
  • 28. 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
  • 29. GOG Galaxy ADN PHPVarnish CacheApp cache CDN Budowa i działanie systemu - Content-System API - cache
  • 30. CONTENT SYSTEM Budowa i działanie systemu - upload gry CLOUD STORAGE GOG GALAXY desktop web GAME BUILDER
  • 31. CONTENT SYSTEM Budowa i działanie systemu - pobieranie meta danych CLOUD STORAGE GOG GALAXY desktop web CONTENT SYSTEM
  • 32. CONTENT SYSTEM Budowa i działanie systemu - lokalne porównanie plików CLOUD STORAGE GOG GALAXY desktop web CONTENT SYSTEM
  • 33. CONTENT SYSTEM Budowa i działanie systemu - uzyskanie dostępu do plików gry CLOUD STORAGE GOG GALAXY desktop web CONTENT SYSTEM
  • 34. CONTENT SYSTEM Budowa i działanie systemu - pobieranie plików CLOUD STORAGE GOG GALAXY desktop web CONTENT SYSTEM
  • 35. GOG Galaxy Pipeline Analiza wybranych problemów
  • 36. GOG.com Galaxy - problem #1 Kosztowny proces budowania gry • 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
  • 37. GOG.com Galaxy - problem #2 Czas dostarczenia gry na serwery • Cała gra budowana jest do jednego pliku • Wiedźmin 3 miał 26Gb w dniu premiery • Pojedynczy plik 26GB musi zostać rozpropagowany na wszystkie serwery Cloud Storage • Całkowity czas wykonania oraz dostarczenia aktualizacji trwa nawet 3dni!
  • 38. DataCenter (Warszawa) oraz sieć rozproszona CDN Budowa i działanie systemu - Cloud Storage - zasięg
  • 39. GOG Galaxy Pipeline GOG Galaxy Pipeline 2.0 games in-development
  • 40. 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
  • 41. GOG Galaxy Pipeline 2.0 Proponowane rozwiązania • Rezygnacja z budowania gry do jednego pliku • Stworzenie narzędzi do automatycznego budowania oraz wrzucania gier
  • 42. 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
  • 43. Budowa i działanie systemu - Struktura gry 2.0 GAME_PL.DAT GAME.EXE GAME_PL.DAT GAME_EN.DAT GAME.EXE GAME_EN.DATGAME.EXE MANIFEST_PL MANIFEST_EN
  • 44. 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 zmian • Upload dyferencyjny
  • 45. 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
  • 46. GOG Galaxy Pipeline Nowa usługa webowa - Game Receiver GOG Galaxy Pipeline 2.0
  • 47. 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
  • 48. 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
  • 49. CONTENT SYSTEM Budowa i działanie systemu - upload gry 2.0 CLOUD STORAGE GOG GALAXY desktop web GAME BUILDER GAME RECEIVER CLOUD STORAGE
  • 50. CONTENT SYSTEM Budowa i działanie systemu - upload gry 2.0 CLOUD STORAGE GOG GALAXY desktop web GAME RECEIVER CLOUD STORAGE CONTENT SYSTEM
  • 51. GOG Galaxy Pipeline Nowa usługa webowa - Dev Portal GOG Galaxy Pipeline 2.0
  • 52. Nowa usługa webowa - Dev Portal • Interfejs graficzny do Content System API • Możliwość publikacji wybranej wersji gry w GOG Galaxy • Technologie: Varnish Cache, PHP 5.6, Symfony2, HHVM, AngularJS
  • 53. CONTENT SYSTEM Budowa i działanie systemu - Dev Portal CLOUD STORAGE GOG GALAXY desktop web GAME RECEIVER CLOUD STORAGE CONTENT SYSTEM DEV PORTAL
  • 55. GOG Galaxy Pipeline Plany na przyszłość
  • 56. Plany na przyszłość • Pełna kontrola developerów nad całością procesu wydawania gier? • Obsługa wielu gier AAA • Dalsza optymalizacja oraz usprawnianie systemów • PHP7 ?
  • 57. Podsumowanie wydania Wiedźmina 3 na GOG Galaxy hvps://www.youtube.com/watch?v=9vh5mxm5Jy8
  • 59. SZUKAMY WEBDEVÓW Więcej informacji u mnie lub na stronie GOG.com/work