I wanted to share a short(ish) post about building resilience into your applications in a Cloudy world. Over the last two years I have been involved in a startup company building a Intranet-in-box product. Yes, there are a lot of us out there right now and my own is Attollo Intranet.
Our solution is a traditional Publishing Site that sits in your SharePoint on-premises or Online platform, just as it would if we built it bespoke. But, instead of hosting all those lovely JavaScript and CSS files in your Style Library we host them for you in our Azure tenant, accessible with a SAS token for extra protection. This is important to us in case Microsoft makes changes to Office 365 that breaks (y)our stuff. This could also be your chosen approach for your own assets in your projects as well. Not just for a cross tenant ISV. Now, instead of updating hundreds or thousands of potential customers we can fix once. I guess that makes us demi-SaaS.
The next logical step is to stick a CDN in front of that storage container for all the goodness a CDN brings. You may choose to do this to aid performance for your global client or company. Now, our customers can access our files on a xxx.azureedge.net CDN URL from script references in their masterpage / page layouts. Boom! Resilience. Or maybe not.
The CDN let’s us obfuscate the URL of the physical location of the files. Should the Blob Storage service suffer an outage we could point the CDN to AWS, or Google and we have failover. But that still leaves the CDN and it’s URL as a single point of failure. If that goes kaput, so do our files. Remember that URL is in each of our customers tenants, in their master pages and page layouts. Not a quick thing to change.
We assume the Cloud never breaks. We are wrong. It’s happened a number of times over the last couple of years and will probably happen again. Also, these outages could be localised to a region. Why should our Australia or US customers suffer because the UK Data Center had a power outage?
So. The next stage our our business continuity planning is to put our own domain URL in front of the Azure CDN URL. Now, we have a vanity URL: cdn.thisisatollo.com and also an extra layer of resilience. If azureedge.com isn’t available we can change our own DNS setting to point to an AWS or Google CDN. Or even our own server in our own datacenter.
The only remaining single point of failure is our DNS host and guess where that isn’t? That’s right, it’s not at Microsoft, Amazon or Google!
Now. We have multiple stages of protection in place to ensure that we load faster and more reliably than Microsoft Azure. Chances are Attollo is available when your Office 365 tenant is not. So you can’t access it anyway, but we at least can have our smug faces on.