The Economics of Cloud Development

The development and deployment of server software has changed radically over the last few years.

It used to be the case that you had to buy servers, find space for the server, capacity plan the numbers. You added DR backups and test systems (always smaller than production). It would take weeks for kit to arrive.

Now given services like Heroku and Azure it is possible to set up an entire setup in under an hour billed monthly to your credit card. A test server can be the same size as production when needed then switched off when no longer required. The avoids the old queues to access test systems.

You do need to be careful that you have switched off what you no longer need or can face a large unexpected bill.

Given that in Heroku you can have an application server running for a month from $7, workers can be scheduled to run for seconds each month (batch processing using the Heroku Scheduler) costing $0.12.  Now the costs of discussing options can exceed the annual costs of deployment.

For example we found one of our batch reporting tools running out of memory. We could have spent 2 days optimizing it or just dial it up to the next tier up at a cost of an extra $0.04 per month.

My current employer does not even need the developers to ask for any new services less than $100 per month for experiments. The meetings to discuss this would cost more than the work.

With careful use of a CDN we can host a very high volume site using minimal number of servers at a reasonable cost.

Heroku makes experiments very easy – push code to a git repo with a simple Procfile and you can have a server up and running in seconds. You can add a host of backend services at a reasonable rate – especially as it is billed per second that is enabled. When not needed just switch off.

I recently attended Jeffconf in London. The name came when someone pointed out that “Serverless development” actually required servers so the name was arbitrary hence Jeff.

I can see how serverless frameworks could be used to handle spiky loads but you normally will require some form of storage or batch processing which will exceed the serverless costs.

Serverless refers to services such as Amazon Lambda or IBM Open Whisk. You deploy a minimal script that is instantiated (possibly) per call and you are only charged for usage.

This looks like a useful component in a hybrid system. Use Serverless to store to a Google bucket with a polling service that copies this into BigQuery.

The development process is now a lot more flexible!