Scalability and Azure
In my line of work I work with CTOs and VP of engineering who are responsible to make decisions on the strategy and direction of the software and company.
One of the design criteria for any software is “scale”. If you talk of scaling, myth is that 4 things are guaranteed *
1) Capital investments will be made.
2) The system will become more complex.
3) Maintenance cost will increase.
4) Time will be required to act.
Let’s talk about each of the above points in context of Windows Azure - a cloud computing platform offering from Microsoft that can be used to develop and deploy internet scale applications.
1) Windows Azure is a cloud computing platform that offers consumption based pricing. So a software vendor pays to use Azure based on how much the software is being used. There are no capital expenditure to buy and provision servers, you provision your code and pay by the usage of your software. Cloud computing enables scaling without capital expenditure. So if you have a scale you pay more. Another interesting aspect of Azure (or cloud computing) is that it is as easy to scale down as it is to scale up. So if you have unpredictable or predictable peaks in your business, you can scale up and down and scaling becomes an operational expenditure rather than a capital expenditure.
2) Scalable software cannot be sticky, they cannot have state. So architect your application stateless and offload the session to a central place (database, cache etc).
If you have architected the software as state less then provisioning and architecting for Windows Azure will not make it complex.
But if you have architected your software stateful, you should architect the software so it can linearly scale on Azure.
3) Windows Azure is a auto-managed cloud computing platform. To scale your application you change the config file to have as many or less instances you want. There is no additional maintenance cost to scale your applications on Windows Azure.
4) The only time that you need to act is how fast you can change your config file, but if you plan it right you can auto scale it by using an extensive set of APIs and management tools.
Cloud computing has changed how we think about scaling you software for internet or enterprise. The beauty of Windows Azure is that it is Platform as a service offering, which means that your unit of deployment is your code. Maintenance, scaling, availability is all taken care by the platform itself so you can focus on your code and your business of writing software for your business but off loading IT to Microsoft.
* Ref: Scalable Internet Architectures