- I have readable access to all my data, code, frameworks and meta data that may have been created as a result of me using the service. It's my data after all, not yours.
- The service is appropriately secure, scalable & resilient and must be charged for on an "as use" basis. I certainly don't want to pay for something that I'm not using, which means I also don't want to pay for using my own machines.
- The T&Cs should be clear and provide me with some guarantee that the service will not be terminated nor fundamental elements changed without reasonable notice and an alternative solution.
- Pricing should be transparent, efficient and competitive.
Assuming the service meets my basic requirements, then I have three basic rules of happiness:-
Rule 1: I want to run the service on my own machine.
This enables me to trial out a service before even considering adopting a cloud version and gives me a last resort fall-back option. I certainly don't want to be in an environment where I can't do this for whatever reason, including vendor failure or discontinuation of a product.
Rule 2: I want to easily migrate the service from my machine to a cloud provider and vice versa with a few clicks of a button.
If the test went well then I'll probably consider dipping my toe in the water. Hence I want an easy to use transfer mechanism for my data (including any code or framework elements) from my machine to an external cloud provider and vice versa. I do not want to learn any specialised skills nor require any technical knowledge beyond pressing a button.
Rule 3: I want to easily migrate the service from one cloud provider to another with a few clicks of a button.
If I'm going to use a cloud service then I want a choice in providers and an easy mechanism of switching between alternatives. I do not want to discover that switching only covers half of the service and fails to cover other elements like the storage subsystem or a messaging service.
For these reasons, I'm not very happy with most of the current cloud offerings.