Slide 1

Slide 1 text

Никита Соболев https://github.com/sobolevn

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

Elixir Где хорош? Надо брать?

Slide 4

Slide 4 text

О чем будет доклад? • Рассмотрим классические варианты использования • Перечислим популярные проекты и крупные компании с OTP в проде • Поделюсь субъективным мнением

Slide 5

Slide 5 text

История • Раньше был Erlang • Потом пришел рубишный супергерой • Теперь у нас Erlang + Ruby

Slide 6

Slide 6 text

• Иммутабельность • Паттерн матчинг • Легкие процессы • Let it crash Концепции

Slide 7

Slide 7 text

• Шикарная асинхронность • Отказоустойчивость и надежность • Нагружает все ядра CPU • Плохо считает • Мало библиотек Сильные стороны Слабые стороны

Slide 8

Slide 8 text

Не на каждый день

Slide 9

Slide 9 text

У вас есть много IO

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

Телефония

Slide 12

Slide 12 text

Чаты

Slide 13

Slide 13 text

• WhatsApp: >50 миллиардов сообщений в день • Facebook: >300 миллионов пользователей ежесекундно • Discord: >5 миллионов пользователей ежесекундно Сколько людей пользуются?

Slide 14

Slide 14 text

У вас есть много soft real-time данных

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

• Биржы • Курсы валют • Котировки • Статистика • События • Логи

Slide 17

Slide 17 text

• OTP хорошо подходит для работы с WebSocket'ами • Хорошо прогоняет большие объемы данных • Довольно шустро их сериализует

Slide 18

Slide 18 text

Нужны параллельные процессы

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

Web scrapping • Создаем изначальные запросы • На каждую найденную ссылку создаем новый процесс • Находим какие-то данные • Результат сохраняем в базу

Slide 21

Slide 21 text

Базы данных

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

• mnesia - распределенная документо- ориентированная СУБД, является частью Erlang • CouchDB - распределенная документо- ориентированная СУБД • Riak - распределенная key-value СУБД

Slide 24

Slide 24 text

Распределенные базы данных

Slide 25

Slide 25 text

Доставка сообщений

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

Для чего не подходит? • Для Data Science • Для приложений, где много связок с С++ • Для стартапов • Для Enterprise • Для лендингов

Slide 29

Slide 29 text

Субъективно

Slide 30

Slide 30 text

– Игорь Карымов «Если нужно в 4 раза быстрее чем Ruby».

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

Стоит ли брать?

Slide 37

Slide 37 text

• Проект будет под высокой нагрузкой • Проект будет очень много работать с IO • Проект хочется сделать один раз и забыть • Будет много бизнес логики • Проект нужно будет постоянно поддерживать • Будет только средняя нагрузка (и меньше) Да Нет

Slide 38

Slide 38 text

Полезные ссылки • Список Elixir компаний https://github.com/doomspork/elixir-companies • Список Erlang компаний http://erlang.org/faq/introduction.html • How Discord Scaled Elixir to 5,000,000 Concurrent Users https:// blog.discordapp.com/scaling-elixir-f9b8e1e7c29b • Как выглядит архитектура WhatsApp? https://habrahabr.ru/post/276951/ • Elixir и Финтех: http://elixir-lang.moscow/events/4/talks/elixir-i-fin- tech • CouchDB does not want to be you database, it wants to be your website: https://nolanlawson.com/2013/11/15/couchdb-doesnt-want-to-be-your-database- it-wants-to-be-your-web-site/ • Riak — веб-ориентированная система хранения данных https:// habrahabr.ru/post/75202/

Slide 39

Slide 39 text

http://elixir-lang.moscow

Slide 40

Slide 40 text

Вопросы? github.com/sobolevn