GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...GOG.com dev team
GWINT jako gra online nastawiona na obsługę milionów graczy wymaga wyjątkowo skalowalnej architektury. Opowiemy między innymi o tym:
– jak API zbudowane na Symfony w modelu mikro serwisów wykorzystuje asynchroniczną komunikację pomiędzy usługami i klientem (system notyfikacji),
– jak optymalizujemy procesowanie zdarzeń wymagających współpracy kilku usług (kolejki zadań), jak monitorujemy i testujemy integrację poszczególnych webservice’ów. Przewiną się także technologie takie jak: PHP7, HHVM, RabbitMq, Redis,
Krzysztof Sobczak GOG.com Team
Adrian Chlubek: Dowiemy się, czym jest Swoole, w jakim celu został stworzony i jakie funkcjonalności oferuje – wszystko to na żywych przykładach. Przede wszystkim jednak spróbujemy odpowiedzieć sobie na pytanie: czy używanie Swoole ma sens?
Repozytorium z przykładami: https://github.com/achlubek/swoole_experiments
Dokumentacja Swoole: https://www.swoole.co.uk/docs/
Adrian Chlubek: Czy PHP jest gotowy na websockety? Czy architektura samego języka nie stoi na przeszkodzie? Zobaczymy jakie mamy możliwości pracy z Websocketami, porównamy trzy popularne rozwiązania umożliwiające taką komunikację, a następnie odpowiemy sobie na pytanie – czy to ma sens?
GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...GOG.com dev team
GWINT jako gra online nastawiona na obsługę milionów graczy wymaga wyjątkowo skalowalnej architektury. Opowiemy między innymi o tym:
– jak API zbudowane na Symfony w modelu mikro serwisów wykorzystuje asynchroniczną komunikację pomiędzy usługami i klientem (system notyfikacji),
– jak optymalizujemy procesowanie zdarzeń wymagających współpracy kilku usług (kolejki zadań), jak monitorujemy i testujemy integrację poszczególnych webservice’ów. Przewiną się także technologie takie jak: PHP7, HHVM, RabbitMq, Redis,
Krzysztof Sobczak GOG.com Team
Adrian Chlubek: Dowiemy się, czym jest Swoole, w jakim celu został stworzony i jakie funkcjonalności oferuje – wszystko to na żywych przykładach. Przede wszystkim jednak spróbujemy odpowiedzieć sobie na pytanie: czy używanie Swoole ma sens?
Repozytorium z przykładami: https://github.com/achlubek/swoole_experiments
Dokumentacja Swoole: https://www.swoole.co.uk/docs/
Adrian Chlubek: Czy PHP jest gotowy na websockety? Czy architektura samego języka nie stoi na przeszkodzie? Zobaczymy jakie mamy możliwości pracy z Websocketami, porównamy trzy popularne rozwiązania umożliwiające taką komunikację, a następnie odpowiemy sobie na pytanie – czy to ma sens?
Core Web Vitals to metryki przygotowane przez Google w celu pomiaru wydajności aplikacji oraz User Experience. Są one składowymi wyniku “Performance” obliczanego przez narzędzie Lighthouse. W swojej prezentacji Marcin przybliży temat poszczególnych metryk, a następnie na kilku przykładach postaram się zaprezentować problemy wpływające na niższy wynik oraz jak sobie z nimi poradzić. Całość prezentacji opierać się będzie na prostej aplikacji Next.js, której wynik będziemy starać się poprawić, korzystając z kilku ciekawych narzędzi.
Czym tak naprawdę jest deployment, co może pójść nie tak i w jaki sposób możemy się przed tym zabezpieczyć, korzystając z Kubernetesa i jego ekosystemu. Zaczniemy od tego, jakie są rodzaje deploymentów, po czym wspomnimy dlaczego należy uważac z healthcheckami. Czym jest Circuit Breaker i jak może nam pomóc? Jak wygląda Canary Analysis w praktyce? Odpowiedzi na te wszystkie pytania z pewnością sprawią, że przycisk “Deploy To Production” przestanie być taki straszny.
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
Niezależnie od tego, czy jesteście developerami, sysadminami, czy też DevOps Engineers – prawie na pewno mieliście doświadczenie z webowymi panelami dostawców usług infrastrukturalnych takich jak AWS, GCP czy też OVH. Z poziomu tych paneli da się “wyklikać” wszystko, czego potrzeba, ale… czy aby na pewno tędy droga? Środowiskiem bardziej naturalnym dla każdego inżyniera jest wszakże edytor tekstu (czy też IDE) oraz różnorakie polecenia wydawane komputerowi w formie skryptów. Czemu by więc z tego nie skorzystać? Jeśli od klikania bez możliwości pomyłki boli Was ręka, zainwestuj w podkładkę pod mysz… ale przede wszystkim wpadnij na prelekcję Piotra, na której to opowie o założeniach podejścia IaC, jego zaletach oraz przedstawi najpopularniejsze narzędzia.
LocalStack to framework udostępniający łatwe w użyciu mocki usług stosu AWS. Podczas prezentacji Maciej skorzystał z serwisu zbudowanego z użyciem serverlessowego Boilerplate autorstwa The Software House oraz skorzystał z takich usług AWS jak API Gateway, DynamoDB, Lambda, StepFunctions czy SQS. Następnie omówił podejście do testowania rozwiązania. Dzięki prezentacji możecie poznać wady i zalety LocalStack. A na koniec Maciej pokazuje przepływ testowy w GitHub Actions, który zwiększy pewność przyszłych zmian.
O tworzeniu rozwiązań mobilnych z punktu widzenia front-end dewelopera. Omówienie istniejących rozwiązań oraz głębsza analiza biblioteki NativeScript wraz z demem.
Demo #1: https://github.com/pawelkondraciuk/nativescript-hello-world-demo-1
Demo #2: https://github.com/pawelkondraciuk/sample-groceries-demo-2
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...PROIDEA
Krzysztof Rychlicki-Kicior
Language: Polish
Dawno temu, gdy w kodzie HTML królowały znaczniki FONT i MARQUEE, a zamiast AJAX-a stosowano ukryte ramki, błyskawiczną i dwustronną komunikację z serwerem można było osiągnąć jedynie za pomocą specjalnych wtyczek - np. we wszelkiej maści czatach królowała wówczas Java i applety. Z upływem lat sytuacja poprawiła się, dzięki zastosowaniu AJAX-a czy long pollingu, jednak wciąż była daleka od ideału. Na szczęście, obecnie programiści są w znacznie lepszej sytuacji - dzięki WebSocketom bez żadnego problemu są w stanie zaimplementować komunikację w czasie rzeczywistym, niezbędną np. do gier online, aplikacji do komunikacji czy aplikacji finansowych.
W ramach tego wykładu słuchacze zapoznają się z różnymi koncepcjami stosowanymi w komunikacji pomiędzy przeglądarką a serwerem HTTP, z uwzględnieniem WebSocketów. Oprócz tego zostaną przedstawione mechanizmy obsługi WS od strony serwera, na przykładzie Node.js i Socket.IO. Różne rozwiązania zostaną poddane porównaniu pod kątem wydajności. Mimo licznych zalet, WebSockety niosą za sobą pewne problemy - zostaną one również poddane analizie.
DynamoDB jest z nami od dłuższego czasu i pomimo rosnącej popularności dla części z nas logika kryjąca się za DynamoDB nie wydaje się być jasna. Wymaga od nas zmiany myślenia o strukturze danych, zmiany naszych przyzwyczajeń oraz dostosowania się do mocno wyznaczonych reguł. W swojej prezentacji Marcin postara się wytłumaczyć skąd biorą się różnice pomiędzy dobrze nam znanym światem SQL a światem NoSQL. Opowie również o tym, jak zacząć modelowanie tabel oraz czym są i do czego służą GSI.
Franciszek Krasowski: Zastanawialiście się kiedyś nad tym, czym jest PHP-PM? Jak działa? Jak wypada w porównaniu do innych popularnych rozwiązań? Czy jest wystarczająco stabilny? Franciszek Krasowski odpowie na wszystkie te pytania (a także na te, których jeszcze nie zadaliście).
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Mateusz Paprocki, PMP
Każdy zespół pracujący w środowisku mikroserwisów boryka się z podobnymi problemami: jak dbać o jakość kodu, organizować feature branche, testować zmiany, budować kolejne wersje aplikacji, zarządzać środowiskami, czy, finalnie, doprowadzić do automatycznych release’ów. W prezentacji przygotowanej przez trójmiejski software house Neoteric zobaczymy jedną z koncepcji rozwiązania problemów. Przygotujcie się na solidną dawkę Jenkinsa, Dockera, GitFlow oraz Sonara!
Kubernetes - 0 do 1 - 4Developers Warszawa 2019Michał Kurzeja
Kubernetes jest już praktycznie standardem jeśli chodzi o utrzymywanie i zarządzanie aplikacjami chmurowymi. Pozwala na łatwe skalowanie, wdrażanie nowych wersji w podejściu canary i rolling-upgrade, proste rollbacki, uruchamianie serverless i wiele więcej. Z pozoru może wydawać się trudny, ale tak naprawdę do uruchomienia wielu podstawowych scenariuszy nie potrzeba żadnej zaawansowanej wiedzy. Podczas prezentacji pokażę podstawowe założenia i jak składają się w jedną całość.
Presentation from 3Camp Tech meeting I took at 2016/11/15.
Asciinema from presentation:
* bower: https://asciinema.org/a/92748
* npm: https://asciinema.org/a/92752
* yarn: https://asciinema.org/a/92771
Nowe, potężne narzędzia do tworzenia stron internetowych pojawiają się niemal codziennie. My w zespole postanowiliśmy jednak cofnąć się o krok i postawić na to co proste, ale użyteczne. Efekt? Korzyści dla zespołu i dla klienta. Podczas prezentacji opowiem o tym, co zyskaliśmy oraz wprowadzę słuchaczy w świat Hugo – nowoczesnego generatora stron statycznych.
Los sistemas concentran grandes cantidades de datos que son susceptibles a destrucción, fraude, errores y abuso si no se implementan medidas de seguridad adecuadas. La seguridad busca garantizar la confidencialidad, integridad y disponibilidad de los datos. Los sistemas son vulnerables a amenazas como virus, hackers y desastres naturales que pueden destruir hardware, software y datos. La seguridad física es importante para prevenir accesos no autorizados a equipos y datos.
Core Web Vitals to metryki przygotowane przez Google w celu pomiaru wydajności aplikacji oraz User Experience. Są one składowymi wyniku “Performance” obliczanego przez narzędzie Lighthouse. W swojej prezentacji Marcin przybliży temat poszczególnych metryk, a następnie na kilku przykładach postaram się zaprezentować problemy wpływające na niższy wynik oraz jak sobie z nimi poradzić. Całość prezentacji opierać się będzie na prostej aplikacji Next.js, której wynik będziemy starać się poprawić, korzystając z kilku ciekawych narzędzi.
Czym tak naprawdę jest deployment, co może pójść nie tak i w jaki sposób możemy się przed tym zabezpieczyć, korzystając z Kubernetesa i jego ekosystemu. Zaczniemy od tego, jakie są rodzaje deploymentów, po czym wspomnimy dlaczego należy uważac z healthcheckami. Czym jest Circuit Breaker i jak może nam pomóc? Jak wygląda Canary Analysis w praktyce? Odpowiedzi na te wszystkie pytania z pewnością sprawią, że przycisk “Deploy To Production” przestanie być taki straszny.
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
Niezależnie od tego, czy jesteście developerami, sysadminami, czy też DevOps Engineers – prawie na pewno mieliście doświadczenie z webowymi panelami dostawców usług infrastrukturalnych takich jak AWS, GCP czy też OVH. Z poziomu tych paneli da się “wyklikać” wszystko, czego potrzeba, ale… czy aby na pewno tędy droga? Środowiskiem bardziej naturalnym dla każdego inżyniera jest wszakże edytor tekstu (czy też IDE) oraz różnorakie polecenia wydawane komputerowi w formie skryptów. Czemu by więc z tego nie skorzystać? Jeśli od klikania bez możliwości pomyłki boli Was ręka, zainwestuj w podkładkę pod mysz… ale przede wszystkim wpadnij na prelekcję Piotra, na której to opowie o założeniach podejścia IaC, jego zaletach oraz przedstawi najpopularniejsze narzędzia.
LocalStack to framework udostępniający łatwe w użyciu mocki usług stosu AWS. Podczas prezentacji Maciej skorzystał z serwisu zbudowanego z użyciem serverlessowego Boilerplate autorstwa The Software House oraz skorzystał z takich usług AWS jak API Gateway, DynamoDB, Lambda, StepFunctions czy SQS. Następnie omówił podejście do testowania rozwiązania. Dzięki prezentacji możecie poznać wady i zalety LocalStack. A na koniec Maciej pokazuje przepływ testowy w GitHub Actions, który zwiększy pewność przyszłych zmian.
O tworzeniu rozwiązań mobilnych z punktu widzenia front-end dewelopera. Omówienie istniejących rozwiązań oraz głębsza analiza biblioteki NativeScript wraz z demem.
Demo #1: https://github.com/pawelkondraciuk/nativescript-hello-world-demo-1
Demo #2: https://github.com/pawelkondraciuk/sample-groceries-demo-2
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...PROIDEA
Krzysztof Rychlicki-Kicior
Language: Polish
Dawno temu, gdy w kodzie HTML królowały znaczniki FONT i MARQUEE, a zamiast AJAX-a stosowano ukryte ramki, błyskawiczną i dwustronną komunikację z serwerem można było osiągnąć jedynie za pomocą specjalnych wtyczek - np. we wszelkiej maści czatach królowała wówczas Java i applety. Z upływem lat sytuacja poprawiła się, dzięki zastosowaniu AJAX-a czy long pollingu, jednak wciąż była daleka od ideału. Na szczęście, obecnie programiści są w znacznie lepszej sytuacji - dzięki WebSocketom bez żadnego problemu są w stanie zaimplementować komunikację w czasie rzeczywistym, niezbędną np. do gier online, aplikacji do komunikacji czy aplikacji finansowych.
W ramach tego wykładu słuchacze zapoznają się z różnymi koncepcjami stosowanymi w komunikacji pomiędzy przeglądarką a serwerem HTTP, z uwzględnieniem WebSocketów. Oprócz tego zostaną przedstawione mechanizmy obsługi WS od strony serwera, na przykładzie Node.js i Socket.IO. Różne rozwiązania zostaną poddane porównaniu pod kątem wydajności. Mimo licznych zalet, WebSockety niosą za sobą pewne problemy - zostaną one również poddane analizie.
DynamoDB jest z nami od dłuższego czasu i pomimo rosnącej popularności dla części z nas logika kryjąca się za DynamoDB nie wydaje się być jasna. Wymaga od nas zmiany myślenia o strukturze danych, zmiany naszych przyzwyczajeń oraz dostosowania się do mocno wyznaczonych reguł. W swojej prezentacji Marcin postara się wytłumaczyć skąd biorą się różnice pomiędzy dobrze nam znanym światem SQL a światem NoSQL. Opowie również o tym, jak zacząć modelowanie tabel oraz czym są i do czego służą GSI.
Franciszek Krasowski: Zastanawialiście się kiedyś nad tym, czym jest PHP-PM? Jak działa? Jak wypada w porównaniu do innych popularnych rozwiązań? Czy jest wystarczająco stabilny? Franciszek Krasowski odpowie na wszystkie te pytania (a także na te, których jeszcze nie zadaliście).
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Mateusz Paprocki, PMP
Każdy zespół pracujący w środowisku mikroserwisów boryka się z podobnymi problemami: jak dbać o jakość kodu, organizować feature branche, testować zmiany, budować kolejne wersje aplikacji, zarządzać środowiskami, czy, finalnie, doprowadzić do automatycznych release’ów. W prezentacji przygotowanej przez trójmiejski software house Neoteric zobaczymy jedną z koncepcji rozwiązania problemów. Przygotujcie się na solidną dawkę Jenkinsa, Dockera, GitFlow oraz Sonara!
Kubernetes - 0 do 1 - 4Developers Warszawa 2019Michał Kurzeja
Kubernetes jest już praktycznie standardem jeśli chodzi o utrzymywanie i zarządzanie aplikacjami chmurowymi. Pozwala na łatwe skalowanie, wdrażanie nowych wersji w podejściu canary i rolling-upgrade, proste rollbacki, uruchamianie serverless i wiele więcej. Z pozoru może wydawać się trudny, ale tak naprawdę do uruchomienia wielu podstawowych scenariuszy nie potrzeba żadnej zaawansowanej wiedzy. Podczas prezentacji pokażę podstawowe założenia i jak składają się w jedną całość.
Presentation from 3Camp Tech meeting I took at 2016/11/15.
Asciinema from presentation:
* bower: https://asciinema.org/a/92748
* npm: https://asciinema.org/a/92752
* yarn: https://asciinema.org/a/92771
Nowe, potężne narzędzia do tworzenia stron internetowych pojawiają się niemal codziennie. My w zespole postanowiliśmy jednak cofnąć się o krok i postawić na to co proste, ale użyteczne. Efekt? Korzyści dla zespołu i dla klienta. Podczas prezentacji opowiem o tym, co zyskaliśmy oraz wprowadzę słuchaczy w świat Hugo – nowoczesnego generatora stron statycznych.
Los sistemas concentran grandes cantidades de datos que son susceptibles a destrucción, fraude, errores y abuso si no se implementan medidas de seguridad adecuadas. La seguridad busca garantizar la confidencialidad, integridad y disponibilidad de los datos. Los sistemas son vulnerables a amenazas como virus, hackers y desastres naturales que pueden destruir hardware, software y datos. La seguridad física es importante para prevenir accesos no autorizados a equipos y datos.
Aneta describes finding a secret garden within herself after feeling alone, sad, and lost despite outward appearances of success. She realized she had lost herself by living for others and changing in ways that were "right" for people but wrong for her. After initially finding ruins, she discovered love, music, and life within her soul by rebuilding her inner garden one plant and seed at a time. This marked not an end but a new beginning.
La Unión Europea ha acordado un paquete de sanciones contra Rusia por su invasión de Ucrania. Las sanciones incluyen restricciones a las transacciones con bancos rusos clave y la prohibición de la venta de aviones y equipos a Rusia. Los líderes de la UE esperan que las sanciones aumenten la presión económica sobre Rusia y la disuadan de continuar su agresión contra Ucrania.
This seminar will help you develop strategies to make reading for your assignments and your dissertation more manageable and effective. We will consider:
•Reading in a more focused way: selecting appropriate reading techniques to suit your purposes
•Carrying out the critical readings that underpin strong essays and dissertations
•Effective note-taking strategies to help you organise your material and map your critical thinking
Deploying Elastic Java EE Microservices in the Cloud with DockerPayara
This document discusses how to deploy Elastic Java EE microservices in the cloud using Docker. It describes creating a simple RESTful microservice using JAX-RS and JCache that is packaged into a Docker container. The Docker container is then deployed to AWS Elastic Beanstalk, which automatically handles scaling the microservice across multiple containers behind a load balancer. The overall goal is to show how to quickly develop, package, test, and deploy microservices to the cloud using lightweight Java EE technologies like Payara Micro, Docker, and Elastic Beanstalk.
Migrating From Applets to Java Desktop Apps in JavaFXBruno Borges
This document discusses migrating from Java applets to Java desktop applications using JavaFX. It begins with a brief history of why applets were used and how their future is tied to browser support. It then discusses how to seamlessly migrate an applet-based application to a Java desktop application using JavaFX that embeds the original website and allows it to reuse existing Java code. Finally, it discusses distribution options for the new Java desktop application model.
La Unión Europea ha propuesto un nuevo paquete de sanciones contra Rusia que incluye un embargo al petróleo. El embargo prohibiría las importaciones de petróleo ruso por mar y limitaría las importaciones por oleoducto. Este embargo se aplicaría gradualmente durante los próximos seis meses para dar tiempo a los países miembros de la UE para encontrar fuentes alternativas de suministro.
Securing the Manufacturing Digital ThreadFrank Backes
This document discusses securing the manufacturing digital thread and outlines reasons for improving security such as business stability, safety, customer requirements, and legal liabilities. It notes potential consequences of security breaches like loss of production, injury, IP theft, and damaged reputation. The document recommends assembling a cross-functional team and following an agile approach to security that starts with one project like network segregation and allows for iterative improvement.
Mobile Applikationen sind ein wichtiger Baustein auf dem Weg ins digital Business. Die Präsentation bietet einen Überblick über Möglichkeiten und Wege zur Digitalisierung mit mobilen Applikationen.
Weitere Vorträge, die wir auch gern in Ihrem Unternehmen halten, finden Sie unter: https://www.iks-gmbh.com/impulsvortraege
Podsumowanie prac prowadzonych przez Open-RnD w ramach projektu badań przemysłowych metod analizy obrazu stereoskopowego 3D. Projekt współfinansowany przez NCBiR w ramach programu Demonstrator+.
4Developers: Jarek Wojczakowski- Technologie w świecie gier mobilnychPROIDEA
O tym, jak wygląda życie i świat programisty gier mobilnych - z jakimi wyzwaniami można się spotkać, jakie rozwiązania wykorzystywać oraz dlaczego w ogóle warto. Case Study projektu Real Boxing 2 CREED TM, oficjalnej gry mobilnej amerykańskiej superpordukcji “Creed”.
Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...Kainos Polska
O Jenkinsie lub podobnych narzędziach słyszał chyba każdy deweloper i każdy ops. Dla jednych i drugich jest to bardzo często główne okno, przez które widać co się dzieje w projekcie jak i miejsce, gdzie można mieć bezpośredni wpływ na każdy etap kodu „przepływającego” z maszyn deweloperów na produkcję. O sile Jenkinsa stanowi mnogość wszelkiego rodzaju dodatków i nieskończona możliwość ich konfiguracji. Na przykładach z obecnego projektu chcę pokazać, jakie konkretnie pluginy i rozwiązania ułatwiają nam życie.
Kivy to biblioteka pythonowa do tworzenia wieloplatformowych aplikacji GUI.
Samples: https://github.com/daftcode/pywaw_kivy_na_androidzie/blob/master/README.md
Similar to Dystrybucja gier w świecie online, przykład architektury webowego systemu rozproszonego 2 (20)
In-depth caching in Varnish - GOG Varnish Meetup, march 2019GOG.com dev team
You think Varnish can cache responses by URL only? Not even close. Learn all different caching strategies available in Varnish, their benefits and consequences of usage. Learn how to and when to queue requests for the same endpoint, how to handle requests with conditional caching headers and how to have two levels of cache by tagging the responses.
The document discusses building applications without frameworks by using Symfony components independently. It describes how to handle HTTP requests and responses with the HttpFoundation component, map URLs to routes with the Routing component, manage service dependencies with DependencyInjection, and build an application kernel and controllers to tie it all together without relying on an existing framework.
Versioning challenges in micro services of GwentGOG.com dev team
This document discusses API and data versioning challenges for microservices in a game development context. It covers when and how to introduce versioning, supporting multiple concurrent versions, and dropping old versions. Key points include gradually introducing versioning after initial launch without it, using semantic versioning strategies, and duplicating database tables and foreign keys to support multiple data schemas concurrently. Orchestrating game servers for different versions and monitoring upgrades are also addressed.
Event sourcing w pigułce czyli podróże w czasie i odporność na coraz to bardziej kreatywne wymagania biznesowe. Kiedy, jak i po co tworzyć naturalny log wydarzeń Twojej aplikacji - plusy i minusy wzorca, przykłady implementacji, event sourcing a CQRS.
Design Thinking Workshop: Empathy in the User ExperienceGOG.com dev team
Wprowadzenie do Design Thinking oraz warsztaty z empatii w projektowaniu User Experience. Warsztaty odbyły się w czasoe WUD na SWPS we Wrocławiu.
World Usability day, SWPS, Wrocław, 2015.11.14
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ść
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
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
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
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
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!
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
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
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
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 ?