Nothing is black or white. From my past experience, when you start to have services that are i/o intensive, the colocation is a good option especially that you can easily control or tweak the underlying hardware. On the other hand, if you start with a small scale service and you don't have a large distributed datastore "cloud hosting" is often simpler and cost effective.