Cloud Programming Directly Feeds Cost Allocation Back Into Software Design
Cloud Programming Directly Feeds Cost Allocation Back Into Software Design
html
In the GAE Meetup yesterday a very interesting design rule came up:
Design By Explicit Cost Model. A clumsy name I know, but it is
explained like this:
Usually in programming the costs we talk about are time, space, latency,
bandwidth, storage, person hours, etc. Listening to the Google folks talk
about how one of their explicit design goals was to require programmers
to be mindful of operations that will cost money made me realize in cloud
programming cost will be another aspect of design we'll have to factor in.
Instead of asking for the Big O complexity of an algorithm we'll also have
to ask for the Big $ (or Big Euro) notation so we can judge an algorithm
by its cost against a particular cloud profile. Maybe something like
$(CPU=1.3,DISK=3,IN-BANDWIDTH=2,OUT=BANDWIDTH=3,
DB=10). You could look at the Big $ notation for algorithm and shake
your head saying that approach will never work for GAE, but it could
work for Amazon. Can we find a cheaper Big $?
Now software design decisions are part of the operations budget. Every
algorithm decision you make will have dollar cost associated with it and it
may become more important to craft algorithms that minimize operations
cost across a large number of resources (CPU, disk, bandwidth, etc) than
it is to trade off our old friends space and time.
Don't be surprised if soon you go into an interview and they quiz you on
Big $ notation and skip the dusty old relic that is Big O notation :-)