When Azure broke down...

... the world shook in terror on the 19th November 2014. 

That means two things: firstly, the importance of a public cloud platform such as Azure.

When such a huge thing gets a hiccup, a lot of people stress out. And they should. A lot of businesses nowadays depend on public cloud services (be it AWS or Azure), and each business trusts the availability of their service to these skilled engineers. It's true, Microsoft (or Amazon) do not own your availability promises. (You can check yours here) But due to financial or practical constraints, it makes sense to 'offload' this responsibility onto someone who should be able to manage it well. This is relationship is based on trust. Trust that the system is managed, operated and governed well.

Outages are not only Microsoft's domain. We all know that Amazon AWS had some really bad couple of years in 2012/2013, affecting multiple high profile sites such as AirBnB, Instagram, Vine, Flipboard and others. Public cloud platforms are complicated beasts, and until we figure out how to build them properly, outages must be expected. However, Azure seems to always get that bad outage at least annually. Why?

Which brings me to the second thing: Maturity. Amazon's AWS is Azure's grandpa. There may not be any shared DNA, but they are both trying to be the same thing; Amazon AWS was just born earlier. But this also means that Azure wants to grow up fast. Microsoft is taking bold steps to try to reach Amazon so much so that (just like an adolescent would do), it might be doing things too quickly for its own good.

Microsoft! Slow down! Good things come to those who be patient. I'm always impressed by the sheer rate of announcements of new features coming to us. Check this blog out and you'll know what I mean. We get at least one big new service with five to ten medium feature additions quarterly, with tons of smaller changes monthly. AT LEAST! 

"That's great!" you might say. Yes, but maturity insists that platform stability and feature depth (as opposed to shallowness) comes before. We're now starting to see non-beta features being deprecated, or completely removed (shared cache, SQL Azure web/business plans, bla bla bla), even though they're barely 3 years old. Targeting such a dynamic platform means that you start to doubt whether you'd need to re-engineer your apps in a couple of months/years just to keep up. We have enough headaches with keeping up with Azure SDK library versions already. What will happen to Azure Storage Tables now that DocumentDB (which I think is very cool) is here? They may not stop the service, but I'm not sure they will continue building on it. Same thing with cloud services vis-a-vis Web Sites. We havn't had a feature announcement for web/worker roles for ages now while Web Sites' feature-set seem to grow by the minute.

What Microsoft needs is the maturity to slow down. Platform stability (especially for core services such as Azure Storage) come before features. The way status updates were handled during the downtime can definitely be improved. No, not 'everything is running great'. Every engineer knows that whenever a change is introduced, it creates risk (even if you tested it a million times). There's always those few lines of code that created the infinite loop that did not come up in testing. You need to minimise the amount of changes done, and that could mean to slow down. Worse than that, you've applied the change to all regions at one go instead of rolling it out slowly. Microsoft engineers insist that for a truly highly available app, you need to deploy in different datacenters, expensive and complicated as it is. Those who followed that advice are poorer and definitely angry after yesterday. 

If your availability graph for the day looks like this, you definitely have a problem. This is the behaviour of an adolescent, and to be able to grow, you need the maturity and respect for the trust your clients are giving you. Remember that trust must be gained and not given. I still strongly believe that Azure is one of the best public cloud platforms available (if not THE best), but I'm looking forward for the time when it's all grown-up!

For the curious ones that want to know what happened, click here.

Rant over. Now let's get back to work.

Recent Posts

  • Azure Resource Naming Convention

    All Azure users, especially after the Classic-to-ARM switchover, have noticed this... There are a lot of different resource types, even for a simple deployment. Naming them becomes critical to find the appropriate resource, especially in an emergency. To make matters worse, there are a lot of similar resource types which, if you're not careful, you may end up naming the same. Need a couple of new Virtual Machines? You have to name the availability group, storage accounts, load balancer, resouce …

    Read More...
  • The Global Azure Bootcamp 2015 - Malta!

    Malta is on the map once again for the Global Azure Bootcamp, a one-day deep-dive training into the Microsoft Azure cloud.

    From my last count, there will be 184 locations in total participating in this event around the world, from Hawaii to Japan! (Malta is bang in the middle!) And as usual, I'm again at it!

    The bootcamp will be on April 25th 2015 (hey that's tomorrow! I suck with keeping my blog updated!) and will be held at the Microsoft Innovation Centre at Skyparks, Luqa (just …

    Read More...
  • SEO Tip: How to block the *.azurewebsites.net domain

    Are you using Azure Websites to host your sites? Great! Then you know that whenever you deploy a website on Azure websites, you get the mysite.azurewebsites.net URL.

    The sub domain is great for you to test your application, but most probably you have your own domain that is mapped to the site. However, the azurewebsites.net domain is still there and still works! Do you know that this can be a problem?

    One of the rules in the SEO bible says that each page should only have one URL. Your …

    Read More...
  • Free eBook: Microsoft Azure Essentials - Fundamentals of Azure

    A great book on the fundamentals of Azure. If you're new to Azure, this is a great start. Get it now!

    The topics explored in this book include:

    Getting started with Azure: Understand what cloud computing is, visit the management portals, and learn about billing.

    Websites and Cloud Services: Learn about Azure Websites, from deployment to monitoring, and gain an understanding of the web and worker roles used in Azure Cloud Services.

    Virtual Machines: Explore the basic …

    Read More...
  • When Azure broke down...

    ... the world shook in terror on the 19th November 2014. 

    That means two things: firstly, the importance of a public cloud platform such as Azure.

    When such a huge thing gets a hiccup, a lot of people stress out. And they should. A lot of businesses nowadays depend on public cloud services (be it AWS or Azure), and each business trusts the availability of their service to these skilled engineers. It's true, Microsoft (or Amazon) do not own your availability promises. (You can check …

    Read More...
  • How to protect against POODLE attacks!

    Maybe you've heard about HEARTBLEED or SHELLSHOCK. POODLE is the next one.

    Anyone using Windows Server and IIS was lucky enough to avoid both HEARTBLEED (openssl library vulnerability - CVE-2014-0160) and SHELLSHOCK (unix bash shell vulnerability - CVE-2014-6271). However, POODLE hits everyone.

    What is POODLE?

    POODLE, spelled in caps to distinguish from our furry canine friends, stands for "Padding Oracle On Downgraded Legacy Encryption". It is a type of man-in-the-middle exploit …

    Read More...
  • Quick Tip: How to output custom error messages on Azure Web Sites

    You've published your latest masterpiece to Azure Web Sites. Great! How was it? Not bad!

    Now, does your application output its own error messages (HTTP 500, 404 etc?) IIS will by default hide your errors with the message:

    The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

    If you want to output your own custom output for non-200 statuses, you need to put this in your web.config:

      <system.webServer>

        < …

    Read More...
  • Azure icons in Visio

    Building any cloud apps lately? Great!

    Documenting them? Not so...

    Firstly, make sure you're using the best tools of the trade: Microsoft Visio. It's by far the easiest and most powerful tool for diagrams.

    Wanna add Azure-specific icons? Yeah, I know it's difficult to find them... But here's a secret: Visio supports SVG.

    What does that mean, you ask? Well, it seems that the current azure site uses SVG for the majority of icons. If you want to use a particular Azure icon, just find the …

    Read More...
  • How to migrate legacy apps to Microsoft Azure (part 1)

    How to migrate legacy apps to Windows Azure

    I see a lot of interest by startups to start using Windows Azure to power their products. It's the perfect platform to start small and have room to scale quickly and easily. But the most important advantage that startups have, is not having to worry about legacy issues. 

    A lot of companies would like to start using the cloud. By now, we know what the advantages are: scalability, resiliency, low management overhead, low service costs, etc. …

    Read More...
  • How to put a robots.txt file in your Windows Azure Blob Storage domain

    Google or Bing is indexing your public blobs on Windows Azure Blob Storage? Here is how to stop it...

    The idea is to put a robots.txt file at the root of the Azure Blob Storage domain. ie: http(s)://myaccount.blob.core.windows.net/robots.txt

    Follow these steps:

    1. Create a new container in your storage account in question. Name it $root and allow public access to blobs. This is a special container that serves as a default container for the storage account. Any blobs in this container may …

    Read More...