PaaS on Them

Not so "Enterprise" Ready

Posted 2 years ago by Tom Maiaroto.

So I've been giving some PaaS services a try. To be completely fair I don't want to mention which at this time. I may revisit others to get a more comprehensive comparison but I've been turned off for now.

I've been hosting my small side project, Virality Index, on a PaaS to give it a test. The most attractive thing about a PaaS is the zero-config. You launch an instance, attach any databases, etc. and go. You can deploy your code from the command line which is very comfortable alongside Git. Then, it goes into the "cloud" and is supposed to scale and be wonderful.

Enter a few problems. First off, I'm not going to complain too bad about some free hosting. Many PaaS' will provide a free tier so you can try them out. This is great and I also think very important because people are a little cautious about them and they know it. They know conversion will be hard. I have to say, there's good reason for this caution. You can't control anything so if something goes wrong, you're really at someone else's mercy.

The first thing I noticed was that resources in a PaaS are not the same as a normal VPS (I use Rackspace and love them). My 512MB server was seemingly outperforming a PaaS with about 1GB of RAM. I also run a database on the same server as the web server. I think this is actually reflected in PaaS pricing. Typically you see more RAM listed for cheaper than what you'd find over at Rackspace. However, without any sort of testing, the feeling on a PaaS is that you get less performance pound for pound. This prompts them to tell you to upgrade. All the better for them. If you're very familiar with the resources your application should be utilizing from hosting it on another server you start to begin to ask, "Why do I need to upgrade now?"

Feelings aside, there are some major issues with one of the PaaS' I tried. The command line utilties kept failing. I would often need to issue the command to deploy or update the application several times. This is not "enterprise" ready. What if you had a script that auto-deployed each night? You could be missing deployments. It doesn't retry. You need to manually retry. It also took a varying amount of time to deploy...Too long.

The other failures at the command line were those for dumping data from the database service and when trying to tunnel in. All in all this made the command line utilties annoying to use and it actually slowed down the development process. Again, this also became a problem if I wanted to run nightly backups for my database. I couldn't reliably do so.

I know, you should always code a script like that to handle failures...But there's simply too many failures and these tools need to be dependable. Git is with GitHub. You will fail to connect to GitHub and grab data less than you will fail when trying to connect to some of these PaaS'. 

Failures aside, it's also harder to debug applications. The error logs are limited and difficult to work with. You have no control over when they are cleared as well. Naturally since you can't see what's going on with the server you also can't understand how your code is performing. No tools like "top" etc. This also loops back to my first point about trust. They could be telling you to upgrade when your CPU and/or RAM usage isn't really that high. In fact, as far as I could see, you have no clue what the CPU usage is nor do you know how much you're getting. It's not transparent at all in the pricing/features listed on their sites. Really, "1 core" means many different things and isn't that helpful. Even if they told you, you have no way of confirming. Perhaps with your own code? Maybe...But why build all these tools to check up on their promise?

I got really burned on my project. I'm trying to ensure it runs and there's some automated tasks that it performs. While the PaaS said the server was running, it really wasn't. I had to restart it and then, voila, everything was working like magic again. I believe the actual server may have been able to be pinged, but there could have been an error (I can't simply believe my code is perfect or that there wasn't an edge case) which typically would have cased a reboot. In this case it did not. So for days my project wasn't running and now I have a problem with a huge gap in missing data. Just as I'm trying to show it to people. Burn me once PaaS shame on you...But it has really been more than once. I just ignored all the warning signs. This was just the first problem noticable to the outside world and I can't afford that. Imagine how angry I would be if I had to pay for it.

I really like the idea of a PaaS. Don't get me wrong, I think they are the future (for most needs at least - certainly replacing shared hosting). However, I just don't think any of them are dependable for mission-critical needs. They'll run a basic application just fine. You may never really notice a problem but, if you want more control over what's going on, you'll really want to avoid them. I'll have to more thoroughly test them. When I do, I will write a review. For now, I'd pass on them if I were you.

Filed under
comments powered by Disqus

Search for Posts

Popular Labels

social media virality score general internet web development reviews and opinions php web tools hosting lithium web design

Recent Posts