Back to search

Talk to us about what makes Star Citizen in the cloud such a unique thing.

TL;DRAhmed Shaker says stateful MMOs fit the cloud poorly, since cloud design assumes stateless, failure-prone resources, and few others run game servers efficiently in the cloud, so the team is not simply lifting bare-metal setups onto VMs.

Ahmed ShakerPrincipal DevOps Engineer

Not to go too far back, when the cloud movement started, people said, it's not for everyone. You cannot just take your app and put it in the cloud in a VM, because it doesn't matter whether you have it on bare metal, have it in a VM in a small host provider, or in one of the big public clouds, you have to use the other abstraction layers that the cloud provides to you. The cloud provides to you object storage, block storage that can move between VMs. VMs can be migrated. Different concepts of firewall, different concepts of VPN, and everything is offered to you as a service. That's a lot of good work happening for you, saving you and your team from doing all this tedious work that's technically reinventing the wheel. However, you are relying on resources shared among other people. So everything about the cloud provider tells you, you gotta design for failure. Expect me to go down at any moment, expect this to happen, expect this to change. And the statelessness. So in websites, most of the time, people try to attain what we call statelessness, like there's no state within the ephemeral resource that might die at any moment, and I have the state saved outside in redundant form that can be accessed in different ways, which is the basic concept of distributed systems. Having this in the web is like being a first-class citizen in a country that talks your language. Everyone does this. And you look at everyone else's playbook and steal a page from them and just do it. Games are the complete opposite. They are very, very stateful. An MMO is extremely stateful. It's not even match-based. It's not session-based. So you expect that you leave your machine running for 24 hours, if you can hold out for 24 hours playing, and you want this to happen. And also, you're not going to tolerate having a 404 or a 502 that you see in websites in the middle of that huge epic game where you get an amazing loot, whatever you are looking for. So given this sort of stability in the cloud, it's not really easy. And dealing with the cloud quirks, because yeah, the cloud does a lot of good work for me, but also takes a lot of control out of my hands. Oh, I could have made this thing work in this way, and stopped the packets here, and only replicated this half, and I can't. I'm using whatever abstraction layer the cloud provider provided me, and the tools I'm using, just like anyone else. So the challenge is, MMO games are an alien in the cloud, while all the web technology are the first-class citizen. So we are this kind of alien; no one else is doing what we are. We have been watching a lot of companies when they go and talk at conferences about their cloud adoption; not a lot of people really manage to have the simulator, which is the dedicated game server, in the cloud efficiently, having everything working fine, and that's the challenge. There are people that did what I mentioned in the beginning: they took their original data center bare metal infrastructure and carried it and put it in the cloud on VMs, the same exact way. That's not what we're trying to do, and it's a challenge because, to get a tiny bit technical, if you want to use a new tool in the cloud or a new service in the cloud in a modern language, and your use case is just a CRUD, something where you create and remove records and all of that, you would find an example within five minutes and you will look at it and you just saved yourself a lot of time and then move from there. Using C++, using a game, that's a different thing to deal with.