Serverless: A Guide for Game Server
In cloud computing, serverless has emerged as the new poster child.
Championed by services like AWS Lambda, serverless architectures promise a revolution and even the way we think about application deployment and scaling.
As businesses continue to seek agile and cost-effective solutions, the allure of serverless – with its promise of eliminating server management and automatic scaling – has gained significant traction.
This growing fascination isn't just confined to traditional web applications; it has sparked interest across various domains, prompting experts to probe its feasibility in diverse settings, including the gaming world.
What is Serverless Computing?
At its essence, serverless computing is a cloud-computing model that can execute backend functions in response to events, all without the need for a traditional server setup. The name might be a tad misleading; servers are still involved, but developers are freed from managing them. Herein lie its prime benefits. With serverless:
Scalability becomes inherently automatic. As user demand fluctuates, the cloud provider manages to scale up or down, ensuring optimal performance.
Infrastructure Management is off your plate. No more server maintenance, patches, or updates; the cloud provider handles it all.
Cost Efficiency is paramount. Users are billed for the actual compute power they use, often calculated in milliseconds of function execution, eliminating wasteful over-provisioning.
This new paradigm is championed by major cloud providers, with AWS Lambda leading the charge. Other notable entrants include Google Cloud Functions, catering to Google Cloud Platform users, and Azure Functions, Microsoft's answer to the serverless trend. Each offers unique features and integrations, but all share the core philosophy of reducing the operational burden on developers and streamlining application deployment.
While some also called container based applications “serverless”, the reality is that standard bodies only refer to Function as a Service (FaaS) as serverless. Containers typically come with more than a function executed in real-time, since they come with a binary and its entire set of libraries and modules. They are more related to microVM or standard VM than serverless.
The Landscape of Game Servers
Game servers are the unsung heroes behind our immersive multiplayer gaming experiences. These specialized servers coordinate, compute, and synchronize in-game events in real time. Essential requisites include low latency, high concurrency support, and robust state management to ensure every player's action is consistently reflected across all connected clients.
Two main server models dominate: authoritative and non-authoritative (e.g.s, peer-to-peer networking, network of relays). In the authoritative model, the server has the final say on the game state, making it a gatekeeper against cheats and inconsistencies. Making it mandatory for games with lots of operations, economies including shops, and performance/skill-based competitive games.
Conversely, non-authoritative servers rely more on client-side calculations, potentially making them vulnerable to exploits.
Central to both, however, is the need for persistent connections, ensuring uninterrupted gameplay and real-time interaction, aspects that aren’t always compatible with every cloud computing model.
Why Serverless Isn't Always a Perfect Fit with Game Servers
The groundbreaking rise of serverless computing, with its promise of scalability and reduced overhead, might seem like the panacea for all backend needs. However, when juxtaposed with the intricate demands of game servers, several disparities emerge:
Ephemerality of Serverless Functions
At the heart of serverless lies its ephemeral nature. Serverless functions, like those on AWS Lambda, are designed to spring into action, execute a task, and then dissipate, all within a brief timespan. This transient lifecycle clashes with the demands of game servers with persistent instances such as MMOs or games with user-generated content, which thrive on persistent connections. Players engage in games for extended periods, requiring servers to maintain consistent, uninterrupted connections – a feature starkly absent in the serverless world.
State Management Challenges
Serverless functions are inherently stateless. Each function invocation is isolated, with no retained memory of past interactions. Conversely, game servers are stateful maestros, deftly managing the evolving game state, from player scores to in-game positions. When using serverless for such tasks, developers face the daunting challenge of maintaining state across disparate, disconnected functions, leading to complexities and potential inconsistencies.
Latency Concerns
While serverless solutions excel in many areas, they aren't immune to "cold starts" – the delay experienced when invoking an idle function. In gaming, waiting on an idle game servers can lead to churn (34% of gamers will exit a game completely if they experience delays), or where split-second reactions can be the difference between victory and defeat where such latency spikes are untenable. The real-time responsiveness demanded by games highlights the criticality of consistent, low-latency experiences.
Cost Implications
Serverless's pay-per-execution model is enticing for sporadic, brief tasks. However, game servers, with their continuous, long-running processes, might find serverless less cost-effective. Prolonged executions can rack up costs, potentially surpassing traditional or dedicated server expenses.
Language supported
At its root, a serverless platform requires that you provide the code (aka the function) to be executed. It means you can’t provide a standard build from a game engine. It also means you may not be able to use your preferred language if it is not supported by the serverless platform.
Use Cases Where Serverless Works in Gaming
While serverless architectures might not be a perfect fit for core game server operations, they shine in specific gaming-related scenarios. These are often tasks that are non-authoritative and non-continuous in nature:
Leaderboards: Quickly updating and retrieving player rankings or scores can be efficiently handled by serverless functions. These periodic updates are perfect for the ephemeral nature of serverless.
Player Authentication: The sporadic act of verifying player credentials when logging in or signing up is well-suited for serverless. Its scalability ensures smooth authentication, even during peak user loads.
Notifications: Sending out alerts, game updates, or player notifications can be offloaded to serverless functions. These are isolated tasks that don’t require persistent connections, tapping into serverless's strengths.
Web games: ephemeral games based on web standard (I.e. html5) can benefits from having a server side element which runs in a FaaS/serverless. The logic required for smaller, casual games may be small enough for those architectures.
Alternatives to Serverless for Game Servers
When considering the stringent requirements of game servers, especially in ensuring consistent, real-time experiences, alternatives to serverless become pivotal. Here are some tried-and-true solutions tailored for the gaming realm:
Dedicated Game Server Solutions: Traditional, dedicated servers remain a staple in the gaming community. With full control over the hardware and software, developers can optimize for performance, security, and customizability, ensuring games run without a hitch. A minimum size studio is required as hosting physical servers require a lot of funding and resources.
Cloud-based VMs: Virtual Machines (VMs) on cloud platforms like AWS EC2 or Google Compute Engine offer a balanced blend of flexibility and power. Developers can scale resources as needed, tapping into the vast infrastructure of cloud giants. We are starting to see a trend with baremetal as a service. While they provide some of the benefits of standard cloud (I.e. on-demand), the boot time makes this a hard sell for quick scale up in case of player surge. They are seen as more performant than virtual machine, but those are not true anymore as the latest generation of hypervisors are capable of getting the most of cpu and pass it along to virtual machines.
Managed Game Server Solutions: Services like AWS GameLift or Google Cloud Game Servers initial goal was to simplify game server hosting with a fully managed service. They combined the benefits of cloud scalability with specialized tools tailored for gaming, handling tasks like matchmaking, player sessions, and server scaling. However, their complexity and provider-locked hosting with incremental fees for each region makes them an extremely expensive proposition. They do not solve latency either, a massive source of user churn with 50% of users exiting the game because of it, due to being tied to the limited footprint of their locations. Fortunately, services like Edgegap overcomes these limitations with multicloud cloud network, that automatically deploys game servers globally to all locations, and best of all – pay as player’s play usage-based pricing.
Conclusion
In the rapidly evolving landscape of technology, it’s tempting to jump aboard the latest trends. However, as the serverless vs. game server conundrum highlights, not every innovation is universally apt.
The intricate dance of real-time interactions, persistent connections, and nuanced state management in gaming underscores the paramount importance of tailored infrastructure.
While serverless offers transformative solutions in specific domains, game servers demand a more specialized approach. To developers and gaming enterprises: before adopting the next big thing, conduct a holistic assessment of your game server needs. We do see a future where serverless becomes part of the backend, for certain use case and payload involved in gaming, but not yet for the authoritative server itself.
The key to crafting flawless gaming experiences lies not just in embracing innovation but in ensuring that the chosen technology aligns seamlessly with the unique challenges and requirements of the gaming world.