I see a lot of talk about this and to be honest I’m not on-board with a lot of the opinion. My view is that it’s fine to deploy an Enterprise’s applications to multiple public cloud providers, but wholly contain each application it the hosting provider, don’t go down the road of failing over between providers.
My thinking is driven by a number of things:
- People cite not going all in on a specific provider in case their at the mercy of their pricing. Well, there is a marketplace at work here – Azure, AWS, Google etc, are all competing with each other. The market will ensure pricing remains competitive.
- The cloud provider may go down. Well yes that may happen but probably not as often as something critical goes pop in your on-premise environment and the cloud providers engineering and response teams seem to be pretty darn good about recovery, and of course the application does have an SLA accommodating it doesn’t it? Big Enterprises do exist wholly in one provider and survive through intelligently designing their architectures to survive such events.
- I want to move my solution from one provider to another easily. Ok but why not treat that as a project based on cost and technical ROI rather than as a push button magic happens solution. While it is possible to creates environment using abstractions e.g. Terraform instead of ARM templates and CloudFormation that’s just the infrastructure (and not even PaaS). What about the data moving, that’s a signficantly hard proposition so what you have to ask what is driving the requirement.
This type of thinking also leads to the design of lowest common denominator – reminding me of that argument being applied to the various database vendors back in the day. Instead of using the business advantage gained from using a Cloud provider you wind up forcing a mindset of having to implement a bunch of infrastructure engineering to give you a level of abstraction just in case you should decide to move. Why wouldn’t I want to use the cloud providers managed container services and focus on the apps where the value is rather than spending time and money implementing and integrating container services present is the various Operating Systems and available as VM’s/Instances.
I’m a fan of leaving the infrastructure stuff to the cloud provider as much as possible – thus I really like AWS Beanstalk, Azure App Services and the various container services i.e. where I don’t have to do much to make it just work.
I do appreciate that some organisations have constraints that means they really cannot achieve that level of abstraction but it often feels like that isn’t the case, merely that the organisational culture defaults to server-based cloud use because of familiarity, ease of on-boarding and an unwillingness to push for the higher levels of abstraction.
Of course, this is my personal opinion and does not represent that of my employer.