When weighing whether to go to the cloud or which cloud service to use when you do, it's a no-brainer to make sure the service's reliability, cost effectiveness, and security track records match your requirements. However, many cloud buyers don't carefully consider two other critically important characteristics of any cloud service: the degree to which you can control your services without intervention from your vendor and the degree to which you cede responsibility for day-to-day management tasks to your vendor.
When I think back to some of the more well-publicized failures of megascale cloud infrastructures (Amazon Web Services and Microsoft Azure), each has been followed by enraged forum posts from users who had incurred downtime, lost production data, or both. It's entirely understandable for customers to be irate when a service they're paying for fails. However, it's also an excellent indication that these cloud users didn't fully understand that they still bore a large responsibility for managing and protecting their systems.
Cloud vendors should shoulder some of the responsibility for this disconnect. Although it might not be good for business, big, red warning text suggesting that users are responsible for backing up their data or maintaining replicated failover instances in different availability zones might have dampened some of those anguished cries.
I believe the responsibility for understanding what a service will and will not do for you (or allow you to do for yourself) rests with the user. You don't need a computer science degree to understand how this works in the cloud -- knowing what to look for in a cloud service is very much like what you'd look for in any outsourced service.
The third deployment option -- do it myself -- is always the cheapest, and it would let me control every tiny detail of the job. However, I would also end up bearing all of the risk should I fail to do something important (like caulk the tub surround or ground the electrical outlets). I'd probably also spend many a precious weekend making it happen.
Know your risks and rewards
These are types of decisions that almost any homeowner is familiar with. It so happens that they bear a striking resemblance to the challenges involved in figuring out how to appropriately use the cloud. For the needs and design phase, you can do the research yourself on what cloud service to use to handle your workloads, or you could hire a consultant to help you. If you do the research yourself, you'll undoubtedly learn more and spend less money, but you also might miss details a more experienced eye might catch.
For the deployment phase, you have essentially the same choices for the cloud as you do for your bathroom remodel: You can go with a full-service IT provider (the general contractor) that will manage every aspect of your environment, including backups, patching, site failover, and user support. You can use a largely DIY infrastructure-as-a-service provider to drive your services while you provide your own support and disaster-recovery capabilities (the equivalent of hiring subcontractors). Or you can build your own private cloud and retain responsibility and control over everything (the true DIY approach).
Although I've primarily focused on cloud infrastructure here, the same decisions apply to applications and SaaS. If I want to run a complex website with a content management system, I can have a hosting company that specializes in the design and operation of such sites handle the whole thing, buy a straight Web-hosting service and install and manage the CMS myself, or buy and colocate my own hardware and do it all myself.