Building for Windows Azure gives a wide choice of programming languages, from PHP to Java to Ruby to .Net. We chatted with Tim Buntel, Microsoft's Windows Azure Platform Product Manager, about how Windows Azure fits into the overall development scene.
Why is Microsoft so committed to offering Windows Azure to people who haven't chosen to use a Microsoft development environment? TIM BUNTEL: Let's roll the calendar back a decade or so. In the beginning web application days, your choice of hosting operating system was somewhat separate from your choice of application server or programming language. You could run PHP, Java, ASP classic or whatever and you could choose to run it on a range of different platforms. An awful lot of people were hosting web apps on Windows even if they weren't Microsoft developers. For instance, Cold Fusion ran on Windows Server even though the programming environment was very different.
Now, if you think about the Azure platform as an operating system in the cloud, then you still want to bring that same flexibility of implementation -- you're just running it in the cloud instead. If you're a PHP developer, you could choose to run PHP inside the firewall or up inside the cloud. What's happening if you make the cloud choice is you're getting the benefits of the Azure platforms -- the elasticity of the cloud, and the availability and reliability that comes as being part of MS' global data infrastructure. But you still have the opportunity to develop with the languages and tools you want to use locally. Use Visual Studio, use Eclipse, use anything that suits.
Does that logic apply to other technologies as well? TB: Very much so in the case of SQL developers. SQL Azure is really valuable for a lot of people coming from other development approaches, because SQL Server is so common. There are heaps of businesses writing Java apps using SQL Server, and SQL Azure is SQL Server -- you use the exact same approach and the exact same tools to manage those databases. A lot of people who are more experienced with working with traditional relational database systems have been somewhat nervous about moving to the cloud and being forced to go with a noSQL approach. There haven't been a lot of really good options for people who want to stick to a traditional relational database, but with Azure its right there.
What features does Microsoft offer to help users of non-Microsoft languages take advantage of Windows Azure? TB: For some of these specific languages -- and PHP is a particularly great example -- you can absolutely just use PHP the way you have previously. We do have some projects that allow you to use PHP and take advantage of some of the special benefits you can get in the cloud, such as Azure's table storage. We provide a PHP SDK that will give you a really simple PHP native library for interacting with some of those specific features. Just as you would when working with Microsoft's languages, you'll discover that the languages are the same but some of the techniques used will be different.
How much effort does it take to adapt to the new platform? TB: I think it's pretty minimal. Take storage for example. You've got blob storage as an option, and there's no concept of that if I'm writing a PHP app locally. I need to understand what are these new containers I want to use. I have to learn a couple of functions to read and write to those different storage containers, but that's really it. Once you've retrieved something from an Azure cloud, you're still going to operate programmatically.
Some things are going to be different -- things like how you want to handle user authentication. Maybe you want to run the application in the cloud but base the authentication of users on a local LDAP server or Active Directory or other third-party services. That's also possible. The combinations vary.
A good analogy for me has been imagine web developers going from a single server to deploying in a clustered environment. The basics are the same in how they implement the application, but you do have to take some new elements into consideration when you consider how to architect it. It's very similar to that. And Azure as a platform adds a lot of services that make that task easier. Compared to some other PaaS offerings out there, it does a really nice job of bridging those gaps.
What resources are available for developers coming from a non-.NET development background? TB: MSDN is clearly the best place to start. Traditionally that has been about Microsoft technologies, but in the Azure context we have a lot of other language content there.
The big one for PHP is the PHP Azure SDK which we have up on Codeplex. And since it's an open source project, developers should feel free to get involved and contribute to that library. There's also a great starter kit for Java.