An interesting announcement from Google at their recent I/O conference was of per minute billing for virtual machine capacity. As we work with AWS a lot, cloud billing is a subject close to my heart – and so this caught my attention. On the surface, per minute-based billing is attractive as there is some inherent wastage in the per-hour model used by AWS, Microsoft Azure etc. When estimating likely AWS usage charges for customer engagements (using the excellent AWS online calculator, which says it is still in beta testing but is actually rock solid), we take great care with the assumptions made about the number of hours that instances will be running for – the classic example of this is for dev/test environments, e.g. it’s quite easy to assume 5 days per week at 10 hours day. What we’ve found over time is that because customers and their development staff have typically been brought up on a diet of inefficient server use (i.e. make a guess what I need, add some capacity contingency on top, pay for them upfront, it’s a sunk cost, so I don’t care about how efficiently I use it), then there is not a strong culture of turning off environments when not in use etc. Also, we control dev/test environments using our SmartSentinel cloud management tooling – and you need to allow a few minutes for instances to startup/shutdown to ensure you don’t fall into an additional hour of cost (especially Windows instances
).
So per-minute billing is attractive as it just cuts down on some over-billing when we “spill” into another hour of usage. But – and this is a big but – the logistics of IaaS billing are already complex enough that I don’t really want it to become more complex. We manage cloud billing for a number of customers, and in a 30 day month we have 720 distinct hourly measurement points where virtual machine usage charges are accrued (to keep it simpler – I’m ignoring other usage based charging, e.g. for storage etc, here). Even with this level of data, validation, reconciliation and invoicing of charges is already very complex. If that became 43,200 measurement points in a month, I think it would tip our finance team over the edge
. The complexity stems from the fact that AWS have some really attractive sophistications to their charging model – we like these features and don’t want to lose them, e.g.
-
the ability to reserve instances over a 1 or 3 year time period, i.e. make a commitment and share the cost advantage with AWS
-
the ability to choose 3 different types of reservation based upon likely usage levels, e.g. 100% on all the time, or rarely on (e.g. for a DR scenario)
-
the ability for a customer to get the benefit of their reservations across their various AWS projects/deployment, e.g. if across your AWS estate on average you always have 5 m1.large instances running, but no individual project has them running all the time, you can still reserve the instances and get all the price advantage as the reduced per-hour cost is shared across the entire estate
-
volume discounts
-
..and that’s before I even get to spot pricing!
These pricing model sophistications are real differentiators and allow a much more tailored cost model for specific customer deployment scenarios – and I think they are more important than per-minute metering of usage. It’ll be interesting to see if AWS or Azure follow the Google lead (as tends to happen with IaaS pricing between the big boys). Cloud billing truly is becoming a big data problem – if this carries on we’ll need to run up an on-demand AWS EMR Hadoop cluster to do billing reconciliation
…












