[EXTERNAL] - Elixir for bosh director?

Jonathan Stockley

I think you first have to ask what real (as opposed to theoretical) problems does current bosh director have, where the effort required to fix them is such that it would be more efficient (in terms of time, resources and cost) to re-write the whole thing, possibly in another language.

I have experienced a couple of times where it was decided to re-write a well established major piece of software form the ground up. Without exception, it always took far longer than the original estimate and didn’t’ have the features of the original.


From: Leandro David Cacciagioni <leandro.21.2008(a)gmail.com<mailto:leandro.21.2008(a)gmail.com>>
Reply-To: "cf-bosh(a)lists.cloudfoundry.org<mailto:cf-bosh(a)lists.cloudfoundry.org>" <cf-bosh(a)lists.cloudfoundry.org<mailto:cf-bosh(a)lists.cloudfoundry.org>>
Date: Thursday, April 27, 2017 at 6:01 AM
To: "cf-bosh(a)lists.cloudfoundry.org<mailto:cf-bosh(a)lists.cloudfoundry.org>" <cf-bosh(a)lists.cloudfoundry.org<mailto:cf-bosh(a)lists.cloudfoundry.org>>
Subject: [EXTERNAL] - [cf-bosh] Elixir for bosh director?

After more than 6 months working with elixir in prod, it crossed my mind that maybe it deserves some time of experiment and think on the possibility of a TOTAL REWRITE OF BOSH DIRECTOR USING ELIXIR.
Some of the pros that I can list out of the box (without digging to much in the technical side) are:

* Ruby like syntax (I know I know... This means a lot for people that don't like erlang syntax) (I'm used to both so far)
* Easiness of development thanks to OTP & FP.
* Scalability (ex: http://www.phoenixframework.org/blog/the-road-to-2-million-websocket-connections<https://urldefense.proofpoint.com/v2/url?u=http-3A__www.phoenixframework.org_blog_the-2Droad-2Dto-2D2-2Dmillion-2Dwebsocket-2Dconnections&d=DwMFaQ&c=ZgVRmm3mf2P1-XDAyDsu4A&r=62hyuFHUBRZl3K63suuxEK4tHN8enyiCVaHEAagYkK4&m=ITkJUBdozfcbUccDPmz2sSgeNGohUNiSGP_SRUbDV1U&s=lfCUFpdQRuvF6BimtsLsV3CX4oXrU7gmdhjpJXwx7zs&e=>)
* Fault-tolerance
* True no downtime updates.
* Simplification:
* nats can be deprecated.
* All the other jobs (Director, Registry, Blobstore, HM & CPI) can to be OTP/Apps (Mix powered) under the same umbrella project.
* Clustering out of the box
* Perfomance wins, giving the nature of elixir/erlang/OTP is easy to guess that a single bosh instance will gonna be able to manage more deployments and bigger deployments than it does now.

This is a suggestion and I would like to know if you agree or don't and why.