During the production of Disciple and in some previous ventures, I've gotten familiar with the pros and cons of several different types of hosting. I'm not going to share my opinions on specific hosting providers, but I do want to share my learnings on types of hosting and what we have found worked the best.
First, there are 4 main types of hosting that one considers:
Each of these has pros and cons, which I will cover.
These are the cheap hosted accounts which you share resources on a server (or cluster of servers). These aren't a fit for a game of this type, but there are many instances in which they would work well. For instance, if I were to be creating a traditional website, there is no reason to start on anything larger than a shared hosting account. Then, after you outgrow that, you can move to one of the larger hosting types.
- Easy management, usually with nice control panel
- No need to get your hands dirty with setting up web or database servers
- Usually very limited resources. If you grow quickly you can easily hit the limits of this type of account.
- You can only run the types of code they support. Usually Java and more advanced services are not available
- Performance is usually mediocre at best since they tune the servers to support everyone, rather than how your code needs to run
When to use it:
- Early stage of a startup (alpha or beta)
- Simple web applications
- Company landing pages
Co-located hosting is where the provider provides the power, bandwidth, and rack space and you provide the servers. This means that you're responsible for either purchasing or leasing the server.
- Can be cheaper in the long-run than dedicated hosting
- You can get great performing servers that fit your needs exactly
- Expensive cash up-front for servers or a long-term lease commitment
- Rack space is still not cheap
- You are responsible for most aspects of server management
When to use it:
- You're business plan is set and you have predictable revenue streams
- You need beefier servers than most hosting providers will give you at reasonable costs
Dedicated hosting provides a good balance of cheap start-up costs and great performance with the ability to run anything you want. There are many "managed" hosting providers out there too that will handle the management aspects of your server, such as monitoring and taking care of simple problems for you.
- Little to no start up costs
- Great performance
- In many instances less management than co-located servers
- Often there are long-term contracts, especially for "managed" hosting
- You will still manage many aspects of your servers
- Usually high monthly costs
When to use it:
- You need more power than a shared hosting provider, but aren't ready for the commitment of purchasing or leasing servers
While this technology isn't new, virtualization technology has greatly improved in the last several years to the point that this has created a whole new market segment in hosting. This started slowly with "Virtual Private Servers" (VPSs) and has morphed into what is now called cloud computing. Cloud computing is typically a combination of technologies - virtual servers and then a mechanism for users to either manually or programatically provision new servers on-demand. This has been a boon for startups and is our current choice of hosting environments.
- Near-instantaneous server provisioning
- Great environment for building scalable applications
- No setup costs
- Advanced features available such as server cloning and backups
- Typically high-performance servers are available
- For the price of 1 dedicated servers, you may get 6 virtual servers
- Managing all aspects of large number of virtual servers can create management overhead
- A single virtual server is not as powerful as dedicated servers, but much more powerful than shared servers
When to use it:
- Any startup
- A great alternative to shared hosting providers for a small increase in price
- An application that needs horizontal scalability
At this point, it should be evident why we are using a cloud provider. With any online game, the demand can fluctuate quickly and with little to no notice. If we were using a dedicated or co-located provider, our only solution would be to have servers sitting idle "just in case". With our current provider, we can clone an existing web, application, or database server in about 15 minutes and immediately have additional capacity. We think that this gives us the best chance to make sure that when you, our players, come to our game, you can get the best experience possible.
I hope this little bit of tech insight has been useful and I'll try to answer any questions anyone may have in the comments.