At Beaty Consultancy, we speak to new clients all the time, which is awesome! People build really amazing platforms using public cloud technologies, and we advise on the best way to do it. One of the most frequent themes is around not being locked to one particular cloud provider. So today we’re investigating Avoiding Cloud Vendor Lock-In.
First of all, who are we talking about. Who are the big cloud vendors? Right away, we can think of Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform. But there are lots of others, such as DropBox and BackBlaze for storage. Xero and QuickBooks for finance software. You get the picture – there are loads of cloud vendors, each selling you something to meet a different need within your business.
Just like in every other area of trade, sales from these cloud vendors are driven by customer demand – you and me. In these crazy covid times, that demand is only increasing.
So why would we be locked-in to one platform or another? After all, a file on a computer is pretty much the same all over isn’t it? We solved that years ago – I can take a document from my mac and make it work on your Windows PC without much effort, right?
Well yes, but that’s because developers have done all the hard work for us. The systems written for modern computing environments do so much for us behind the scenes, you wouldn’t believe! And even then, developers rely on other developers to make pieces of apps. For example, if you want to send something out over the Internet from your app, the chances are that you want to encrypt it before you do. Not every app which encrypts data has bespoke code written into it to do that encryption (some will), but rather the app will call out to another piece of code which only ever does encryption. So now, the developer of that swanky taxi app just has to concentrate on tracking cabs, and can just lean on the code another developer made who was a specialist in encryption.
The same happens in the cloud. You want to store some data as part of your cloud architecture? Well you’re going to want to make sure that data is being backed up, that the storage is super fast and that everything is encrypted. That might take you a week to set up a fleet of servers to achieve those goals. And now, you have a fleet of cloud servers you need to patch, secure and otherwise babysit. That’s why you don’t bother, and you just use something like Simple Storage Service (S3) instead.
You can read more about cloud storage in our earlier blog post.
Most apps and software platforms are pieced together from parts that other developers and technicians perfected, like cloud providers have perfected file storage. But we’re also saying that computer files are pretty portable, and stuff just tends to work these days – so where’s the problem? The problem is reliability.
Can’t you just copy files from something like S3 to Azure Blob Storage, point your app there, done, right? Maybe, yeah. But how important is it that your files work flawlessly every time a user requests one, from all the different parts of your app that touch files? Really important, right? It isn’t that one storage provider is better than another – frankly they’re all amazing. But your app might have been set up to use one over another, nuances and all. So how confident would you be to just switch over to another one? Or maybe you couldn’t.
Okay, there isn’t one. If you script out your infrastructure using something like Terraform, you can deploy that infrastructure in another cloud fairly quickly, but that’s not really the point is it.
Think of it this way; if your business needs physical premises too, are you locked in to that? Would you hold off on painting that wall just in case you don’t want to renew the lease, and you would feel locked-in? Maybe. Would you spend thousands of pounds to move a doorway so it had better fung shui? Probably not. And that’s the point – these things are all on a spectrum.
The best thing any of us can do is to use the best cloud technology for the job right now, and document everything! By documenting things I mean with traditional documentation, as well as making sure we use Infrastructure As Code wherever possible, since this is sometimes known as self-documenting code.
But also, get good advice. Talk to your local friendly AWS certified cloud solutions architect about the best solution for your business.