Wow, the cloud sure does suck. But that doesn't seem fair. Your Digital Ocean account is fine. Your Dropbox you use to share your family photos is the greatest thing since sliced bread! In fact your mom has never been happier. So why does it suck?
1) Arbitrary restrictions and limits
Your client asks to upload their forms to a server. Your boss tells you Google App Engine is amazing for this. You can manage your stack from the cloud, and you can support all the greatest languages! Once you get onto the cloud, you realize that servers will shut down whenever they feel like. Well actually, they will shutdown when Google tells them to shutdown. And if you don't want your server to shutdown, you can pay Google more money by upgrading to a B8 or some nonsense.
Google will also tell you how big your file size can be. Do you want to upload a 50mB payload? You are out of luck my friend, because the Google App Engine will tell you 32mB is all you need.
Do you think it would be useful for your database to write more than 16mB to a row? Well I hope you don't. Because Google Cloud Sql doesn't allow that. In fact, their cloud sql support is so limited that nobody is around to raise that restriction.
The only Google cloud service I would recommend is their Apps for (small) Business, GMail, Drive, etc for your work. That is pretty decent. Their cloud services stink.
2) New providers = weakness
Dropbox, Box, Drive, Evernote, EC2, S3, Linode, Digital Ocean, bunch of Google crap, and so many more cloud services who will kill for your business. The cloud is definitely the future of technology infrastructure, but in these early phases there is much chaff to be split. It is important to realize that when you sign up for a cloud service, you are agreeing to the weakness of someone elses' technology. Your customer cannot bring more performance requirements than Dropbox can handle, otherwise you are shit out of luck.
For many projects, it is easy to predict the performance needs, and it is safe to say Linode or DO will be adequate for your work. But there are many projects where the scale is not yet known. But there are even more projects with people who don't understand what a software project needs.
There are thousands of software project managers out there who don't realize their customer needs to upload 100mB data, and then tells developers to 'get it on the cloud', as if that edict will make everything perfect. Then the developer comes back and says 'Google doesn't allow us to upload 100mB' and the project manager acts like the developer is lying, and it is uncomfortable for everyone involved.
This is insanely successful marketing by cloud companies, and it results in big money for them. Unfortunately it turns into a huge problem for developers who are stuck with this weakness.
3) Shitty Documentation
Your boss tells you to start developing with this new cloud host. You check out the API documentation and try out some examples. None of them work. You spend the rest of the afternoon figuring out if it is your computer, or if there is something wrong in your code, or maybe the parameters aren't being passed correctly.
At the end of the day you send an email to customer service. The next day they tell you the API endpoint has changed, and they let you know they are very sorry. Sorry indeed.
When you deal with such a new product, it is easy to hit stale documentation. And newer products are also lacking in community support.
4) You can't send an email
Back in the early days of hosting, you could send your email from your own host. Sure you had to worry about Postfix and Sendmail and Dovecot and Exim and port 25, 587 and TLS and SSL and 100 other things, but at least your mail would send. Today your cloud host is probably blacklisted by GMail and Yahoo! Mail and and every other major mail service.
It is easy to send spam from cloud hosts and people often do. This results in IP addresses getting blacklisted by major mail providers. Cloud hosts often recycle their IP addresses to their numerous instances that are always going up and coming down. That cloud slice you just put up? Who knows what the last owner was doing with the IP address.
The cloud is great because it makes things cheaper for hosting providers and it makes things cheaper for customers. We don't pay for what we don't need. And hosts can allocate expensive resources to people who need it. But cloud hosting is still a brave new world, despite how quickly it's grown up. When we commit our apps to a cloud hosted world, we should understand the limitations of the host, and be prepared to work within those constraints.
As a software project owner you should be acutely aware of the limitations of the cloud. Never attempt to do more in the cloud than can be expected by your host. Make sure you understand the restrctions and tiered pricing plans your cloud provider imposes.
As a developer, you should be clear and direct about the limitations in the cloud to your software project manager. It is important for developers to speak up against these issues because if we do not, cloud hosts will never fix these problems. Maybe with patience and communication we can fix these issues for good.
Dev/Code/Hack is a technology and business blog by me, Par Trivedi. I'm a software engineer and I've been writing code and managing teams for over a decade. This blog serves as a way to share thoughts and ideas about the tech/startup community, and also to educate newcomers to software development.