[erlang-questions] Embedded vs Interactive - Why embedded?

Ryan zzantozz@REDACTED
Thu Mar 10 20:37:14 CET 2016


On 03/09/2016 08:32 PM, zxq9 wrote:
> I've often wondered this myself. It is amazing and wonderful that Erlang is
> able to deal so smoothly with the embedded case and even provides a huge
> set of built in tools for getting systems running that way and manipulating
> them -- but very few of us non-telecom folks are deploying to telephone
> switches.
>
> I've written an entire system around dealing with Erlang code as signed
> source bundles from a repo and dealing with the runtime as a more ordinary
> language runtime which pulls and builds needed modules/version as necessary
> within a given environment context (somewhat like Python's virtualenv). I
> used this mostly for deploying client side code and keeping it up to date
> without the hassle of building releases everywhere or making the users
> themselves deal with constant "There's an upgrade! Install it or people
> will think you have cooties!" messages (which they will disregard anyway).
>
> This was easier for new coders (coming from backgrounds where this is the
> norm), small business system administrators (who are used to maintaining
> runtime compliance with a given set of software they have to use), and
> users (who are used to this sort of "I click it and things happen" utility).
>
> But it is clearly heresy to do this, so I tend to not mention it much.
> I've even wondered if I should have been embarrassed to have committed
> such sacrilege.
>
> The original version of this system is still in production, but behind
> closed doors (>.<). It was a bit of a monolith anyway (grew into its own
> in an, um, "organic" way as I added to it). I intend to reincarnate it
> as a set of smallish utilities, but haven't yet had the time, and as far
> as I can tell there is just about zero interest in the community for
> anything but releases, so just haven't put much effort there.
>
> In the back of my mind I have always wondered: "This isn't so hard... why
> isn't this considered normal?" And after experiencing no problems in
> production I always wondered if I had just lucked out dodged some
> horrible situation too foul to document by sheer chance -- or if this
> really is indeed not a big deal and our obsession with releases is just
> part of the tribal tradition.
>
> So... why?
>
Thanks a *ton* for that detailed feedback, Craig! I'm glad to know I'm 
not the only one questioning the norm, and it's really good to hear that 
at least one production system has run this way without obvious issues.

I agree that interactive mode seems to be more natural for coders coming 
from other language backgrounds to understand. That way, "code path" can 
be understood roughly as "java class path" or "ruby gem home", etc. The 
system you're describing sounds interestingly like a for-fun project I 
built to dynamically build and execute new versions of code on demand 
for serving HTTP requests, depending on what code version the request 
asked for.

I'm going to continue pursuing this idea, and unless someone can 
convince me otherwise, I'll try switching one of our production nodes to 
run interactive so I can compare its behavior to the others that are 
running embedded.

Ryan



More information about the erlang-questions mailing list