Below is a rough guide to the costs of maintaining (not setting up) a cloud-based service. Service may be a new database and web pages or API for a new web app or mobile app, also this guide does not estimate the development costs or medium to high usage of services.
Related Guide: Application scalability on a budget (my journey).
I tried to review Alibaba Cloud but could not spin up a VM.
Setting up a cloud server or services
CPanel Hosting
The cheapest and simplest way to get started is with a CPanel based Hosting plan with an existing website hosting company. CPanel is a Hosting control panel software package that provides interfaces for various functions on a server line create databases, create and edit websites and configure server settings. Normally a website host provides a CPanel based plan for as low as $5 a month. CPanel is a great way to get started creating MySQL databases and create PHP based websites.
But beware website hosts will often bundle many CPanel users onto one server and limit the capacity of your website to prevent your site hogging the resources of other users on your website’s server. Worst case what you release on a CPanel hosted website will be limited and you may receive “your website has reached its quota” message.
Be prepared to move your content away from a CPanel based host if you hit the wall.
But CPanel based website hosts are usually responsible for the servers performance and any errors you may receive for any database or security certificate so you usually don’t have to do much apart from contact support when things go wrong.
If you are not technically minded CPanel is great.
Summary: A CPanel domain may cost $6+^ a month AUD
fyi: SSL on CPanel
One downside of using a CPanel based website host is you may be charged through the teeth for an SSL certificate (they have to make money somewhere I guess). I was charged $150 a year for a poorly performing SSL certificate. If tour CPanl hosts charge less than $50 for a good certificate stick with them.
Summary: A SS certificate on CPanel may cost you $150 AUD a year (it’s usually not a good certificate either).
Digital Ocean
Digital Ocean allows you to buy a server (Droplet) online (that you manage) where you install the same software as a CPanel host (MySQL, Web Server, SSL etc). Digital Ocean servers can be purchased for as low as $5 USD a month. Digital Ocean allows us to deploy a server (Droplet) and instal what you wish and scale-up that servers CPU or RAM if need be in minutes.
I have a few guides on using Digital Ocean servers.
Read my guide on how to buy a new domain and SSL cert from NameCheap, a Server from Digital Ocean and configure it.
Read my guide on creating an AWS EC2 Ubuntu 14.04 server with NGINX, Node and MySQL and phpMyAdmin.
Read my guide on creating and configuring a CentOS server on Digital Ocean.
fyi Beyond SSL with Content Security Policy, Public Key Pinning etc.
Use this link to signup up to Digital Ocean and get 2 months free servers n Digital Ocean.
Summary: A server on Digital Ocean will cost you from $5 USD a month.
AWS
I would have stayed with Digital Ocean but they do not allow servers (Droplets) to be deployed to Sydney so I could not get servers to scale concurrent users very well. Read my application scalability on a budget (my journey) blog post.
AWS allow you to deploy similar servers to Sydney and have up to 12 months free credits. An AWS free trial will give you 1 Million AWS Lambada requests per month, 5GB Amazon S3 storage, 750 hours of CPU (RDS/EC2) credits etc.
After the free trial period (or when you need more credit) you can upgrade your AWS instance and capacity. An Amazon EC2 T2.Medium server with 2 vCPU’s and 4GB RAM running Ubuntu is my perfect server, this will cost about $53 a month. This one server is more than enough to run multiple applications and get me, approx. 2,000 concurrent users.
Read my guide on creating an AWS EC2 Ubuntu 14.04 server with NGINX, Node and MySQL and phpMyAdmin.
fyi Beyond SSL with Content Security Policy, Public Key Pinning etc.
Summary: A good server (2x CPU and 4GB RAM) server on AWS may cost you from $53 USD a month.
Alibaba Cloud
I tried to setup a cloud VM on Alibaba Cloud but was unsuccessful. I’d recommend people use AWS if money and speed is no object, Digitial Ocean if you are not in Australia and are looking to save some dollars and CPanel Hosting or Alibaba next. Alibaba promised a similar low end to what Digital Ocean offered but twice the storage for $30 a year (half the price of Digital Ocean).
Tin box Hosting
When a virtual server is not fast enough you can always buy a dedicated server (Tin Box) from say Rackspace. Rackspace are leading providers in tin (physical) server hosting busy cost over $449 a month for an entry-level server in Australia.
Rackspace Cost Calculator. I asked the Rackspace Chat for a URL for a pricing calculator and was told one does not exist (I found one and a server in Sydney with 3TB bandwidth and 10GB CDN bandwidth would cost me $3k+ minimum a month).
Summary: If you can consider Rackspace hosting you don’t need to ask for a price.
aaS (as a service)
One alternative is to host the application on the cloud (AWS Lambada) and pay per user hits and not manage servers at all. This can lower the bills per month but could cost you more in the long term (if the app usage is high you will pay). You may find aaS too restrictive. I prefer to manage things myself over aaS.
Summary: I have not considered deploying apps on aaS hosts because I prefer to pay for a server and not for the usage. aaS hosting seems too risky in the long term.
Other Hosts
Microsoft also offers virtual servers via it’s Azure platform. They have free credit too.
Most server providers offer free trials and free periods (digital ocean 2 months free, AWS 12 months free, Azure free credit). Try each and see what works best with your application as each will perform and cost differently.
Support and Risk
- CPanel = Lower risk for you but maybe limiting and may not take you all the way.
- Digital Ocean is in my opinion are the perfect hosts but are not located in all regions and this ruins scalability. Digital Ocean has great FAQ’s and an active community.
- Microsoft Azure are professional but I found it’s firewall and documentation features lacking.
- AWS are professional hosts but are complex and a bit pricey and most of the time you handle the support.
- Alibaba support is lacking (twitter responses took 5 days and official tickets were a waste of time).
At the end of the day you may want to get someone else to handle the risk and you handle the app or code.
Fast web servers
Of course, you want the fastest webserver to put on a virtual machine. For me I chose Nginx over Apache. Here is a good article comparing Apache and Nginx (the leading open source web servers).
Further proofing and technology longevity
Ensure you use platforms and technologies and technologies that will be around for the long haul. I was going to use parse and storm path but they are no more. Sometimes developing your own thing increases and lowers the risk
Scalability and Future Proofing
All providers may be able to handle your application traffic and if it cannot be prepared to move hosts/technology.
Start small and move up. DigitalOocean, Azure and AWS are easy to upgrade servers or add servers.
Distribute services across servers where possible setup servers close to your customers (as I found out). Sometimes scaling out (adding extra servers) is cheaper than scaling up (adding more speed or CPU credits). Trail and error is the key.
Server Locations.
As your service grows you may need to setup domains and servers in multiple regions and this will multiply the costs so choose your domain name wisely.
Content Caching
You may want to cache some of your services content on remote servers (Digital Ocean, AWS or Cachefly CDN’s), this depends on costs.
You may also want to pay for remote mail providers rather than setting up a mail server.
Status page services
fyi: Read my guide on creating a service status page.
Costing Examples
Basic WordPress or website ($5 a month)
- 1x CPanel Website/Hosting Plan.
- 1x MySQL Database (CPanel).
- 1x SSL Certificate (CPanel).
Small traffic Website and API Backend ($5 a month)
- 1x Digital Ocean Server (1x vCPU, 20GB SS, 2G RAM and 1Gb Transfer)
- 1x MySQL Database (Digital Ocean).
- 1x NGINX Web server and NodeJS.
- 1x SSL Certificate (Self Installed via Namecheap).
Medium traffic Website and API Backend ($20 a month)
- 1x Digital Ocean Server (2x vCPU, 40Gb SS, 4G RAM, add 3TB Transfer)
- 1x MySQL Database (Digital Ocean).
- 1x NGINX Web server and NodeJS.
- 1x SSL Certificate (Self Installed via Namecheap).
Large traffic Website and API Backend ($20 a month)
- 1x Digital Ocean Server (4x vCPU, 80G SSD, 8G RAM and 5TB Transfer)
- 1x MySQL Database (Digital Ocean).
- 1x MongoDB Database (Digital Ocean).
- 1x NGINX Web server and NodeJS.
- 1x SSL Certificate (Self Installed via Namecheap).
Very large traffic Website and API Backend ($155 a month)
- 1x Digital Ocean Server (1x vCPU, 20GB SS, 2G RAM and 1Gb Transfer) $5/m
- 1x AWS Server (4x vCPU, 80G SSD, 8G RAM and 5TB Transfer) $70/m
- 1x MySQL Database (Digital Ocean) – $5 a month
- 1x MongoDB Database Cluster (MondoGB Atlas) – $80 a month.
- 1x NGINX Web server and NodeJS Farm
- 1x SSL Certificate (Self Installed via Namecheap).
Very very large traffic Website and API Backend with cache distribution via CDN ($205 a month)
- 1x Digital Ocean Server (1x vCPU, 20GB SS, 2G RAM and 1Gb Transfer) $5/m
- 1x AWS Server (4x vCPU, 80G SSD, 8G RAM and 5TB Transfer) $70/m
- 1x CDN Distribution Service (CacheFly) – $50 a month
- 1x MySQL Database (Digital Ocean) – $5 a month
- 1x MongoDB Database Cluster (MondoGB Atlas) – $80 a month.
- 1x NGINX Web server and NodeJS Farm
- 1x SSL Certificate (Self Installed via Namecheap).
Caching
Caching content is a good idea to limit hits to your Web server, good guide here.
Security
Cheap may not be good (hosting or DIY), do check your website often in https://www.shodan.io and see if it has open software or is known to hackers.
Summary
Start small and monitor the server resources and scale up as required. Setup servers close to your customers. Choose Ubuntu OS over Windows.
Donate and make this blog better
Ask a question or recommend an article
[contact-form-7 id=”30″ title=”Ask a Question”]
v1.61 added info on Apache and nginx