Friday, September 5, 2008

Reliable computation

We've been programming computers for 50, 60 maybe more years at this point. Yet suppose I want to write something like the canonical "bank account management" application:

accounts = map()
function create_account(int account_number) { accounts[account_number] = 0}
function deposit(int account_number, int amount) { accounts[account_number] += amount}
function withdraw(int account_number, int amount) { accounts[account_number] -= amount}

Pretty simple right?

Well, not if you want this to have transactional semantics, to scale to millions of transactions per second, to be secure, to run reliably for a decade with .0001% downtime, etc. I would dare say that it's nearly impossible to actually write the above program in a way that is reliable, secure, available in the ways that we want common business applications to be.

Why is this still so hard?

blog comments powered by Disqus