Skip to content
0:00 / 0:00

#elixir#erlang#actormodel

"Waterpark: Distributed Actors vs the Pandemic" by Bryan Hunter

Strange Loop Conference

88K subscribers • 114 videos on Hallway • Conference channel

YouTube
  • Recommended by 4 people: 4 in engineering communities.
  • Presented by Bryan Hunter

Intermediate. Assumes working knowledge.

8.1K views5 years ago4 recommendations

Distributed systemsSystems programmingElixir and ErlangScaling and large-scale architectureFault tolerance and failure

Bryan Hunter shares how HCA Healthcare built Waterpark, a continuously available distributed integration platform using Elixir and the Erlang VM.

At HCA Healthcare we own and operate 185 hospitals, and around 2,000 surgery centers, freestanding emergency rooms, and clinics. Our scale breaks many vendor products. In 2018 we began building “Waterpark”, which would become the company’s next-gen integration platform (one-part streaming system, one-part distributed database). We chose the ErlangVM and Elixir for fault-tolerance and productivity. When COVID-19 arrived, an interesting tech story became something more serious; more essential. In this talk we will discuss: * how the actor model maps so well onto healthcare * the virtues of wheel reinvention * how a big, Fortune 100 company can be more fun and innovative than a startup * how we transitioned from proof-of-concept mode to continuously available (no planned or unplanned downtime) in three weeks * how we use Erlang's hot code loading (for real) in a production cluster spread across four data centers * how the wisdom of "Papers We Love" is indistinguishable from magic, * how my hero and friend Joe Armstrong (from beyond the grave) helped make American nursing home residents safer during COVID-19 Specifically, we will discuss process pairs, long-lived digital twins, no-masters, bloom filters, rendezvous hashing, our recipes for continuous availability, location transparency, open sourcing our HL7 libraries, and using the bit-syntax for clinical data. Bryan Hunter HCA Healthcare @bryan_hunter Bryan Hunter is an Enterprise Fellow at HCA Healthcare. He has two decades of consulting experience in complex business domains. In 2012 he founded Nashville Functional Programmers (@NashFP). Bryan enjoys supporting FP communities around the world and has shared his experience in Lean and functional programming at conferences and universities in London, Manila, Oslo, Bangalore, and throughout the United States. Recorded at Strange Loop 2021 thestrangeloop.com

Why it's here

4 people recommend this

What people say. Recommended as an excellent real-world case study of using Elixir and the actor model for massive scale and fault tolerance.

Moments people linked to

u/lovebesin r/elixir • Recommends

On “Elixir was born from greatness”

link to this video Bryan Hunter talks about him during his WaterPark presentation and I kinda choked up watching it. He got pretty shaken up talking about Joe Armstrong.
8View on Reddit

u/gargar7in r/elixir • Recommends

On “If you were in charge of a startup tech stack, how would you use elixir to actually scale and make every work seamlessly?”

Here's an example of Elixir as an enterprise stack across 4 data centers, all in ram, no other dependencies, talk from StrangeLoop. link to this video

u/MichaelJ1972in r/elixir • Recommends

On “Are Elixir/Erlang processes a right fit for my system?”

link to this video Sounds like this. And yes I think it's a fit but wait for really competent people to answer.

u/jeff_weissin r/elixir • Recommends

On “Why there are almost none entry level opportunities?”

>There's a bit of a kicker here in that architecting a robust application does require some development experience, even if that experience is not in Elixir per se. I'm going to push back on this. Yes, you can implement a robust application, but it won't be one that takes advantages of the strengths of the BEAM and avoids its weaknesses. If you take a look at something like HCA's Waterpark, you're not arriving at that architecture and its literal zero milliseconds of downtime in years without depth of experience with the BEAM.

u/the_jesterin r/elixir • Mentions

On “How do you handle GenServer state in containerized deployments (ECS/EKS)?”

TBH, if you're going to "traditional" orchestration like K8s via EKS, I'd suggest using the traditional mechanisms there with the most appropriate Elixir flavors for your use case. I think you already researched those, as they're basically: * Outsource the state (external store/DB) * Or, use term/ETS persistence with startup & shutdown hooks in the GenServer(s) to load & save appropriate state. * Or, use shared eventually-consistent state across nodes. I think those are basically listed in order of ease-of-implementation, too. I would call out that, in particular for option 2 and 3 K8s has built ins that will help you. Most other languages don't have the relative all-in-one support Er…