Interesting article, although the author mixes two different problems:<p>(1) the fact that "cloud" (or in fact any virtualized system) is hard to debug, especially when it comes to performance problems;<p>(2) the fact that most often "cloud" systems come packaged with "elasticity" solutions;<p>Unfortunately I think both issues described are true, however none of them are deal-breakers. Uncertainty when comes to performance can be taken into account, as it happens at many layers, not only the OS / VM, including the programming language level due to garbage collection.<p>Now regarding the auto-scaling based on CPU, this is unfortunately too true... All cloud providers (I have experience with AWS) are quick to sell you CPU-based auto-scaling. However CPU usage doesn't always translate to a true load metric, especially for applications with non-uniform request patterns.<p>This is why I have taken another approach: identify the number of requests a single VM can handle in parallel, and if that threshold is reached, although the server will queue requests and serve them in a FIFO manner, start creating new VM's.<p>(With AWS auto-scaling group rules it is a little bit more complex, but that is the gist of it.)