Erlang — функциональный язык программирования с акцентом на параллелизм, отказоустойчивость и горячее обновление кода. Разработан в Ericsson Research в 1986 году для систем коммутации телефонных звонков. Исполняется виртуальной машиной BEAM (Bogdan/Bjarne Erlang Abstract Machine).
Ключевые концепции
- Лёгкие процессы — не OS-потоки. Erlang создаёт миллионы процессов с изолированной памятью. Взаимодействие только через передачу сообщений (message passing).
- Let it crash — философия: не защищаться от ошибок, а быстро завершиться и перезапуститься. Supervisor-дерево поднимает упавший процесс автоматически.
- Hot code reloading — замена модуля кода на живой системе без остановки. Критично для телефонии, где простой недопустим.
- OTP (Open Telecom Platform) — библиотека паттернов: gen_server, gen_statem, supervisor, application.
Применение
WhatsApp использовал Erlang для обработки 2+ миллионов соединений на один сервер. RabbitMQ (брокер сообщений) написан на Erlang. CouchDB и ejabberd (XMPP-сервер) — тоже. Elixir — современный язык на BEAM с синтаксисом, вдохновлённым Ruby, и растущим сообществом.
История
Erlang разработан Джо Армстронгом, Робертом Вирдингом и Майком Уильямсом в Ericsson с 1986 года. Первый публичный релиз — 1998 год под лицензией open source. В 2009 году WhatsApp выбрал Erlang; в 2014 году FB купил WhatsApp, объяснив что Erlang-стек обрабатывает 2 миллиарда сообщений в день на 50 серверах.
Связь с хостингом
На стандартном веб-хостинге Erlang не используется. Актуален для high-load real-time систем: чаты, игровые серверы, телекоммуникации. Развёртывается на VDS или облаке. RabbitMQ — наиболее частый случай, когда Erlang появляется в инфраструктуре обычного хостинга как брокер сообщений.
Erlang в практике хостинга
Erlang применяется в сервисах с высокими требованиями к concurrency и uptime: телекоммуникации, мессенджеры (WhatsApp использовал Erlang на 2 млн соединений на сервер), системы очередей сообщений. RabbitMQ написан на Erlang. CouchDB написан на Erlang. На хостинге Erlang-приложения запускаются через BEAM (Bogdan/Björn's Erlang Abstract Machine). Горячее обновление кода (hot code swapping) позволяет деплоить новую версию без остановки сервера -- уникальная возможность. Elixir -- современный язык поверх BEAM, более читаемый синтаксис, популярен для Phoenix веб-фреймворка.
Erlang vs Node.js для concurrency
Оба языка хороши для high-concurrency, но по-разному: Node.js использует event loop в одном потоке, Erlang -- миллионы легковесных процессов с собственной памятью. Отказ одного Erlang-процесса не затрагивает другие (let-it-crash philosophy). WhatsApp обслуживал 900 млн пользователей командой из 50 инженеров именно благодаря Erlang. Phoenix LiveView на Elixir -- конкурент React для real-time UI. На VPS для Erlang/Elixir достаточно 1 ГБ RAM для начала. CouchDB -- пример Erlang-приложения, доступного в production-окружениях.
История Erlang
Erlang создан в Ericsson в 1986 году Джо Армстронгом (Joe Armstrong) для систем телефонной коммутации. Open-source в 1998 году. OTP (Open Telecom Platform) -- набор библиотек и принципов проектирования. WhatsApp выбрал Erlang в 2009 году и к 2014 обслуживал 500 млн пользователей. Elixir создан Жозе Валимом в 2012 году. В 2016 году Jose Valim выпустил Phoenix 1.2 с Channels (real-time).