Elixir с нуля для backend-разработчика

Практический курс по Elixir 1.20 и OTP 28 для разработчиков, которые уже пишут серверный код на другом языке: процессы и супервизоры, Phoenix 1.8, Ecto и PostgreSQL, Oban, LiveView, тестирование и эксплуатация. Всё строится на сквозном проекте Klaxon — сервисе приёма сигналов мониторинга и эскалации инцидентов,…
Средний уровень
5–8 часов в неделю
Сертификат Stepik

Чему вы научитесь

  • Писать идиоматичный Elixir: сопоставление с образцом, множественные клаузы, with, протоколы и поведения
  • Проектировать дерево супервизии и понимать, какой процесс держит состояние и что случится при его падении
  • Поднимать HTTP API на Phoenix 1.8, отделяя веб-слой от доменных контекстов
  • Работать с PostgreSQL через Ecto: миграции, changesets, композиция запросов, транзакции, Ecto.Multi, блокировки
  • Делать аутентификацию по сессии и API-ключам, авторизацию политиками, идемпотентность и версионирование API
  • Выносить работу в фон через Oban с ретраями, уникальностью задач и transactional outbox
  • Держать real-time часть на PubSub, Channels, Presence и LiveView
  • Тестировать конкурентный код: ExUnit, песочница Ecto, Mox, property-based тесты, покрытие в CI
  • Снимать телеметрию и метрики Prometheus, читать их и находить узкое место под нагрузкой
  • Собирать mix release и Docker-образ, настраивать graceful shutdown и выкатывать версии без простоя

О курсе

Вы пишете backend на Python, Go, Java, C# или TypeScript и столкнулись с задачами, где привычная модель даётся тяжело: тысячи одновременных соединений, фоновые задачи, которые нельзя потерять, состояние на процесс-на-сущность, живые обновления в браузере, сервис, который должен пережить падение любой своей части. BEAM решает эти задачи иначе — изолированными процессами, деревом супервизии и передачей сообщений вместо разделяемой памяти. Курс объясняет именно эту разницу и показывает, как из неё вырастает архитектура боевого сервиса.

Что внутри

Девятнадцать глав и 172 текстовых урока. Каждый урок устроен как глава технической книги: инженерная ситуация из проекта, механизм языка или платформы, рабочий код с путями к файлам, последствия в продакшене и типичные ошибки. Приоритет отдан исходному коду, а не пересказу документации.

  • Основы платформы: BEAM, процессы и планировщик, инструменты, первый HTTP-ответ на Plug (глава 1).
  • Язык: иммутабельность, сопоставление с образцом, охранные выражения, функции и замыкания (глава 2).
  • Организация кода: модули, рекурсия, конвейеры, Enum и Stream, структуры, doctests (глава 3).
  • Контракты и ошибки: протоколы, поведения, кортежи-результаты, with, исключения, typespecs и Dialyzer (глава 4).
  • Конкурентность: spawn и receive, ссылки и мониторы, Task, Agent, GenServer, таймауты (глава 5).
  • OTP: дерево супервизии, стратегии перезапуска, DynamicSupervisor, Registry, процесс на сущность, ETS (глава 6).
  • Проект: mix.exs, конфигурация и секреты, границы контекстов, Credo и Dialyzer, свои mix-задачи (глава 7).
  • HTTP: Plug.Conn, плаги и роутер, Bandit, собственные плаги для request_id и логирования (глава 8).
  • Phoenix: endpoint и конвейеры, роутер, контроллеры, JSON-ответы, FallbackController, тесты веб-слоя (глава 9).
  • Ecto: миграции, схемы, changesets, ограничения БД, ассоциации, пользовательские типы (глава 10).
  • Запросы: Query DSL и композиция, join и preload, агрегаты, fragment, Ecto.Multi, блокировки, upsert, пагинация (глава 11).
  • Домен: контексты как граница, команды и запросы, доменные события, три уровня валидации (глава 12).
  • Доступ: сессии, Scope в Phoenix 1.8, API-токены, политики, ограничение частоты, аудит (глава 13).
  • Дизайн API: версионирование, идемпотентность, формат ошибок, OpenAPI, исходящие вызовы и вебхуки (глава 14).
  • Фон: Oban, ретраи и backoff, уникальность задач, очереди и приоритеты, transactional outbox (глава 15).
  • Устойчивость: кэш и лимитер на ETS, пулы и таймауты, back-pressure, circuit breaker, профилирование (глава 16).
  • Real-time: PubSub, Channels, аутентификация сокета, Presence, LiveView и streams, компоненты (глава 17).
  • Тесты: ExUnit, песочница Ecto, фабрики, тесты API, Mox, тестирование процессов, property-based (глава 18).
  • Эксплуатация: структурные логи, telemetry и Prometheus, трейсинг, mix release, Docker, graceful shutdown, кластеризация, выкатка без простоя (глава 19).

В главах с 3-й по 15-ю после практического урока идут тестовые задачи с объяснением неправильного ответа — всего 78 задач.

Проект Klaxon

С первой главы курс ведёт один проект — сервис дежурств и инцидентов. Он принимает сигналы мониторинга по HTTP с ключом идемпотентности, схлопывает повторы в один инцидент, поднимает процесс эскалации по расписанию дежурств, ставит доставку оповещений в очередь Oban, отдаёт REST API v1 с токенами и политиками доступа и показывает живой дашборд на LiveView.

К концу курса в репозитории лежит рабочее приложение: контексты домена, миграции и запросы к PostgreSQL 17, воркеры Oban, каналы и LiveView, 288 тестов при покрытии 83 %, бенчмарки и генератор нагрузки, конфигурация mix release, многоступенчатый Dockerfile, docker compose со стендом и Prometheus, экспорт метрик и проверки состояния. Проект запускается одной командой и служит каркасом для собственного сервиса.

Чего в курсе нет

Курс не учит программировать: он рассчитан на тех, кто уже пишет серверный код на другом языке. Фронтенд разбирается ровно в объёме, нужном для дашборда LiveView, — без CSS-фреймворков и сборки ассетов. Деплой в конкретное облако заменён на релиз, Docker-образ и кластеризацию, которые переносятся куда угодно. История языка и сравнения ради сравнений в текст не входят.

Для кого этот курс

Backend-разработчики, которые уверенно пишут на Python, Go, Java, C#, Ruby, PHP или TypeScript и приходят в Elixir впервые. Инженеры, которым нужна конкурентность, отказоустойчивость или real-time и которые выбирают под это платформу. Тимлиды и архитекторы, оценивающие, где BEAM уместен, а где принесёт лишнюю сложность. Курс не подойдёт тем, кто только учится программировать: объяснений переменных, циклов и того, как устроен HTTP-запрос, здесь нет.

Начальные требования

  • Опыт разработки серверных приложений на любом языке: HTTP, JSON, REST на рабочем уровне.
  • SQL и понимание реляционной модели: таблицы, индексы, транзакции.
  • Docker и docker compose для локального PostgreSQL и стенда проекта.
  • Умение работать в терминале и с git.
  • Знание Elixir, Erlang или OTP не требуется — курс начинается с установки и первого запуска.

Программа курса

В курс входят

  • 172 урока
  • 78 тестов
загружаем...

Наши преподаватели

Certificate

Сертификат

Сертификат Stepik

Что вы получаете

  • 172 текстовых урока с кодом, который выполняется в вашем проекте
  • Сквозной проект Klaxon: контексты, миграции, воркеры Oban, каналы и LiveView, тесты, бенчмарки, релиз и docker compose
  • 78 тестовых задач с объяснениями к главам 3–15
  • Практическое задание и вопросы для самопроверки в конце каждого урока
  • Готовые решения повторяющихся задач: идемпотентность запросов, дедупликация, circuit breaker, лимитер, outbox, структурные логи, метрики

Сколько стоит обучение

999 ₽
Вы попробовали и поняли, что вам сейчас не подходит этот курс? Ничего страшного, мы вернём вам деньги в течение 30-ти дней после покупки.

Часто задаваемые вопросы

Расскажите о курсе друзьям