We have VMs, Containers and now I discovered Isolates

Cloudflare as workers to run serverless code without using containers:

So it seems that Isolates is based on:

What we ended up settling on was a technology built by the Google Chrome team to power the Javascript engine in that browser, V8: Isolates.

And they define Isolates as:

Isolates are lightweight contexts that group variables with the code allowed to mutate them. Most importantly, a single process can run hundreds or thousands of Isolates, seamlessly switching between them. They make it possible to run untrusted code from many different customers within a single operating system process. They’re designed to start very quickly (several had to start in your web browser just for you to load this web page), and to not allow one Isolate to access the memory of another.

We pay the overhead of a Javascript runtime once, and then are able to run essentially limitless scripts with almost no individual overhead. Any given Isolate can start around a hundred times faster than I can get a Node process to start on my machine. Even more importantly, they consume an order of magnitude less memory than that process.

Anyone knows more about the use of Isolates outside the use in the Browser and Cloudflare workers?

Am I missing any other technology as an alternative to VMs or containers? (other then the BEAM :wink: )

6 Likes

They certainly seem to be going in the right direction:

Though I have my doubts they will be as lightweight as BEAM processes…

(Maybe we need a thread for ‘alternatives to the BEAM’? :D)

4 Likes

The reply?:

Memory

The Node or Python runtimes were meant to be run by individual people on their own servers. They were never intended to be run in a multi-tenant environment with thousands of other people’s code and strict memory requirements. A basic Node Lambda running no real code consumes 35 MB of memory. When you can share the runtime between all of the Isolates as we do, that drops to around 3 MB.

and for startup time of a process:

Because Workers don’t have to start a process, Isolates start in 5 milliseconds, a duration which is imperceptible. Isolates similarly scale and deploy just as quickly, entirely eliminating this issue with existing Serverless technologies.

So 3MB is clearly much more memory needed than the KBs from the BEAM, and 5ms seems an eternity in the BEAM land :wink: as pointed out in the Elixir forum by @malaire:

3 Likes

Haha :laughing:

I do wonder whether anything has caught up to the BEAM tho - WhatsApps famous post, and Elixir gaining traction helped pushed Erlang back into the limelight, leading to lots working on trying to mimic or better it… wonder how all that has turned out now a few years down the line?

1 Like

(Apologies, I’ll just copy-paste what I wrote in ElixirForum)


The only thing I am seeing in this idea is that somebody doesn’t seem to get the message that Javascript is not the future :laughing:

“Stop trying to make JS happen. It’s not going to happen.” , as one meme goes.

The JS runtime is awful. As much as you try to fine-tune it it will inevitably spill its guts at the first sign of trouble. People spent weeks hand-crafting a Phoenix-like case for 1-2 million connections on a single server and it was a back-breaking work.

But that community doesn’t seem to be learning.

3 Likes

Not a fan of Javascript either, but a fan of everything that makes it easier to run code securely in isolation at low cost :wink:

This being said I am just curious of what other things may exist out there that I may not be aware :wink:

P.S: I just discovered Isolates because at work I am doing an integration of our product with Coudflare workers.

1 Like

I think the world is slowly waking up to the fact that mega-small actors communicating with messages is TheRightWay™ but I believe the result is going to be something that compiles to WASM (which could be anything but I’d prefer if it was Rust), supported by a language-neutral runtime that mimics, or hopefully is better than, the BEAM.

2 Likes

Which WhatsApp post are you referring to?

1 Like

Didn’t they make a post about number of messages they’re sending a minute per server? I can’t find it now but I remember the excitement it generated. It might have been a talk? :thinking:

Don’t forget unikernels!

I’ve wanted to play around with Mirage for a while but never made the time. There are several unikernel projects worth looking into.

3 Likes