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!)
[nodejs-hackathonboard.rhcloud.com hackboard]\> node app.jsevents.js:72throw er; // Unhandled 'error' event^Error: listen EACCESat 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 distributionbuild/Release/bitcoind.nodebuild/Release/bitcoind.node.signpm 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.lockMove it away, and try again.npm ERR! System Linux 2.6.32-504.34.1.el6.x86_64npm ERR! command "node" "/opt/rh/nodejs010/root/usr/bin/npm" "install"npm ERR! cwd /var/lib/openshift/5649ab437628e1e2a400019f/app-root/runtime/repo/hackboardnpm ERR! node -v v0.10.35npm ERR! npm -v 1.4.28npm ERR! path /var/lib/openshift/5649ab437628e1e2a400019f/.npm/d6b027ca--npm-bluebird-2-10-2-package-tgz.locknpm ERR! code EEXISTnpm ERR! errno 47npm 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.