V2 Cloud Servers
Cloud Provide Business Scenario and Hosting Recommendation
Possible V2 hosting scenarios: Host V2 application instances on:
- Our own hardware, which we purchase and place in data centers
- Rent dedicated servers from data centers
- Virtual hosts provided by cloud providers
Given that we uncertain how rapidly our V2 business will evolve, we cannot make definitive plans for how much hardware capacity we will require in the shgort term. The own hardware and rented dedicated scenarios listed cannot be seamlessly scaled, as there is leadtime for purchasing and provisioning hardware.
There is a risk that V2 will go viral and that the number of demo and paying systems will increase beyond our ability to purchase and provision the computing infrastructure required to support our customers. The means that, at least at the start, we must have a plan for deploying to cloud based systems that scales with the actual demand. Essentially we must be be able to setup infrastructure for hosting application instances instantly, without purchase and delivery lead times.
Given a infinitely scalable deployment and provisioning solution based on cloud based servers, there is no compelling need to also setup a own hardware deployment (as we had originally planned). Therefore we should focus our initial deployment strategy on cloud based hosting.
We must recognize that the cloud provider solution may be, in the long term, more expensive than a solution based on purchasing hardware and housing it at one or more data centers. Migrating applications to an in-house solution could increase our profit margin.
Clients might also want their systems to be hosting in Switzerland, or other specific place.
Defining solutions for these needs should be delayed until the actual need arises.
Requirements
V2 Appplication Use Cases
Our V2 use case is:
- Many small application instances, each of which has a relatively low traffing requirement, but a potentially large storage requirement
(Note that in the future we may provide other applications that have different requirements, but this shouldn't affect the could provider selection.)
There are two possible deployment scenarios:
Single - Each application instance is hosted on its own VM
Multiple - Multiple application instances hosted on a single VM
In our specific use case it is unlikely that a single application instance will grow much beyond the capacity of the smallest (or next to smallest) VM offering of the typical cloud provider.
Since cloud providers charge on a per VM basis, this has implications on how we deploy applications on VM. E.g. our costs will be lower if we can deploy multiple applications in a single VM.
Our use case differes from the typical use cases of cloud based servers, which is a single instance of a large web site or web application, where scaling is provided by using larger (and multiple) cloud based VMs. In this use case the scaling requirement is to provide support for a large transaction volume to a single application instance.
Clould Provider Selection Criteria
Major Selection Criteria
- Uptake in the development community and availability of on-line knowledge and support forums
Ease of sys administration and compatibility with our procedure. E.g. compatible with puppet and capistrano
- Price - Avoid high-priced solutions
- Geographical location - Prefer providers with sites outside of the US
- Reputation of provider - Avoid risk of new and relatively unknown providers
Minor Selection Criteria
- Flexibility of scaling systems - Can an existing small system be upgraded to a larger system with little effort
- Abilty to idle servers - Can we create have a pool of idle pre-provisioned servers that we don't have to pay for
- Vendor lock-in
Propritary vs. OpenStack based infrastructure
Short List of Providers
Large Well-Know Providers (Recommended)
- Amazon EC2
- Smallest VM offering (1.0-1.2 GHz, 1.7 GB RAM, 160 GB SSD, ) ranges from 20-35 USD/month
- Commiting to one or three year contracts gets you into the cheaper end of the price range
- Pricing is complex, and there are many additional components to the price, including:
- Data storage, typically 0.11 USD per GB / month
- Data transfer, typically 0.11 USD per one million I/O requests
- Has may data centers: US (3x), Europe (Ireland), Asia (3x) and S. America (Sao Paulo)
- Many other offerings: DB servers, backups, ability to idle systems, etc.
- Appears to have the most on-line support via forms (including numerous complaints too)
- Able to idle systems (the 35 USD/month) and not pay while they are stopped
- Rackspace
- Smallest offering (516 MB RAM, 1 CPU, 20 GB disk, 20 MB/sec) 16 USD / month
- No ability to idle (stop) systems and not pay while they are stopped
Said to have very good support. Called fanatical support
- Engine Yard
- Engine yard offers instances that run on Amazon EC2
- Smallest offering (1 CPU, 1.6 GB RAM, 160 GB disk) 36 USD.month
- Linode
- Smallest VM offering (1GB ram, 24GB SSD, 2 TB xfer) starts at 20 USD/month
- Digital Ocean
- Inexpensive: Smallest VM offering (1 CPU, 512 MB, 20GB disk, 1 TB transfer) 5 USD / month
Smaller and Less Well-Know Proividers (Not Recommended)
- Heuoku
- Dedicate to hosting Rails applications
- Expensive: Costs 47 USD per month for an application
- Google Compute
- Very new. Their offering is not completely defined
- Fasthosts
- UK based
- Softlayer
CloudSigma
- Swiss. Relatively expensive
- Netcetera
- IBM based?
- Datacenter coming to Winterthur in Q3-2013
Recommendation
Use Amazon EC2
Advantages:
- Mature offering
- Positive reputation
- Lots on online forum and other documentation (not from Amazon) available online
Disadvantages:
- Amazon is not the cheapest provider
- Amazon is serves major customers, meaning:
- We are unlikely to get personal support
- Technically we will be depending on Amazon's documentation and support from on-line forums
- Amazon's own document is not the best and is frequently out of date
As our business evolves, and our VM hosting requires become more clearly defined, we should consider re-evaluating suppliers. Including:
- Using larger VM offerings for hosting (very-)large numbers of applications
- Hosting large application instances on our own hardware
Next Steps
Suggestions for new PostIts:
- Sign up for free Amazon AWS account
- Setup a system, by hand, suitable for hosting a v2p0 system
- Automate system instantiation and deployment of base operating system
- Automate application installation and setup