SlideShare a Scribd company logo
1 of 18
Download to read offline
об эволюции использования и наследии
Erlang, который мы
потеряли
В далекой далекой ЮВ Азии
● была сеть, она все еще жива
● раздает контент
● знает про геоблокирование
● может рестримить видео
● обрабатывает много запросов в секунду
● но, когда-то давно она всего этого не умела
● но очень хотела научиться
Требования к системе авторизации
● Понятный формат
● Простота интеграции
● Скорость работы
● Масштабируемость
● Надежность
● Простота использования
● JSON?
● REST?
● <1ms?
● 10k клиентов за раз
● автономная работа
● запустил и забыл
Erlang
● Простой и понятный, даже старшекласнику
● Многопоточный (умри или сделай)
● Имеет нативный протокол сериализации BERT
● Встроенная база данных Mnesia
● Хорошо зарекомендовал себя при работе под нагрузкой
● Горячая замена кода
● Виртуальную машину можно править/смотреть на лету
● Выбор очевиден
Сеть
Сервер авторизации на erlang
Использует BERT
Сервер авторизации на erlang
Клиенты
● nginx via lua
● java
● c++
● легко добавить новые (на самом деле нет)
● кстати вы тоже не видите здесь erlang как клиента?
Сервер авторизации на erlang
Общается по UDP
● Работает на уровне ноды, т.е. localhost
● Максимальный размер сообщения =MTU ~1472 bytes
● Очень быстро
● Но есть задержки при большом количестве датаграмм
● Клиенты не получают ответа -> задержка оригинального
запроса
Сервер авторизации на erlang
Позволяет смотреть состояние виртуальной машины
а также легко ее убивать
[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 в массы
Эксплуатация
● Авторизационный сервис под нагрузкой часто ложится
○ Запросы вызывают таймаут
○ Клиенты просто не умеют обрабатывать такую ситуацию
● erlang vm требет резолвить ноду через внешнюю сеть
○ лечится в resolve.conf
● Много новой бизнес логики связано с парсингом строк
○ regex и прочий .split
○ не так легко пишется
Эксплуатация
● jvm при рестарте erlang vm требует дополнительной логики
подключения
● Никто не пользуется хот релоудом
● Просмотр состояния erlang vm опасно для сервисов
● Сложности с init.d
○ vm одна, процессов несколько
○ изоляция erlang vm на каждый пакет
● Erlang создает больше проблем, чем решает
Что делать?
ТРИЗ: Идеальный объект — когда объекта нет, а функция его выполняется.
Erlang из масс
● Переписываем авторизационный сервис на C++
○ люди знающие erlang ушли из команды
● Убираем сервис состояние стриминга внутрь стриминг
серсива
○ это же просто hashmap
● Убираем интеграцию jvm с erlang vm
● Не знаем что делать с UDP и BERT
Выводы
● Протокол - им должно быть легко пользоваться
● Формат данных - должен быть легким для понимания
● ФП - это лишь технология решения
● Миллениалов оказалось сложно заставить писать на erlang
● ФП не всегда KISS
У меня есть мечта применить ФП
● Но не erlang
● Что может быть на уровне python в работе со строками?
● Простым в использовании?
○ Логи, init.d скрипты и пакетирование
● Чтобы билдилось в одно касание?
● Чтобы работало на общих протоколах?
● Имело хорошую библиотеку?
● Легко работало с зависимостями
● Btw, у нас проекте не так много памяти

More Related Content

What's hot

Максим Лапшин — введение в Erlang
Максим Лапшин — введение в ErlangМаксим Лапшин — введение в Erlang
Максим Лапшин — введение в ErlangАлександр Ежов
 
Опыт использования Erlang в разработке многопользовательской игры
Опыт использования Erlang в разработке многопользовательской игрыОпыт использования Erlang в разработке многопользовательской игры
Опыт использования Erlang в разработке многопользовательской игрыYuri Zhloba
 
Алексей Федоров
Алексей ФедоровАлексей Федоров
Алексей ФедоровCodeFest
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин ОсиповCodeFest
 
Там, где Rails не справляются
Там, где Rails не справляютсяТам, где Rails не справляются
Там, где Rails не справляютсяMax Lapshin
 
Немного о кеше
Немного о кешеНемного о кеше
Немного о кешеDmitry Ignatiev
 
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)Ontico
 
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...CodeFest
 
Андрей Акиньшин
Андрей АкиньшинАндрей Акиньшин
Андрей АкиньшинCodeFest
 
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Ontico
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Fwdays
 
архитектура новой почты рамблера
архитектура новой почты рамблераархитектура новой почты рамблера
архитектура новой почты рамблераHighLoad2009
 
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)Ontico
 
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) АксеновAlex Chistyakov
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 

What's hot (18)

Максим Лапшин — введение в Erlang
Максим Лапшин — введение в ErlangМаксим Лапшин — введение в Erlang
Максим Лапшин — введение в Erlang
 
Опыт использования Erlang в разработке многопользовательской игры
Опыт использования Erlang в разработке многопользовательской игрыОпыт использования Erlang в разработке многопользовательской игры
Опыт использования Erlang в разработке многопользовательской игры
 
Алексей Федоров
Алексей ФедоровАлексей Федоров
Алексей Федоров
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин Осипов
 
Там, где Rails не справляются
Там, где Rails не справляютсяТам, где Rails не справляются
Там, где Rails не справляются
 
Немного о кеше
Немного о кешеНемного о кеше
Немного о кеше
 
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
 
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
 
Erlang ruby
Erlang rubyErlang ruby
Erlang ruby
 
Андрей Акиньшин
Андрей АкиньшинАндрей Акиньшин
Андрей Акиньшин
 
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
 
архитектура новой почты рамблера
архитектура новой почты рамблераархитектура новой почты рамблера
архитектура новой почты рамблера
 
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
 
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
 
Sivko
SivkoSivko
Sivko
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
JPHP
JPHPJPHP
JPHP
 

Similar to Erlang, который мы потеряли

“Чем хорош Erlang вообще и для веб-разработки в частности?”

“Чем хорош Erlang вообще и для веб-разработки в частности?”
“Чем хорош Erlang вообще и для веб-разработки в частности?”

“Чем хорош Erlang вообще и для веб-разработки в частности?”
Olga Lavrentieva
 
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascriptПостроение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascriptFDConf
 
High Load 2009 Imdg Presentation
High Load 2009   Imdg PresentationHigh Load 2009   Imdg Presentation
High Load 2009 Imdg PresentationHighLoad2009
 
специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)Ontico
 
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)Ontico
 
Порядок преодоления болота на маршруте: как не надо писать приложения, основа...
Порядок преодоления болота на маршруте: как не надо писать приложения, основа...Порядок преодоления болота на маршруте: как не надо писать приложения, основа...
Порядок преодоления болота на маршруте: как не надо писать приложения, основа...HLL
 
Meet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy SamilyakMeet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy SamilyakAmasty
 
Moбильная база данных Realm. Прошло ли время SQLite?
Moбильная база данных Realm. Прошло ли время SQLite?Moбильная база данных Realm. Прошло ли время SQLite?
Moбильная база данных Realm. Прошло ли время SQLite?Олег Чебулаев
 
Erlyvideo — сервер потокового видео.
Erlyvideo — сервер потокового видео.Erlyvideo — сервер потокового видео.
Erlyvideo — сервер потокового видео.Max Lapshin
 
Erlang: прагматичный рассказ про прагматичный язык
Erlang: прагматичный рассказ про прагматичный язык Erlang: прагматичный рассказ про прагматичный язык
Erlang: прагматичный рассказ про прагматичный язык Vasil Remeniuk
 
Баннерокрутилка на Erlang
Баннерокрутилка на ErlangБаннерокрутилка на Erlang
Баннерокрутилка на ErlangArtyom Gavrichenkov
 
что и почему вы должны программировать на Erlang.максим лапшин. зал 4
что и почему вы должны программировать на Erlang.максим лапшин. зал 4что и почему вы должны программировать на Erlang.максим лапшин. зал 4
что и почему вы должны программировать на Erlang.максим лапшин. зал 4rit2011
 
Максим Лапшин. Erlang production
Максим Лапшин. Erlang productionМаксим Лапшин. Erlang production
Максим Лапшин. Erlang productionAlina Dolgikh
 
gRPC в продакшне для мобильных приложений
gRPC в продакшне для мобильных приложенийgRPC в продакшне для мобильных приложений
gRPC в продакшне для мобильных приложенийMad Devs
 
Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)
 Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo) Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)
Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)Ontico
 
Pavel Ruban. High loaded PHP operations over web interface
Pavel Ruban. High loaded PHP operations over web interfacePavel Ruban. High loaded PHP operations over web interface
Pavel Ruban. High loaded PHP operations over web interfacei20 Group
 
Eventmachine: структура evented-приложений
Eventmachine: структура evented-приложенийEventmachine: структура evented-приложений
Eventmachine: структура evented-приложенийАлександр Ежов
 

Similar to Erlang, который мы потеряли (20)

“Чем хорош Erlang вообще и для веб-разработки в частности?”

“Чем хорош Erlang вообще и для веб-разработки в частности?”
“Чем хорош Erlang вообще и для веб-разработки в частности?”

“Чем хорош Erlang вообще и для веб-разработки в частности?”

 
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascriptПостроение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
 
Build your own multistack JS startup
Build your own multistack JS startupBuild your own multistack JS startup
Build your own multistack JS startup
 
High Load 2009 Imdg Presentation
High Load 2009   Imdg PresentationHigh Load 2009   Imdg Presentation
High Load 2009 Imdg Presentation
 
специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)
 
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
 
Порядок преодоления болота на маршруте: как не надо писать приложения, основа...
Порядок преодоления болота на маршруте: как не надо писать приложения, основа...Порядок преодоления болота на маршруте: как не надо писать приложения, основа...
Порядок преодоления болота на маршруте: как не надо писать приложения, основа...
 
Meet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy SamilyakMeet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy Samilyak
 
Moбильная база данных Realm. Прошло ли время SQLite?
Moбильная база данных Realm. Прошло ли время SQLite?Moбильная база данных Realm. Прошло ли время SQLite?
Moбильная база данных Realm. Прошло ли время SQLite?
 
Erlyvideo — сервер потокового видео.
Erlyvideo — сервер потокового видео.Erlyvideo — сервер потокового видео.
Erlyvideo — сервер потокового видео.
 
Erlang: прагматичный рассказ про прагматичный язык
Erlang: прагматичный рассказ про прагматичный язык Erlang: прагматичный рассказ про прагматичный язык
Erlang: прагматичный рассказ про прагматичный язык
 
Баннерокрутилка на Erlang
Баннерокрутилка на ErlangБаннерокрутилка на Erlang
Баннерокрутилка на Erlang
 
что и почему вы должны программировать на Erlang.максим лапшин. зал 4
что и почему вы должны программировать на Erlang.максим лапшин. зал 4что и почему вы должны программировать на Erlang.максим лапшин. зал 4
что и почему вы должны программировать на Erlang.максим лапшин. зал 4
 
Максим Лапшин. Erlang production
Максим Лапшин. Erlang productionМаксим Лапшин. Erlang production
Максим Лапшин. Erlang production
 
gRPC в продакшне для мобильных приложений
gRPC в продакшне для мобильных приложенийgRPC в продакшне для мобильных приложений
gRPC в продакшне для мобильных приложений
 
Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)
 Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo) Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)
Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)
 
Pavel Ruban. High loaded PHP operations over web interface
Pavel Ruban. High loaded PHP operations over web interfacePavel Ruban. High loaded PHP operations over web interface
Pavel Ruban. High loaded PHP operations over web interface
 
Eventmachine: структура evented-приложений
Eventmachine: структура evented-приложенийEventmachine: структура evented-приложений
Eventmachine: структура evented-приложений
 
Operden1
Operden1Operden1
Operden1
 
Distributed systems
Distributed systemsDistributed systems
Distributed systems
 

More from Ivan Grishaev

Основы машинного обучения. Дмитрий Соболев
Основы машинного обучения. Дмитрий СоболевОсновы машинного обучения. Дмитрий Соболев
Основы машинного обучения. Дмитрий СоболевIvan Grishaev
 
Что такое говнокод
Что такое говнокодЧто такое говнокод
Что такое говнокодIvan Grishaev
 
Why everyone like ruby
Why everyone like rubyWhy everyone like ruby
Why everyone like rubyIvan Grishaev
 
В поисках удаленной работы за рубежом
В поисках удаленной работы за рубежомВ поисках удаленной работы за рубежом
В поисках удаленной работы за рубежомIvan Grishaev
 
Еще раз про качество
Еще раз про качествоЕще раз про качество
Еще раз про качествоIvan Grishaev
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к AnsibleIvan Grishaev
 
Чек-лист ежедневных действий для сообществ компаний в соц. сетях
Чек-лист ежедневных действий для сообществ компаний в соц. сетяхЧек-лист ежедневных действий для сообществ компаний в соц. сетях
Чек-лист ежедневных действий для сообществ компаний в соц. сетяхIvan Grishaev
 
10 вопросов, которые следует задать будущему работодателю
10 вопросов, которые следует задать будущему работодателю10 вопросов, которые следует задать будущему работодателю
10 вопросов, которые следует задать будущему работодателюIvan Grishaev
 
тесты с фикстурами
тесты с фикстурамитесты с фикстурами
тесты с фикстурамиIvan Grishaev
 
Project Management в разрезе бихевиоризма и общей педагогики
Project Management в разрезе бихевиоризма и общей педагогикиProject Management в разрезе бихевиоризма и общей педагогики
Project Management в разрезе бихевиоризма и общей педагогикиIvan Grishaev
 
Ci на базе docker
Ci на базе dockerCi на базе docker
Ci на базе dockerIvan Grishaev
 
Личный взгляд на Clojure
Личный взгляд на ClojureЛичный взгляд на Clojure
Личный взгляд на ClojureIvan Grishaev
 
Расстаемся с мифами о ФП
Расстаемся с мифами о ФП Расстаемся с мифами о ФП
Расстаемся с мифами о ФП Ivan Grishaev
 

More from Ivan Grishaev (16)

Основы машинного обучения. Дмитрий Соболев
Основы машинного обучения. Дмитрий СоболевОсновы машинного обучения. Дмитрий Соболев
Основы машинного обучения. Дмитрий Соболев
 
Docker
DockerDocker
Docker
 
NoSQL pain
NoSQL painNoSQL pain
NoSQL pain
 
Что такое говнокод
Что такое говнокодЧто такое говнокод
Что такое говнокод
 
Why everyone like ruby
Why everyone like rubyWhy everyone like ruby
Why everyone like ruby
 
В поисках удаленной работы за рубежом
В поисках удаленной работы за рубежомВ поисках удаленной работы за рубежом
В поисках удаленной работы за рубежом
 
Еще раз про качество
Еще раз про качествоЕще раз про качество
Еще раз про качество
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к Ansible
 
Чек-лист ежедневных действий для сообществ компаний в соц. сетях
Чек-лист ежедневных действий для сообществ компаний в соц. сетяхЧек-лист ежедневных действий для сообществ компаний в соц. сетях
Чек-лист ежедневных действий для сообществ компаний в соц. сетях
 
10 вопросов, которые следует задать будущему работодателю
10 вопросов, которые следует задать будущему работодателю10 вопросов, которые следует задать будущему работодателю
10 вопросов, которые следует задать будущему работодателю
 
тесты с фикстурами
тесты с фикстурамитесты с фикстурами
тесты с фикстурами
 
Project Management в разрезе бихевиоризма и общей педагогики
Project Management в разрезе бихевиоризма и общей педагогикиProject Management в разрезе бихевиоризма и общей педагогики
Project Management в разрезе бихевиоризма и общей педагогики
 
Agile or not agile
Agile or not agileAgile or not agile
Agile or not agile
 
Ci на базе docker
Ci на базе dockerCi на базе docker
Ci на базе docker
 
Личный взгляд на Clojure
Личный взгляд на ClojureЛичный взгляд на Clojure
Личный взгляд на Clojure
 
Расстаемся с мифами о ФП
Расстаемся с мифами о ФП Расстаемся с мифами о ФП
Расстаемся с мифами о ФП
 

Erlang, который мы потеряли

  • 1. об эволюции использования и наследии Erlang, который мы потеряли
  • 2. В далекой далекой ЮВ Азии ● была сеть, она все еще жива ● раздает контент ● знает про геоблокирование ● может рестримить видео ● обрабатывает много запросов в секунду ● но, когда-то давно она всего этого не умела ● но очень хотела научиться
  • 3. Требования к системе авторизации ● Понятный формат ● Простота интеграции ● Скорость работы ● Масштабируемость ● Надежность ● Простота использования ● JSON? ● REST? ● <1ms? ● 10k клиентов за раз ● автономная работа ● запустил и забыл
  • 4.
  • 5. Erlang ● Простой и понятный, даже старшекласнику ● Многопоточный (умри или сделай) ● Имеет нативный протокол сериализации BERT ● Встроенная база данных Mnesia ● Хорошо зарекомендовал себя при работе под нагрузкой ● Горячая замена кода ● Виртуальную машину можно править/смотреть на лету ● Выбор очевиден
  • 7. Сервер авторизации на erlang Использует BERT
  • 8. Сервер авторизации на erlang Клиенты ● nginx via lua ● java ● c++ ● легко добавить новые (на самом деле нет) ● кстати вы тоже не видите здесь erlang как клиента?
  • 9. Сервер авторизации на erlang Общается по UDP ● Работает на уровне ноды, т.е. localhost ● Максимальный размер сообщения =MTU ~1472 bytes ● Очень быстро ● Но есть задержки при большом количестве датаграмм ● Клиенты не получают ответа -> задержка оригинального запроса
  • 10. Сервер авторизации на erlang Позволяет смотреть состояние виртуальной машины а также легко ее убивать [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]
  • 12. Эксплуатация ● Авторизационный сервис под нагрузкой часто ложится ○ Запросы вызывают таймаут ○ Клиенты просто не умеют обрабатывать такую ситуацию ● erlang vm требет резолвить ноду через внешнюю сеть ○ лечится в resolve.conf ● Много новой бизнес логики связано с парсингом строк ○ regex и прочий .split ○ не так легко пишется
  • 13. Эксплуатация ● jvm при рестарте erlang vm требует дополнительной логики подключения ● Никто не пользуется хот релоудом ● Просмотр состояния erlang vm опасно для сервисов ● Сложности с init.d ○ vm одна, процессов несколько ○ изоляция erlang vm на каждый пакет ● Erlang создает больше проблем, чем решает
  • 14. Что делать? ТРИЗ: Идеальный объект — когда объекта нет, а функция его выполняется.
  • 15. Erlang из масс ● Переписываем авторизационный сервис на C++ ○ люди знающие erlang ушли из команды ● Убираем сервис состояние стриминга внутрь стриминг серсива ○ это же просто hashmap ● Убираем интеграцию jvm с erlang vm ● Не знаем что делать с UDP и BERT
  • 16. Выводы ● Протокол - им должно быть легко пользоваться ● Формат данных - должен быть легким для понимания ● ФП - это лишь технология решения ● Миллениалов оказалось сложно заставить писать на erlang ● ФП не всегда KISS
  • 17.
  • 18. У меня есть мечта применить ФП ● Но не erlang ● Что может быть на уровне python в работе со строками? ● Простым в использовании? ○ Логи, init.d скрипты и пакетирование ● Чтобы билдилось в одно касание? ● Чтобы работало на общих протоколах? ● Имело хорошую библиотеку? ● Легко работало с зависимостями ● Btw, у нас проекте не так много памяти