Multi-tenanted applications on Windows Azure and SQL Azure – added to my todo list for 2010
Note: Cross posted from IUpdateable from Eric Nelson.
Back when I was an Application Architect working with UK ISVs I spent a lot of time helping companies understand how to architect multi-tenanted applications. However, I have never pondered about the challenges (and opportunities) of doing this with Windows Azure and SQL Azure. Until now.
What sparked it off was a fairly simple question from a UK ISV that I ended up copied on.
The question in essence was
“What is the recommended approach to building a multi-tenancy solution on Windows Azure and SQL Azure in relation to domains, IP addresses and https certificates for each customer”
I thought there would be a lot of public information on this – but after a 30 minute search I was surprised to find relatively little on this area. This is where I have got to so far:
- Multi-Tenant Addressing (March 2009): This is a good summary post of tenant1.azureapp.com, tenant2.azureapp.com vs coolapp.cloudapp.net/tenant1, coolapp.cloudapp.net/tenant2
- Using a Custom Domain Name with Azure Storage (Nov 200)
- Using a Custom Domain Name with Windows Azure (May 2009)
- General discussion on Single vs Multi for Azure (Dec 2008)
- Multi-tenant Azure sample available – Azure Issue Tracker
- A second Multi-tenant Azure sample – Riviera
- Webcast: Designing Multi-Tenanted Applications on Windows Azure (Nov 2009) NOTE: Event does not appear to be available on demand yet. I am following up with Joseph.
- Oh – and our SaaS Architecture Center (which doesn’t seem to have anything specifc to Azure on it!)
It is worth mentioning that “Azure v1” was not designed to specifically support building multi-tenanted applications. Hence potentially there are easier ways to build multi-tenanted applications than by leveraging Windows Azure. Check out SaaSGrid for one such example. SaaSGrid lets you utilize Microsoft .NET languages to write code and provides a slim, simple yet very powerful API layer that allows the application to interact with SaaSGrid in certain explicit ways.
The final upshot of the above is… I have added this topic to my “things to understand in 2010” list :-)
Related Links: