Choosing a provider is incredibly important when it comes to the cloud. There are some fundamental differences in approach between the providers. There are several components to selecting a provider and, for a while now, I’ve felt like one of the biggies is less obvious – the approach you want to take to managing your resources.
My own experience with different providers is limited somewhat to Microsoft’s Azure and Amazon’s AWS. I can’t really speak to Google’s offering at this point. When I talk with people about the core *management* differences between the two overall massive platforms, I find myself comparing the worlds of Linux and Windows. (Bear with me, it’s a LOOSE analogy).
First, here’s a great post about comparing all three platforms – the pros and cons and some observations. I found it on Network World. What caught my eye on this was a the pro and con look at the platforms, from a very high level. I think the notes about managing the platform and such are dead-on.
Second, when I look at our own experiences, and going back to my (possibly horrible) analogy, I see AWS as the “here are all othe tools, you can do ANYTHING with it, and it’s amazingly functional as you add the pieces together. I see Azure as the “let us help you do it right” platform. Their management, tools, UI, etc. are all about sheparding you through the process. This isn’t a bad thing! It’s a different approach.
When it comes right down to it, the functional pieces you can do (before you get to specifics like database stretches, etc.) are fairly close (more in the post above), but the “how” of getting it done is very different. This difference is often overlooked when considering the platform.
I believe it should be considered on par with the functional pieces. As you’re looking at platforms and capabilities, take time to get to know how things are done as well. It’s one thing to mark the box for auto-scaling based on load. It’s another to understand how it’s done. The bare-metal approach may be required for your application (to allow more control, more management, whatever) or you may prefer just moving a slider over and setting up operational parameters that manage the scale operations.
Just know that the “how” of getting it done talks to the mindset of the provider too. It shows you how they anticipat you and them managing your resources and making things available going forward.
The complexity of the AWS environment is a good thing when you need options but can be very difficult to get up to speed on when you set up options, and it *feels* like a lot of moving parts (and there ARE a lot of moving parts).
The managed feel of the Azure environment is highly productive and curated. But this managed piece can make you feel like you have less control, fewer configuration options.
Pros and cons. I just think the approach to implementation is also a key factor for consideration.