Earlier this week, I blogged about taking your Cloud like you do your coffee – half and half. Might as well continue the food theme with this post.

Think of the kinds of solutions you put together these days. It is unlikely that your solution is a homogenous solution, as in all of its different components written using one language or one technology – say .NET – like a Caesar salad. More likely, especially in more complex solutions, different components are written in the language/technology that best suites the type of work being performed by the component. For example, you might have an ASP.NET front end calling a Java-based web service that reads from a MySQL-based database. A tossed technology salad.

You might think to yourself that a solution like that is destined to stay on-premises for it's entire lifecycle. Moving it to the Cloud would be too complicated and may involve using multiple Cloud platforms or a Cloud platform that does IaaS (infrastructure-as-a-service), allowing you to deploy different machines that will handle each of the different technologies. If that’s what you’d be thinking, the good news is that you’d be wrong!

Allow me to add some Windows Azure dressing to your tossed technology salad.

In his blog post Openness Update for Windows Azure, Gianugo Rabellino, Senior Director, Open Source Communities at Microsoft, said:

We understand that there are many different technologies that developers may want to use to build applications in the cloud. Developers want to use the tools that best fit their experience, skills, and application requirements, and our goal is to enable that choice.

Taking a look at the Windows Azure platform today, that outcome of that goal is quite clear.

How So

One of the main design principles behind Windows Azure is to be open and interoperable – to give you, the developer, the choice of languages, runtimes, frameworks, and other technologies. But it’s one thing to say open and interoperable and have the platform be a hack job just to say that the platform supports non-.NET technologies, it’s completely something else to say open and interoperable and have actual support for the other technologies. Here’s how the principle manifests itself:

Languages

  • .NET – this one is obvious, given that it is a Microsoft platform. You can write .NET based applications and have the .NET runtime run applications and have IIS run websites. Feature-rich tools for Visual Studio support your building, testing, and deploying efforts.
  • Node.js – If you’re not familiar with Node.js, it is a “platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.” according to the node.js project home page. You can write Node.js applications and have IIS, with an automatically installed IISNode native module installed, run your Node.js applications. Check out Larry Franks’ post on Node.js learning resources.
  • Java – Java developers writing applications that use Windows Azure get extra love! Not only is there support for Java on Windows Azure (via the Windows Azure SDK for Java), there’s also a Windows Azure Plugin for Eclipse that provides templates and functionality that allows you to easily create, develop, test, and deploy Windows Azure applications using the Eclipse development environment. Buck Woody has put together a list of Java on Windows Azure resources.
  • PHP – Write PHP applications in your editor of choice using the community-supported Windows Azure SDK for PHP. This will give you access into the pre-created objects for the runtime, storage services, etc. Once done, you can use the tools in the SDK to take care of packaging your application and readying it for deployment. Interoperability Bridges has an entire section dedicated to Windows Azure for PHP.
  • Ruby and Python – though there is no specific SDK for these two, they do in fact work with Windows Azure. Larry Franks details how.

Technologies

  • SQL Azure – For those that use SQL Server today, SQL Azure is the Cloud equivalent. Take your existing SQL Server database, script it, and then execute it against SQL Azure to get it going in the Cloud. Granted there are some limitations to SQL Azure (over SQL Server), but those will go away in time, I’m sure.
  • Apache Hadoop – Access Hadoop’s JavaScript libraries to enable powerful insights on data through an ODBC driver and/or Excel plugin.
  • MongoDB – For developers who prefer a NoSQL alternative to SQL Azure, MongoDB is a scalable, high performance, open source NoSQL database and is supported on Windows Azure.
  • Memcached – The popular open-source caching server that can be used to improve the performance of dynamic web applications.
  • Solr – the popular, blazing fast open source enterprise search platform from the Apache Lucene project. There’s a set of code tools and configuration guidelines to get the most out of Solr running on Windows Azure.

That’s Definitely Tossed

When you combine many different ingredients together, a whole universe of taste is possible. Similarly, when you throw many different technology capabilities together, there’s no limit to the types of solutions you can have running in the Cloud, including one’s you would’ve never thought possible. The Windows Azure dressing makes it possible.

So next time you’re looking at a menu and decide that you’re not going to have a salad because you can’t mix and match the ingredients to your liking, at least you’ll know that it is possible when you order the tossed technology salad with Azure dressing.

Bon appetite.

Original picture by Anushruti RK