Posts Tagged SQL Azure
When Amazon announced RDS for SQL Server and .NET support for Elastic Beanstalk, the response over the next few hours and days was a gushy ‘AWS cosies up to .NET developers’ or something similar. My first thought upon reading the news was “Man, some people on the Azure team must be really, really pissed at the SQL Server team for letting SQL Server on to AWS”. It’s not that AWS is not a good place for .NET people to cosy up to, and some AWS people are very cosy indeed (except for one, who’s been avoiding me for a year), but .NET people getting friendly with AWS people is bad for Azure. While it is great for .NET developers, the problem for Microsoft is that SQL RDS erodes the primary competitive advantage of Windows Azure.
AWS has been a long time supporter of the Windows and .NET ecosystem but the missing part was the lack of a good story around SQL Server. Sure, you have always been able to roll your own SQL instance, but keeping it available and running is a pain. What was lacking, until this week, was a SQL Server database service that negated the need to muck around by yourself. What was needed was a service provided by AWS that you could just click on to enable. Not only does AWS now support SQL (although not 2012 yet) it seems to superficially offer a better SQL than Microsoft does on SQL Azure. I personally think that SQL Azure is a better product and has been developed, from the ground up, specifically for a cloud environment, but that process has left it somewhat incompatible with on-premise SQL Server. AWSs RDS SQL is plain ‘ol SQL Server that everyone is familiar with, with databases bigger than 150GB, backups, performance counters and other things that are lacking in SQL Azure. While the discerning engineer may understand the subtle edge that SQL Azure has over RDS SQL, it will be completely lost on the decision makers.
AWS has recently been making feints into the enterprise market, a stalwart of more established vendors, including Microsoft. And, if AWS want to present a serious proposition to enterprise customers, they have to present a good Windows/.NET story without gaps — and it seems that they are beginning to fill in those gaps. It is particularly interesting and compelling for larger enterprises where there is a mish-mash of varied platforms, as there inevitably are in large organisations, where one cloud provider is able to take care of them all.
Windows Azure has Windows/.NET customer support at the core of its value proposition and SQL Azure is a big part of that. If you have a need for SQL Server functionality, why go to anyone other than a big brand that offers it as part of their core services (and I mean ‘service’, not just ‘ability to host or run’)? Windows Azure was that big brand offering that service, where the customer would choose it by default because of SQL support. Well, now there is another big brand with a compelling offering.
Microsoft obviously can’t go around refusing licenses for their software, and for a business that for decades has had ‘sell as many licenses as possible’ as their most basic cheerleader chant, it is virtually impossible to not sell licenses. The models for the new world of cloud computing clash right here with the old business models that Microsoft is struggling to adapt. For an organisation that is ‘all in’ on the cloud, the only ‘all in’ part of the messages that I am getting is that Microsoft wants to sell as many licenses of their products to cloud providers as possible — putting Windows Azure in a very awkward position. If it was me in the big Microsoft chair, I would have fought SQL RDS as long as possible — but hey, I’m not a highly influential sweaty billionaire, so my opinion doesn’t count and won’t make me a sweaty billionaire either.
The competitor to Windows Azure is not AWS, or AppEngine or any other cloud provider — the competitor is Windows Server, SQL Server and all the on-premise technologies that their customers are familiar with. I’m sure that Microsoft desperately wanted to get SQL onto RDS and helped as much as they could because that is what their customers were asking for (Microsoft is apparently quite big on listening to customers). I can’t help thinking that every time Microsofties went over for a meeting at the Amazon office to hammer out the details, the Azure team was left clueless in Redmond and the Amazon staff were chuckling behind their backs.
How does Microsoft reconcile their support for Windows Azure and their support for their existing customers and business models? How do they work with AWS as one of their biggest partners and competitors? While Microsoft struggles with these sorts of questions and tries to decide where to point the ship, Amazon will take whatever money it can off the table, thank you very much.
A white paper on “NoSQL and the Windows Azure platform” written by Andrew Brust for the SQL Azure team offers a brief introduction to NoSQL for Microsoft developers. While listing various NoSQL approaches it suggests the following NoSQL technologies for Windows Azure:
- Azure Table Storage
- SQL Azure XML Columns
- SQL Azure Federation
- VM Role
Of those, Azure Table Storage is the only true NoSQL product. Putting documents in XML fields in SQL Azure (SQL Server) is SQL. SQL Azure Federation (automatic sharding ccross SQL Azure databases) may be a killer technology for scaling SQL, but is not available and is still very SQLish. OData is simply a protocol. Running a NoSQL database, such as mongoDB, in a VM Role is just plain silly.
The long-winded conclusion of the white paper highlights,
We have seen how the Azure platform supports a full-on NoSQL approach as well as the ability to implement various NoSQL features on an “a la carte” basis
The Azure cloud provides for a spectrum of choice, rather than a single, compulsory methodology. This provides flexibility and protection in a cost-effective, elastic computing environment. And that’s really what “Web scale” should be all about.
If this white paper where published in an obscure developer blog I would barely read it, but as a white paper published and approved by Microsoft, it illustrates the deep problem that Windows Azure and Microsoft have with NoSQL. Windows Azure only has one NoSQL offering in Azure Table Storage, which is good but severely limited (no secondary indexes). It also seems that Microsoft has very little appreciation of the need and demand for better and broader NoSQL technologies.
Microsoft continues to insist that SQL Azure is the best solution for data in the Windows Azure cloud, which is hardly surprising since SQL Server is a big product for them and their developers (just try and imagine what an Oracle cloud offering would look like). SQL Azure itself is an awesome product, but as a SQL RDBMS, not for anything/everything else.
In order to take advantage of all that Cloud Computing offers, support for various alternative data stores is absolutely necessary. People are building big and scalable systems using a combination of data technologies in order to deliver the optimal solutions in terms of cost, scalability, availability, security etc. In my current project we use MySQL (RDS on AWS), SOLR, mongoDB, S3 and SimpleDB – not for buzzword bingo, but because each one fulfils a specific and important role in the architecture. Only having SQL Azure, Azure Table Storage and Azure Blob Storage is simply not enough.
Microsoft does have interesting products in research. Dryad is their MapReduce implementation (which had been on the fringes for years) and Trinity is their graph database. You would also think that the people who own Bing would be able to rustle up some sort of search engine and that AppFabric cache cloud be tweaked with a ‘DB’ (in the spirit of memcachedb) to give it some persistance.
Update: Dryad seems to be out of research now and in beta as part of Microsoft HPC Pack 2008 R2
Microsoft has smart people and good technologies but needs to get these out onto Windows Azure. Since it is PaaS, it can’t be left up to customers and has to be baked into the platform. Unfortunately, Microsoft has their SQL Server market , customers and developers to protect so I imagine that it will be a while, perhaps too late, before we see a breadth of NoSQL technologies on Windows Azure.