Monday, 16 November 2015

Why PaaS sucks

Praising PaaS or SaaS, why not.. yes it saves on maintenance time, thus cost.

The "Cloud" is good, in many ways. But Platform as a Service just sucks. here is why:

- You get application containers out of the box
- Everything is there, what's is left to do is push you app code,
- Here you go your server is running. Rails, Node.js, Java, PHP.
- Those container gets updated automagically, great !

But what is actually running on those hosts ? Errrr whatever the provider choose to maintain.
So, currently, OpenShift decided to stick to Node 0.10

Can I control the container ? no. Can I decide when to upgrade, No !

So I have this baked application, running on Node.js 4, arguably it could run on 0.12. But not on 0.10 (pretty lagging behind there OpenShift!)

[ hackboard]\> node app.js 

        throw er; // Unhandled 'error' event
Error: listen EACCES
    at errnoException (net.js:905:11)
    at Server._listen2 (net.js:1024:19)
    at listen (net.js:1065:10)
    at Server.listen (net.js:1139:5)
    at EventEmitter.listen (/var/lib/openshift/5649ab437628e1e2a400019f/app-root/runtime/repo/hackboard/node_modules/express/lib/application.js:617:24)
    at Object.<anonymous> (/var/lib/openshift/5649ab437628e1e2a400019f/app-root/runtime/repo/hackboard/app.js:199:5)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:929:3

Yay, I don't have to maintain the environment or database servers, but I now have to troubleshoot and refactor the application code just to get it running ? ...

Unpacking binary distribution
npm ERR! EEXIST, open '/var/lib/openshift/5649ab437628e1e2a400019f/.npm/d6b027ca--npm-bluebird-2-10-2-package-tgz.lock'
File exists: /var/lib/openshift/5649ab437628e1e2a400019f/.npm/d6b027ca--npm-bluebird-2-10-2-package-tgz.lock
Move it away, and try again. 

npm ERR! System Linux 2.6.32-504.34.1.el6.x86_64
npm ERR! command "node" "/opt/rh/nodejs010/root/usr/bin/npm" "install"
npm ERR! cwd /var/lib/openshift/5649ab437628e1e2a400019f/app-root/runtime/repo/hackboard
npm ERR! node -v v0.10.35
npm ERR! npm -v 1.4.28
npm ERR! path /var/lib/openshift/5649ab437628e1e2a400019f/.npm/d6b027ca--npm-bluebird-2-10-2-package-tgz.lock
npm ERR! code EEXIST
npm ERR! errno 47
npm ERR! not ok code 0

Taking those steps wouldn't really solve the core issue anyway, a single dependency requiring a newer versions of the container would make the app fail. Thus forbidding huge portions of the rapidly evolving gems one can find out there for web development.

Sorry PaaS, you already put me off by having to install your own tools just to be able to upload an application, which both with Heroku and OpenShift gave me a headache early on.

I don't call this a sustainable business, hiring engineers to write tools supposedly assisting clients to deploy, run, and scale easily.
What clients need is bare infrastructure, no provider can maintain the numerous combination of versions an application might need to run at best. This business is *not* about solving real problems, it solves some and create a whole bunch of new ones. In particular for production applications.

IaaS is an infrastructure I have full control over, that's what we need. Not a restricted environment where the provider decides which versions to run. It defeats the very purpose of PaaS claims: Getting ride of cumbersome maintenance.

Also, all of this run on hardware provided by other IaaS provider. So, even considering the economy of scale, I'm being charged your service + the service of the IaaS provider, right ?

I will pay for the goods right from the source, EC2, Azure, whatever. No middle men thank you.

No comments:

Post a Comment