A Private PaaS with Mongrel2 and ZeroMQ
notes.ceondo.com
notes.ceondo.com
Great to see this technology is ready nowadays and can be used for production systems :)
On the other hand, ZMQ for the backend is just a pure pleasure and I haven't had a single failure of my components for more than 1 million real requests involving many ZMQ backend interactions.
Though to be fair, we were making it a bit complicated by suspending/resuming the OpenVZ containers. From that we sometimes got dead ZMQ connections that were black holing all traffic (incredibly hard to debug - ended up switching because of it).
- Is mongrel2 getting good development? The latest release was in June, and the latest commit in the canonical repo seems to be from July...
- Is there good support for RFC-version WebSockets yet?
- Is there easy/performant stuff for simple asset serving via mongrel2, or should I use nginx for that?
2. The same, in the develop branch, there are still some questions on how to best implement it like which parts must be done by the handlers and which by Mongrel2, but the coders involved are good and very pragmatic, I bet the results will be a high quality implementation.
3. http://notes.ceondo.com is served by the "Dir" handler, that is, direct static files from disc without going through the asynchronous ZMQ based sequence. It is pretty fast.
Looking forward to your explanation.
* Many PaaS offerings (like AppFog) are not like shared hosting at all, only the free offering hosts people multi-tenant, when you pay you get dedicated VMs
* The platform in platform-as-a-service means it connects you to fully managed services (on Heroku there are all the add-ons as well as Postgres, on AppFog there are add-ons and MySQL).
* One of the most compelling parts of PaaS is that it is managed by someone else so that you don't get a call at 3am when it is broken
Moreover, if you were to run a PaaS on your own, it would make more sense to try Cloud Foundry which has specifically addressed at least the services aspect of the above comments.
1. Everything is running on dedicated hardware.
2. The system provides MongoDB, PostgreSQL too, it is just managed by us because we need this level of control to put PostgreSQL on SSD and special high CPU instance for scientific computations. Cf point 1.
3. Hosting services for the past 10 years, crossing my fingers, I have never been called in the middle of the night. But yes, the risk is there.
For Cloud Foundry, I don't know it, our solution is extremely light on resources we have full control of it and we are extremely happy with. We can hack/extend as we want and all in all, it is very few lines of code and I personally love simplicity.
Update: Ok, you are from a "Fog" provider, now I understand the defensive tone of your post. Do not worry, the goal of this note is to share what we do and give people willing to go this way some inspiration. Not trying to compete with you :)
Anyway, we created this PaaS because it brings us real benefits and a competitive advantage. For our case (not the usual one as we need to run scientific computation with specific hardware and software) it is better to have full control of our hardware. We are outliers and most of the people would be better going with a good PaaS provider.
Unfortunately the organisation I currently work for managed to screw it royally. Firstly, we mandated .Net as the technology paltform (which is the most unscriptable and obtuse platform ever in the history of time). Secondly, we made the deployment too complicated (one deployment is 30+ VMs and about 20 SQL server databases!). Thirdly, we wrote our own tooling entirely (there is a lot of Not Invented Here in the .Net space). Fourthly, we let management in on the process (who don't know arse from elbow).
I love the detail that we went through when describing it.
- distributed process manager: http://projects.ceondo.com/p/diprocd/
- the pre-receive hook taking care of packaging and deployment: http://cdn.ceondo.com/bareku/buildpack-python.tar.gz
If you need something similar, you will most likely adapt it heavily for your own setup, so, I am not sure if a full release is feasible.