I’ve been thinking a lot about architecting software applications for the cloud lately – particularly for Windows Azure, as that’s the platform we have chosen to build CubeSocial’s SaaS solution on.
Lots has been written about the impact of PaaS and IaaS services like Amazon Web Services and Windows Azure on software architecture. I’ve seen plenty of commentary arguing that architects need to change the way they design systems to consider the platform billing model and on-going costs.
But is that really a change? In my opinion, it’s no different to what we architects have always done – only in the past the cost considerations were different. It was about numbers of servers, software licences, software versions etc.
I believe the cloud computing model changes our approach in a much more fundamental way.
I see the shift that is happening right now as the modern equivalent of what happened when Windows went from 16-bit to 32-bit.
Freed from the memory limitations of 16-bit computing we all stopped optimizing our Windows code, as there were simply so many system resources available to play with… it was effectively limitless.
Cloud computing platforms bring the same philosophical shift to web applications.
Yes, I could spend time architecting for the billing model. I could spend money getting programmers to performance tune their code to reduce billing charges. But that doesn’t mean I should.
Let me ask you this: Why spend 50$ an hour on getting a programmer to tune their code, when instead I can pay Microsoft or Amazon another $50 a month and throw another web front end at the problem. Then, instead I can have my developers doing something much more useful to the business: adding new product features more quickly than the competition so that I can sell more and make more revenue.
And that is the true economics of cloud computing.