Web development is full of engineering astronauts who think they need 8 levels of abstraction to solve relatively simple problems. Oh, and for that 0.1% that does actually switch, they soon realize they're abstractions weren't as good as they thought they were and they have to reimplement every interface anyway.
In regards to setting up a new server for a new provider, or docker, you have some boiler plate:
-> create script to attach docker to provider
New provider...
-> create new script to attach docker to provider
----
-> create script to provision server on provider
-> run generic script to configure it how I want
New provider
-> create new script to provision server on provider
-> run generic script to configure it how I want
In this regard, moving from 1 provider to another, is identical.
How do I abstract this unique idea of IOPS that AWS has?