by the late Joe Armstrong, 2007 ▸Created in 1986 at Ericsson ▸“…used to build massively scalable soft real-time systems with requirements on high availability.” ▸“…telecoms, banking, e-commerce, computer telephony and instant messaging”
million lines of Erlang and reported to achieve a high availability of nine “9”s. ▸Cisco reports that 90% of all internet trafﬁc goes through Erlang controlled nodes ▸Scalable, fault-tolerant, functional (immutable data, functions, pattern matching, tail recursive, etc.)
designed for building scalable and maintainable applications.” ▸“…leverages the Erlang VM (BEAM), known for running low-latency, distributed and fault-tolerant systems, while also being successfully used in web development and embedded software domain.
replicate it transparently across a cluster. Common use-case is users currently online (uses conﬂict- free replicated data type CRDT) ▸Contexts - standard way to deﬁne domains that cleanly separate concepts from technical implementation. ie. Accounts (users, authentication, etc.) ▸Channels - soft real-time communication between millions of connected clients (ie. chat room, breaking news, vehicle map tracking, multiplayer games, etc.). Think ActionCable but can actually scale ;p ▸Umbrella - put code in organized apps that enforce domain code to stay away from web interactions - ie. web, db, domains “Phoenix is not your app” ▸Pub/Sub - Pubnub, services
in the VM ▸Tasks - Asynchronous background work (Sidekiq). Available right in the VM ▸Supervisors - Architect a self-healing system that can recover when unexpected things happen. “Let it crash!”. Available right in the VM. Think Akka.