что и почему вы должны программировать на Erlang.максим...

43
Что и почему писать на Erlang Макс Лапшин erlyvideo [email protected]

Transcript of что и почему вы должны программировать на Erlang.максим...

Page 1: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Что и почемуписать на Erlang

Макс Лапшин erlyvideo

[email protected]

Page 2: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Erlang — это круто

•Опыт создания видеостримингового сервера erlyvideo

•Есть с чем сравнивать: C++, Java, ObjectiveC

•Erlang прекрасно себя показал

Page 3: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Erlang — это круто

•Это не больно

•Это свободная /cores по утрам

•Это возможность пускать новичков в продакшн

•Это решение проблем продакшна

Page 4: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Область применимости

Долгоживущие серверные приложения,

обеспечивающие коммуникацию большого числа

онлайн пользователей

Page 5: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Область применимости

•Игры

•Чаты, конференции

•Аудио/видео коммуникации

Page 6: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Это всё можно делать

•на Java

Page 7: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Это всё можно делать

•на Java

•на C++

Page 8: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Это всё можно делать

•на Java

•на C++

•на Node.js

Page 9: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Это всё можно делать

•на Java

•на C++

•на Node.js

•на прочих перфокартовых технологиях

Page 10: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Проблемы общего назначения

Платформы общего назначения имеют проблемы,

фатальные для описываемой ситуации

Page 11: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Проблемы общего назначения

Платформы общего назначения имеют проблемы,

фатальные для описываемой ситуации

Page 12: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Проблемы общего назначения

Платформы общего назначения имеют проблемы,

фатальные для описываемой ситуации

В контексте этих проблем Java от бейсика не отличается

Page 13: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Проблемы Java•Утечки памяти

Page 14: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Проблемы Java•Утечки памяти

•Утечки ресурсов

Page 15: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Проблемы Java•Утечки памяти

•Утечки ресурсов

•Обработка ошибок

Page 16: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Проблемы Java•Утечки памяти

•Утечки ресурсов

•Обработка ошибок

•Сложность параллельного программирования

Page 17: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Причина проблем

В языках типа Java разделены объекты и потоки выполнения

У них разное время жизни

Page 18: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Причина проблем

Нелокальность исключений по отношению к объектам

Обработка ошибок становится проблемой и превращает код в спагетти

Page 19: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Результаты проблем

Привлечение новых программистов — головная боль Их ошибки валят весь проект

Цена программирования растет

Page 20: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Erlang — это круто

Page 21: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Erlang — это круто•Вся память разделена на изолированные

потоки исполнения

Page 22: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Erlang — это круто•Вся память разделена на изолированные

потоки исполнения

•Общение происходит через обмен копируемыми сообщениями

Page 23: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Erlang — это круто•Вся память разделена на изолированные

потоки исполнения

•Общение происходит через обмен копируемыми сообщениями

•Все данные немутабельны, ссылок нет

Page 24: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Erlang — это круто•Вся память разделена на изолированные

потоки исполнения

•Общение происходит через обмен копируемыми сообщениями

•Все данные немутабельны, ссылок нет

•Эти потоки выглядят как процессы ОС и так же называются — «процессы»

Page 25: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Erlang — это круто

Спроектирован программистами Ericsson, которые очень хотели спать по ночам

Page 26: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

А вы хотите, что бы ночью работало

только ПО?

Page 27: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Решение проблем•Просто и автоматически

Page 28: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Решение проблем•Просто и автоматически

•Данные живут не дольше процесса

Page 29: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Решение проблем•Просто и автоматически

•Данные живут не дольше процесса

•Отсутствие мутабельности и ссылок снимает проблему их утекания

Page 30: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Решение проблем•Просто и автоматически

•Данные живут не дольше процесса

•Отсутствие мутабельности и ссылок снимает проблему их утекания

•Ошибки автоматически пишутся в лог и завершают текущий процесс

Page 31: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Решение проблем•Просто и автоматически

•Данные живут не дольше процесса

•Отсутствие мутабельности и ссылок снимает проблему их утекания

•Ошибки автоматически пишутся в лог и завершают текущий процесс

•Ресурсы закрываются вместе с процессом

Page 32: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Let it crash

•Программистам платят только за happy path

•Продавцы продают код, а не обработку ошибок

Page 33: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

ERror handling LANGuage

{ok, F} = file:open(“a.txt”),

{ok, Bin} = file:read(F, 1024)

Page 34: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

soft-realtime

•Нет ссылок

•у каждого процесса изолированная куча

•сборка мусора раздельная по ядрам

Page 35: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Многоядерность

•Процессы изолированы

•Никаких взаимных мьютексов

•Автоматический шедулинг по ядрам из коробки

Page 36: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Горячая замена кода

•Деплой кода без отключения онлайн пользователей

Page 37: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Легкая кластеризация

•Сообщения точно так же копируются по сети

•Идентификаторы процессов прозрачно переходят по сети

Page 38: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Говорят, Node.js круче

•Нам не нужны изолированные треды

•Нам не нужна многопроцессорность из коробки

•Нам не нужна готовая инфраструктура обработки ошибок

•Нам не нужна прозрачная сетевая работа

•Мы выбираем server-side JS, потому что мы знаем JS

Page 39: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Evented — шаг назад

•Evented подход превращает код в спагетти

•Обработка ошибок в коллбеках ещё сложнее чем try/catch

•Ни одна указанная проблема не решается

•Годится для nginx

Page 40: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

В Erlang и это круче

{ok, F} = http_file:open(“http://ya.ru/”),

{ok, Bin} = http_file:read(F, 1024)

Page 41: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Резюме

•Классические решения имеют проблемы, вылезающие в продакшне

•Проблемы дизайна усложняют включение новых программистов

•Некоторые «модные» технологии ничего нового не привносят

Page 42: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Резюме•В Erlang дизайн платформы решает

указанные проблем

•Удешевляется поддержка и программирование

•Растет плотность информации в коде (до 10 раз)

•Облегчается включение новых программистов

Page 43: что и почему вы должны программировать на Erlang.максим лапшин. зал 4

Вопросы?

Макс Лапшин

[email protected]