I recently commented on Mary Jo Foley’s post Can Microsoft Save Windows Azure? The key point of my post was that IaaS is good for Azure because it is good for adoption rate.
This change does raise concerns for software developers, however. On the topic of increasing IaaS in Azure, Mary Jo wrote:
This means that Microsoft will be, effectively, following in rival Amazon’s footsteps and adding more Infrastructure as a Service components to a platform that Microsoft has been touting as pure PaaS. [highlight added]
For software architects and developers, Microsoft PaaS approach with Azure has been a boon. Many non-developers would be surprised to know how much “infrastructure impact” creeps into system architectures and implementations. The (historically) pure PaaS Azure, however, provides us with the ability to implement highly available, scalable and performant systems with almost no infrastructure concerns.
Many consider Amazon to be the top cloud computing provider. Amazon Web Services (AWS) provides a very good set of building blocks which (increasingly) work well together. From a developer’s perspective, however, these building blocks require too much “IaaS overhead.” Determining which building blocks will be needed is the first hurdle. But then come the “which to use in what?” hurdles. Which distro and version of one of the Linuxes, which database type (SQL, NoSQL), how will the various systems communicate with each other, etc., etc., etc.
With Windows Azure, however, a developer can implement code on a developer workstation (using the Compute and Storage emulators). When ready, the developer can deploy code to Azure directly from Visual Studio. Relative to just about every other cloud provider, Azure developers start out much further down the road (= saves a lot of time).
In PaaS, Purity Matters
So how does Azure’s IaaS push impact developers? Developers will be negatively impacted by letting IaaS pull in PaaS impurity. In other words, if Microsoft muddies the existing Azure development platform (code interfaces), the level of “IaaS Overhead” increases. As the level of IaaS Overhead increases, the time and cost benefits of PaaS erode.
Consider the Win32 days: Microsoft’s progressive push toward a standard set of API’s for Windows created a competitive advantage. Although there were gaps (e.g., API’s supported on Windows NT, but not Windows 95), Win32 was far more pure than any other API at the time. Companies that developed software for the myriad Unix systems encountered far more platform related costs than companies developing for Windows. If Microsoft had tried to support Sun, IBM, HP and other Unix libraries, the advantages of Win32 would have vanished.
Hopefully Microsoft plans to keep the PaaS side of Azure pure, while letting the IaaS side flex. Otherwise, they will undermine one of their most significant competitive advantages – a pure PaaS.