Чему вы научитесь
- Писать идиоматичный 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-образ и кластеризацию, которые переносятся куда угодно. История языка и сравнения ради сравнений в текст не входят.
Для кого этот курс
Начальные требования
- Опыт разработки серверных приложений на любом языке: HTTP, JSON, REST на рабочем уровне.
- SQL и понимание реляционной модели: таблицы, индексы, транзакции.
- Docker и docker compose для локального PostgreSQL и стенда проекта.
- Умение работать в терминале и с git.
- Знание Elixir, Erlang или OTP не требуется — курс начинается с установки и первого запуска.
Программа курса
В курс входят
- 172 урока
- 78 тестов
Наши преподаватели
Сертификат
Что вы получаете
- 172 текстовых урока с кодом, который выполняется в вашем проекте
- Сквозной проект Klaxon: контексты, миграции, воркеры Oban, каналы и LiveView, тесты, бенчмарки, релиз и docker compose
- 78 тестовых задач с объяснениями к главам 3–15
- Практическое задание и вопросы для самопроверки в конце каждого урока
- Готовые решения повторяющихся задач: идемпотентность запросов, дедупликация, circuit breaker, лимитер, outbox, структурные логи, метрики