Onor.io

Onor.io

Joe Armstrong's "Systems that run forever self-heal and scale" (and my review of it)


My Review

A Review Of:

“Systems that run forever self-heal and scale” by Joe Armstrong (Lambda Jam 2013)

I am a fan of Joe Armstrong. I wish he were still with us to share his wisdom with us (he passed away a few years ago.) Luckily for us he left us a great book and several great talks that help to understand how he created the excellent industrial strength software he created.

It’s not an exaggeration to say that Erlang and the BEAM (which is the purpose-built VM which Erlang runs upon) has been used to create real world systems that have run for literally years without down time. Read that again. YEARS. Anyone who’s ever gotten the “holy crud, the system’s down” call at 2 am will appreciate the wonder of having systems that run for years without tinkering and without failing.

So how did Erlang achieve this miracle? Did they write code that they burned into an eprom and all it does is print “Hello world” trillions of times in an infinite loop? Nope—Erlang was created to run phone switches. If Erlang fails you can’t make phone calls. Again it’s not an exaggeration to say that Erlang literally runs on more than 50% of the phone equipment in the entire world.

So how did they achieve this seeming software development miracle? Well that’s what Joe Armstrong discusses in this talk. The thing that really appeals to me (and why I was and am a fan of his work) is that he didn’t approach the problem from some theoretical, abstract CS approach. He (and Robert Virding and Mike Williams, the co-creators of Erlang) had a practical problem to solve and they created Erlang in order to solve it. They didn’t set out to build some world-killing technology—they set out to solve a difficult engineering problem and just happened to build one of the best engineered solutions I’ve ever seen.

So what are some of the use cases that would lead us to use distributed systems? There are a couple that come to mind without thinking long and hard:

  • LLM’s: Training LLM’s is hardware intensive. If I can deploy 100 machines to training an LLM then I can have the trained model that much faster. If I can deploy 1000 machines—10 times faster.

  • Uptime: As Armstrong points out there’s never been a time when Google is taken down for a software upgrade. Since 1998 there’s never been a time when I went to look for something on Google and seen the message “Google is down for maintenance; come back later” Distributed computing allows you to keep things up and going because you don’t have to take things offline in order to upgrade machines.

In sum this talk isn’t some simple step-by-step “How to build your own distributed system” talk but it is a great introduction to the subject—why it’s tough and what we can do to make it easier to solve. Plus Joe was a great speaker who was very good at explaining a pretty tough concept.

“Systems that run forever self-heal and scale” by Joe Armstrong

Author’s note: This review was published in my January “Impractical Engineer” Newsletter. If you’d like to see the whole newsletter it’s here: The Impractical Engineer I hope I can be forgiven for plugging my newsletter but this does seem like a talk that Elixir folks might be interested in seeing.

Most Liked

rvirding

rvirding

Creator of Erlang

Yes, we were out to solve a problem! What we found later was that the properties of the problem we were trying to solve are much more general than we had realised. I still remember when I heard that someone had programmed a webserver in Erlang thinking why would anyone want to program a a webserver in Erlang. Well, of course the answer is that they many very similar requirements!

12
Post #2
Onor.io

Onor.io

I have a very deep-seated admiration for the work the three of you did! It’s a major feat of engineering and it was impressive and still is impressive.

Where Next?

Popular in Talks Top

CodeSync
Code Sync: Keynote: Gang of None? Design Patterns in Elixir - José Valim | ElixirConf EU 2024 Comments welcome! View the <span class="ha...
New
New
New
ElixirConf
ElixirConf: ElixirConf 2022 - Brian Cardarella - What is LiveView Native? Comments welcome! View the <span class="hashtag-icon-placehold...
New
New
AstonJ
#Day 1 ElixirConf 2017 - Day 1 Keynote - Justin Schneck (Discussion thread) ElixirConf 2017 - My Journey from Go to Elixir - Veronica L...
New
axelson
ElixirConf 2017 - Building an Artificial Pancreas with Elixir and Nerves - by @tmecklem People with Type 1 ...
New
axelson
ElixirConf 2017 - Managing Tables With Elixir and OTP - Robert Beene We’ve all waited for a table at a resta...
New
TwistingTwists
I am in middle of watching this. I have to stop every minute and think over what Chris just said. The amount of info he sends over that ...
New
Lawrence_elixir
ElixirConf EU 2019 talk videos ElixirConf EU 2020 - Early bird tickets on sale now! Website: http://www.elixirconf.eu Twitter: www.t...
New

Other popular topics Top

vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New
albydarned
Hello all! I am typing this post from my new MacBook Pro with the M1 chip. I’m loving it so far, and will probably use it as my daily dr...
New
sen
Hi All, I set a environment variables in dev.exs , like below code. when i start server, how can i set the ${enable} value? thanks. d...
New
vrod
I am using the Starship cross-shell prompt – it seems pretty nice, but I get some errors: [WARN] - (starship::utils): Executing command ...
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New
hariharasudhan94
Lets say I have map like this fetching from my database %{"_id" =&gt; #BSON.ObjectId&lt;58eb1a7a9ad169198c3dXXXX&gt;, "email" =&gt; ...
New
AstonJ
Seen any cool LiveView demos, sample apps or examples? Please post them here! :003:
New
dogweather
I wrote this comment on r/haskell, and it’s not popular there. :wink: But I think I’m on to something… Haskell reminds me of Java, and e...
New
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New

We're in Beta

About us Mission Statement