Mountkirk Games builds all of their games with some server-side integration. And has historically used cloud providers to lease physical servers. A few of their games were more popular than expected. And they had problems scaling their application servers, MySQL databases, and analytics tools. Mountkirk's current model is to write games statistics to files. And send them through an ETL tool that loads them into a centralized MySQL database for reporting. Mountkirk Games has an unexpected hit. Predictions were that there would be a small surge of interest at the beginning, but that demand would flatten out. When the game debuted, initial players reported the game on social media and the reports went viral. Instead of flattening, demand started growing exponentially. The two greatest problems for a game company are if nobody wants to play your game, and if everybody wants to play your game. Success is difficult because the company needs to scale its IT infrastructure fast to maintain the quality of the user's experience. The popularity of the game created problems with the previous vendor when scaling could not keep pace. MountKirk Games wants to adjust their infrastructure to solve their scaling problems. They have application servers, MySQL database for storing user information and game state. And they're interested in using analytics to improve their games. They have a design plan in place, but ran into issues with a previous cloud provider. Their immediate business goals are to expand into new markets globally. They want to track and reduce the amount of time their systems go down and their games are not available. They need some kind of metrics or key performance indicators to measure speed, stability, and other qualities. So they can start managing the qualify of the user experience by making intelligent choices in the game infrastructure. As is often the case, the planned or presumed solution might not be ideal. You have to be careful when discussing this, right? You don't know who was in involved in defining that great plan. It might be a good design. It might have some areas that have to be changed. The important thing is to first acknowledge the existence of the planned solution. Then, to define the solution separately, so you can understand the strengths and weaknesses of the proposal. That way, you can make reasoned suggestions about what to change to improve the plan. The company has a strong focus on analytics and custom metrics. In other words, it's great to be able to scale instances based on CPU load. But how well does that really indicate resource consumption by users? It could be that some offer factors like the number of users currently playing should be a factor in scaling. Finally, you should consider potentially different storage solutions for analytic data and for game data. The data's different, it's accessed differently and at different times. So it would make sense that each kind of data and use case should be examined separately to determine the best candidates for inclusion. The existing environment consists of application servers and data centers that are working acceptably, and handling the current game load. So there's no immediate pressure to replace those servers or migrate them to the cloud. On the other hand, any new games ought to be implemented using the new or future solution. The MySQL database is creating scaling issues and it needs to be replaced. Analytics works like this, the statistics are written out to files and ETL process, that's Extract, Transfer, and Load, stores the statistical data in MySQL. Then reports are generated from the data. Storing the analytics in MySQL doesn't sound ideal. It really isn't the right tool for that job. Here are some technical watch points. The solution should have global load balancing, autoscaling, low latency. And it should be able to catch up and not lose customer game information, due to a backlog if game use spikes and it takes some time to scale up. They're concerned about security so they want to use a hardened Linux distribution. They need a transactional type database for user profiles and game state information. They need to use SQL to query up to 10 terabytes of historical information. And a manged NoSQL database and time series database for Analytics. It would be ideal if the game server metrics could be ingested directly into the new analytics framework, and not written out as files and ETL ingested. Sometimes games are played on mobile phones and tablets. Due to the slow and inconsistent mobile network, game data could arrive late, and statistics data is regularly uploaded from the mobile devices. Take a few minutes to define your solution. What elements would you use? How would you satisfy the business needs while minding the technical watch points?