HackerTube
HomeLongsLikedHistoryWatch laterCategoriesPlaylistsSettings

ElixirConf 2018 - Docker and OTP Friends or Foes - Daniel Azuma

ElixirConf4 HN recommenders · recommended in 5 months, 2018-2023
YouTube
16K views · 8 years ago · talk · dated

Daniel Azuma's ElixirConf 2018 talk on whether Docker and OTP conflict. He shows they can coexist and uses Horde and DeltaCrdt, with a live tank-game demo, to keep state alive across container kills.

Recommended for its practical strategy for preserving state on ephemeral containers, and for the live demo.

Functional programmingCloud, DevOps & reliabilityDistributed systems#elixir#otp#docker#horde#crdt#clustering

6 comments from Hacker News

@throwawaymaths2023 · in “A LiveView Is a Process”

Can a LiveView process migrate to a different machine/VM? Liveview makes no assumptions about the client connection or even stickiness of client to nodes in a cluster. If you store critical data in the liveview you could be in for some trouble. Always store important stuff into a recoverable, network aware datastore. The nice thing is that liveview is designed to be tolerant to client or client connection failures, you should design to be able to repopulate state sanely in the on_mount call. If you want some sort of ephermal network state that lives on one node and not the database only (e.g. a game), the liveview should connect into that. If you want to store that in a genserver, a strategy like this is doable: ▶ this video

CitesView on HN
@h0l0cube2022 · in “An animated introduction to Elixir”

> you should store the state in the external system It's an old talk, but this one has a strategy for robustly persisting state across ephemeral containers. The example here is running a multiplayer game server while doing code updates etc. using Horde and CRDTs ▶ this video

RecommendsView on HN
@dnautics2020 · in “An Introduction to Conflict-Free Replicated Data Types”

In the elixir community CRDTs are well known for various HA; AP distributed state strategies, Phoenix Presence uses CRDTs to track processes and broadcast them over pubsub channels. This makes it trivial to represent "user state" in chat rooms, Sophie DiBenedetto describes using it for writing a trivial chat app: link For something a bit wilder, you can track your state machines across a distributed cluster and be able to pass and preserve state across the cluster using CRDTs, as is done in Dan Azuma's (live) demo of a tank game: ▶ this video (worth it for the demo at 29m)

RecommendsView on HN
@dnautics2020 · in “My favorite Erlang program (2013)”

Honestly, in most scenarios, you kill the vm and let it restart with new code (just like you would in a kubernetes pod, and in fact using kubernetes pods with BEAM languages is also a valid strategy). If you must keep some state preserved, there's even ways to do it without erlang's hot code reloading strategies, I would recommend watching Dan Azuma's fantastic video (stick around for the live demo): ▶ this video

Strongly recommendsView on HN
@qohen2019 · in “CRDT: Conflict-free replicated data type”

Horde is indeed a really interesting Elixir library. It's based on the CRDT library, DeltaCrdt [0], also by Derek Kraan. He discusses DeltaCrdt here [1] and Horde here [2]. BTW, Horde is a distributed supervisor, i.e. analogous to what regular Elixir OTP supervisors do, except that it can restart processes on different cluster nodes. It also provides a distributed process registry. Daniel Azuma of Google gave a great 39 minute talk at ElixirConf 2018, "Docker and OTP: Friends or Foes?" [3], where he shows Horde (and DeltaCrdt) in action to keep a multi-player tank video game going while the Docker container it's running in gets killed and and the Elixir processes get respawned on another container. The state is persisted across Elixir nodes in other containers in an instance of DeltaCrdt. (Again, the talk is really good -- if the above sounds interesting, you'll want to check it out [3]). [0] link [1] link [2] link [3] ▶ this video

Strongly recommendsView on HN
@pg_bot2018 · in “Phoenix 1.4.0 released”

You can use Docker + containers with OTP, they are not mutually exclusive. Daniel Azuma gave a talk at the most recent Elixirconf about this subject.[0] [0]: ▶ this video

RecommendsView on HN
The Soul of Erlang and Elixir • Sasa Juric • GOTO 201942:03

The Soul of Erlang and Elixir • Sasa Juric • GOTO 2019

GOTO Conferences
384K views • 7 years ago
Solid Ground // Saša Jurić35:15

Solid Ground // Saša Jurić

EMPEX Conference
14K views • 9 years ago
ElixirConf 2021 - Isaac Yonemoto - Zig (heart) Elixir48:11

ElixirConf 2021 - Isaac Yonemoto - Zig (heart) Elixir

ElixirConf
4K views • 5 years ago
ElixirConf 2019 - Day 1 Morning Keynote - Brian Cardarella, Luke Imhoff, Paul Schoenfelder1:11:55

ElixirConf 2019 - Day 1 Morning Keynote - Brian Cardarella, Luke Imhoff, Paul Schoenfelder

ElixirConf
8K views • 7 years ago
GigCityElixir23 - Bryan Hunter1:01:46

GigCityElixir23 - Bryan Hunter

Groxio
10K views • 3 years ago
ElixirConf 2023 - José Valim - The foundations of the Elixir type system1:11:42

ElixirConf 2023 - José Valim - The foundations of the Elixir type system

ElixirConf
38K views • 3 years ago
Erlang Factory SF 2016 Keynote  Phoenix and Elm – Making the Web Functional55:28

Erlang Factory SF 2016 Keynote Phoenix and Elm – Making the Web Functional

Erlang Solutions
23K views • 10 years ago
Bringing Types to Elixir by Giuseppe Castagna and Guillaume Duboc | ElixirConf EU 202340:15

Bringing Types to Elixir by Giuseppe Castagna and Guillaume Duboc | ElixirConf EU 2023

Code Sync
7K views • 3 years ago
ElixirConf 2018 - Keynote - Chris McCord57:50

ElixirConf 2018 - Keynote - Chris McCord

ElixirConf
32K views • 8 years ago
RustLatam 2019 - Without Boats: Zero-Cost Async IO32:24

RustLatam 2019 - Without Boats: Zero-Cost Async IO

Rust Programming Language
55K views • 7 years ago
"Systems that run forever self-heal and scale" by Joe Armstrong (2013)1:10:23

"Systems that run forever self-heal and scale" by Joe Armstrong (2013)

Strange Loop Conference
85K views • 5 years ago
"Unison: a new distributed programming language" by Paul Chiusano41:06

"Unison: a new distributed programming language" by Paul Chiusano

Strange Loop Conference
45K views • 7 years ago
Erlang: The Movie9:58

Erlang: The Movie

dawsdesign
159K views • 19 years ago
Erlang: The Movie11:32

Erlang: The Movie

uncertainyesterday
175K views • 14 years ago
"Making Impossible States Impossible" by Richard Feldman25:06

"Making Impossible States Impossible" by Richard Feldman

elm-conf
63K views • 10 years ago
Expert to Expert: Rich Hickey and Brian Beckman - Inside Clojure53:56

Expert to Expert: Rich Hickey and Brian Beckman - Inside Clojure

jasonofthel33t
119K views • 13 years ago
The Language of the System - Rich Hickey1:02:50

The Language of the System - Rich Hickey

ClojureTV
174K views • 13 years ago
Keynote: The Last Hope for Scala's Infinity War - John A. De Goes45:03

Keynote: The Last Hope for Scala's Infinity War - John A. De Goes

Scalapeño
36K views • 8 years ago
React.js Conf 2015 - Immutable Data and React31:11

React.js Conf 2015 - Immutable Data and React

Meta Developers
159K views • 11 years ago
Autonomous Testing and the Future of Software Development - Will Wilson32:02

Autonomous Testing and the Future of Software Development - Will Wilson

The Linux Foundation
7K views • 7 years ago