еще жива • раздает контент • знает про геоблокирование • может рестримить видео • обрабатывает много запросов в секунду • но, когда-то давно она всего этого не умела • но очень хотела научиться
• Скорость работы • Масштабируемость • Надежность • Простота использования • JSON? • REST? • <1ms? • 10k клиентов за раз • автономная работа • запустил и забыл
или сделай) • Имеет нативный протокол сериализации BERT • Встроенная база данных Mnesia • Хорошо зарекомендовал себя при работе под нагрузкой • Горячая замена кода • Виртуальную машину можно править/смотреть на лету • Выбор очевиден
уровне ноды, т.е. localhost • Максимальный размер сообщения =MTU ~1472 bytes • Очень быстро • Но есть задержки при большом количестве датаграмм • Клиенты не получают ответа -> задержка оригинального запроса
также легко ее убивать [root@node ~]$ service authdaemon attach Attaching to /tmp/opt/authdeamon/erlang.pipe.1 (^D to exit) # нажал CTR+C BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded (v)ersion (k)ill (D)b-tables (d)istribution ... [End]
вызывают таймаут ◦ Клиенты просто не умеют обрабатывать такую ситуацию • erlang vm требет резолвить ноду через внешнюю сеть ◦ лечится в resolve.conf • Много новой бизнес логики связано с парсингом строк ◦ regex и прочий .split ◦ не так легко пишется
подключения • Никто не пользуется хот релоудом • Просмотр состояния erlang vm опасно для сервисов • Сложности с init.d ◦ vm одна, процессов несколько ◦ изоляция erlang vm на каждый пакет • Erlang создает больше проблем, чем решает
люди знающие erlang ушли из команды • Убираем сервис состояние стриминга внутрь стриминг серсива ◦ это же просто hashmap • Убираем интеграцию jvm с erlang vm • Не знаем что делать с UDP и BERT
Формат данных - должен быть легким для понимания • ФП - это лишь технология решения • Миллениалов оказалось сложно заставить писать на erlang • ФП не всегда KISS
• Что может быть на уровне python в работе со строками? • Простым в использовании? ◦ Логи, init.d скрипты и пакетирование • Чтобы билдилось в одно касание? • Чтобы работало на общих протоколах? • Имело хорошую библиотеку? • Легко работало с зависимостями • Btw, у нас проекте не так много памяти