Now that we’re well grounded in what the term Serverless means, and we have an idea of what various Serverless components and services can do, how do we combine all of these things into a complete application? What does a Serverless application look like, especially in comparison to a non-Serverless application of comparable scope? These are the questions that we’re going to tackle in this chapter.
The application that we’ll be using as a reference is a multiuser, turn-based game. It has the following high-level requirements:
Mobile-friendly user interface
User management and authentication
Gameplay logic, leaderboards, past results
We’ve certainly overlooked some other features you might expect in a game, but the point of this exercise is not to actually build a game, but to compare a Serverless application architecture with a legacy, non-Serverless architecture.
Given those requirements, a non-Serverless architecture for our game might look something like Figure 2-1:
A native mobile app for iOS or Android
A backend written in Java, running in an application server, such as JBoss or Tomcat
A relational database, such as MySQL
In this architecture, the mobile app is responsible for rendering a gameplay interface ...