Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
об эволюции использования и наследии
Erlang, который мы
потеряли
В далекой далекой ЮВ Азии
была сеть, она все еще жива
раздает контент
знает про геоблокирование
может рестримить видео
обр...
Требования к системе авторизации
Понятный формат
Простота интеграции
Скорость работы
Масштабируемость
Надежность
Простота ...
Erlang
Простой и понятный, даже старшекласнику
Многопоточный (умри или сделай)
Имеет нативный протокол сериализации BERT
В...
Сеть
Сервер авторизации на erlang
Использует BERT
Сервер авторизации на erlang
Клиенты
nginx via lua
java
c++
легко добавить новые (на самом деле нет)
кстати вы тоже не вид...
Сервер авторизации на erlang
Общается по UDP
Работает на уровне ноды, т.е. localhost
Максимальный размер сообщения =MTU ~1...
Сервер авторизации на erlang
Позволяет смотреть состояние виртуальной машины
а также легко ее убивать
[root@node ~]$ servi...
Erlang в массы
Эксплуатация
Авторизационный сервис под нагрузкой часто ложится
Запросы вызывают таймаут
Клиенты просто не умеют обрабатыв...
Эксплуатация
jvm при рестарте erlang vm требует дополнительной логики
подключения
Никто не пользуется хот релоудом
Просмот...
Что делать?
ТРИЗ: Идеальный объект — когда объекта нет, а функция его выполняется.
Erlang из масс
Переписываем авторизационный сервис на C++
люди знающие erlang ушли из команды
Убираем сервис состояние стр...
Выводы
Протокол - им должно быть легко пользоваться
Формат данных - должен быть легким для понимания
ФП - это лишь техноло...
У меня есть мечта применить ФП
Но не erlang
Что может быть на уровне python в работе со строками?
Простым в использовании?...
Erlang, который мы потеряли
Erlang, который мы потеряли
Upcoming SlideShare
Loading in …5
×

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

81 views

Published on

О том как команда не осилила erlang и пошла своим путем.
видео запись
https://www.youtube.com/watch?v=pTngCBvdC-s

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

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

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

×