A week ago Microsoft announced Azure Mobile Services. In Scott Guthrie’s own words, the offering “makes it incredibly easy to connect a scalable cloud backend to your client and mobile applications”. With this move, the Azure team positioned themselves firmly in the Backend as a Service space. The BaaS space, beyond the early movers (Kinvey, Parse and Stackmob), is now fairly crowded with startups, a new one showing up every 2-3 weeks.
What Azure brings to the table
It is worth noting that Azure provides a “dynamic schema” feature for the backing relational database. It is enabled by default, and it will automatically add data “columns” if they don’t exist, essentially making the data store schema-free. It is fascinating that we at Kinvey are adding relational features to make the underlying NoSQL DB more relational, and Azure is adding schema-less features to make the relational store to make it schema-free, thereby independently converging to the same ideal tradeoff point.
The one key differentiator Azure offers is the ability to run your backend on a dedicated VM. Since Azure in its entirety is now a full IaaS-PaaS-BaaS stack, it has the ability to offer more control over the instances running the backend (obviously at a higher price point). This will not matter for individual developers or small shops, however, the larger higher-end enterprise customers will pay more for additional protection from other tenants of the platform. At its current prices, BaaS is so cheap compared to the development effort it takes to create and maintain a backend, that it is trivial for many companies to justify a 4 digit monthly bill.
The Azure Mobile SDK is only available for Visual Studio 2012 on Windows 8. On his blog, Scott Guthrie mentions that the REST API fronting the service will be publicly documented soon, making it possible for the service to be consumed from any platform. In addition, the Azure team will provide “pre-built helper methods for iOS and Android”.
It takes a lot more than helper methods to create an SDK compelling to mobile developers, though. The SDK has to feel native, integrate well with native features such as CoreData, caching, offline usage and syncing.
While Microsoft is traditionally known for developer lock-in, they had recently made some moves that suggested a shift away from it, for example, integrating Azure with Cloud9 and running MongoDB on Linux. This break away from the old style of providing a complete MS universe for developers was deemed necessary for the company to win some prominent hackers over to their side, the best example being Ryan Dahl, the creator of node.js. MongoDB and node.js are, arguably, the hottest new technologies of the last couple of years, so this move is well thought out.
A major pain point I have with Azure is the the fact that their management console is written using Silverlight, and this does not work well if at all for Linux users like me. I am not a Windows developer, yet at Kinvey we use Azure for its Blob Service from our node.js environment, and I’m finding myself having to resort to awkward alternative means just to login to Azure’s portal.
Competition with BaaS startups
Microsoft is looking for new strategies to bring developers into their platform. Android and iOS ecosystems have a giant lead over Windows Phone and in order to have a chance of catching up, Microsoft needs to think a step ahead. Only a strong incentive would make the mobile developers truly excited about the Windows 8 ecosystem and pump apps into their app store. We know well that developers like nothing better than fast iterations on their applications, and few services are better positioned to enable that than Backend as a Service. With Azure Mobile Services, many traditional Windows developers can quickly retool for the mobile world, while remaining focused on the app rather than reinventing and operating backends.
At the same time this move inadvertently positions Microsoft against the 20-odd startups in the BaaS space. It is true that almost none of the BaaS companies have a Windows SDK, yet their REST APIs are well documented, and a sophisticated Windows library with caching and offline usage is only a matter of time. Whether Microsoft will start marketing the solution beyond the Windows world remains to be seen, as is the BaaS companies’ level adoption in the Windows world.
It is clear, though, that Windows developers who are already programming mobile apps, or are looking to re-skill for the mobile industry, should be very excited about Azure Cloud Services. If developers are looking to write true cross-platform applications for iOS, Android, or HTML5 based bridging frameworks, they are better off today sticking to an established backend as a service player.