So you port your app to the cloud. Yay! It works! But the app is dead, missing, or spewing errors an average of 10 minutes a day. The solution is a new distributed and redundant cloud design. Eventual consistency, redundancy, and distributed locking seemed so easier at those cheery developer conferences than now. All the developers start hooking up open source libraries that will surely solve all the problems. That needs just a few more servers to get it working. Add something to sift through the gigabytes of new logs. The app has to be re-designed to eliminate a few features that can't work well with a distributed architecture. As time passes, you start to wonder why code for recovery scenarios is getting larger than the happy path. Ok, it runs! Your app is never dead or missing but it's slow, glitchy, and never stops spewing warnings. You slay bug after bug but there are still some lurking designs needing immediate consistency or singleton tasks to work reliably. You yearn for the days of in-house servers that were fast, lean, simple, and ran for months without a moment of downtime.
PS:
Dear Netflix,
I know when you're running Chaos Monkey. Please stop it when I'm trying to find a movie.