[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