Google właśnie zaklepał sobie miejsce na rynku gier. Będą superserwery dla graczy
Zazwyczaj grając ze znajomymi w grę online, nie zastanawiamy się, jaka infrastruktura jest potrzebna po stronie serwera. A przecież konieczna jest specjalna, zazwyczaj złożona aplikacja serwerowa, umożliwiająca nam wspólną walkę.
Niezależnie od tego czy jest to prosty FPS, dobierający graczy i zapewniający synchronizację ruchów postaci w ciągu milisekund, czy gra RTS, w której również możemy rozmawiać przez mikrofon i słuchawki, czy też duży świat typu MMORPG, w którym każda nasza akcja jest widziana potencjalnie przez tysiące innych postaci, podstawowym słowem powtarzanym przez inżynierów budujących takie rozwiązania jest skalowalność.
To właśnie problemy ze skalowalnością odpowiadają za większość kłopotów, na które skarżą się gracze online. Pamiętacie pad serwerów logowania do usługi battle.net w dniu premiery Diablo III? To właśnie problem ze skalowalnością - usługa logowania nie wytrzymała zwiększonego obciążenia, spowodowanego równoczesnymi próbami autoryzacji setki tysięcy graczy.
Mikroserwisy na ratunek
W rozwiązaniach klasy enterprise od lat rezygnowano z dużych, monolitycznych systemów i zamieniano je na małe, niezależne moduły, które mogły startować szybko i po wypełnieniu swojego zadania zakończyć swój cykl życia. Wiele takich modułów, nie zużywając zasobów, może być uruchomionych równocześnie. Taki system sam się balansuje: częściej wykorzystywane usługi są uruchamiane w większych ilościach.
W sukurs takiemu podejściu przyszło powstanie rozwiązań kontenerowych, umożliwiających tworzenie izolowanych środowisk o dokładnie ustalonych właściwościach. Działają tak samo uruchomione na laptopie programisty lub u klienta. To właśnie w kontenerach mikroserwisy poczuły się najlepiej.
Brakowało jeszcze jednego elementu scalającego wszystko w całość - systemu, który zapewni skalowanie, uruchamianie i zarządzanie kontenerami. Tak powstały tzw. systemy orkiestrujące. Najbardziej popularnym jest stworzony w Google Kubernetes.
Google jest autorytetem, jeśli chodzi o kontenery - Google Search, Gmail oraz YouTube - wszystkie chodzą na kontenerach. Jak wiadomo, są to usługi stabilne i dobrze skalowalne.
Czas na skalowanie serwerów gier
Google we współpracy z Ubisoft rozpoczął prace nad platformą Agones - biblioteką wykorzystującą Kubernetes do uruchamiania skalowalnych serwerów dla gier. Software, w tej chwili w wersji alfa, ma bardzo prostą konfigurację. Wystarczy zdefiniować serwer, który ma być uruchomiony oraz warunki jego cyklu życiowego: jakie parametry Agones powinien monitorować i jak podejmować decyzje na temat uruchomienia kolejnego bądź zakończenia bieżącego. Przykładowo: przy obciążeniu powyżej określonego procenta CPU, należy uruchomić kolejną instancję.
Google przestrzega aby nie używać Agones jeszcze w środowisku produkcyjnym. Dostarczone przykłady pozwalają na uruchomienie przykładowego serwera, będącego odpowiednikiem programu Hello World. Potrafi on odpowiedzieć na pytanie o swój status, i zakończyć żywot. Jednak dostarczenie SDK (ang. software development kit), udostępnienie kodu źródłowego napisanego w Go, oraz zainteresowanie Ubisoftu, każe wierzyć, że system szybko się rozwinie i zacznie być wykorzystywany przez producentów gier.