We all know at least one Cloud Dropout: companies that started with cloud computing, successfully grew their infrastructure, and then hit The Wall. The Wall varies based on the specific case, but is in order of likelihood: costs, performance and/or availability.
Sometimes these companies make very public blog posts about how they simply outgrew the cloud. Some even use it as an opportunity to grandstand their thought leadership (e.g. cloud bursting, hybrid cloud). More often than not, they quietly transition into a co-lo and leave the cloud in the rear view mirror.
I like to think there are two kinds of Cloud Dropouts: those that are right, and those that are wrong. In the right category are companies that use cloud computing to establish their businesses, but discover over time they have use cases not well suited to the cloud. Some specific cases include low margin businesses, or ones that require greater performance than currently available in the cloud.
But then there are the ones who are wrong. Occasionally companies make a mistake from the start by implementing solutions that were never going to be well suited to the current performance and availability characteristics of the cloud. More often than not though, they instead fail to make the necessary organizational and infrastructure investment to make the cloud successful (e.g. failure to architect for the cloud, inability to manage costs). These companies often convince their management, their engineers, and their boards that this was the only way; the cloud was simply not ready for their use case. But simmering below the surface is the real reason for their failure: their execution of using the cloud.
The harsh reality is that when a customer leaves the cloud, it’s highly unlikely they will ever be coming back. Once an engineering team deploys software on physical infrastructure, like a junkie to his dealer, the gradual reliance on this deployment model begins. Want to improve the performance of your key value store? Just switch to 10 gig. Need a boost in database performance? Upgrade to 64 cores. Need another 15% performance from your application servers? Drop the hypervisor.
So before deciding to be a Cloud Dropout, take a long and hard look at your use case, and the current maturity of the cloud. If you leave the cloud, do so because your use case is too far out in the cloud horizon - not because it’s faster/cheaper/easier in the short term to go physical. Make your decision deliberately, dispassionately, and with real data.
Remember: a cloud is a terrible thing to waste.