Рельсы прекрасный инструмент, но в некоторых ситуациях они не справляются.
В этом докладе рассказывается о таких ситуациях и одном из вариантов решения
2. Как делали веб в древности?
● Программы на С
● Кошмар и ужас
● Баснословно долго и дорого
● Сплошные велосипеды
● Перл немножко облегчил
3. Мир веб-приложений (PHP)
● малое время жизни программы
● нет контроля за ресурсами
● share nothing
● внешняя персистентность (Mysql)
● запрос-ответ
● очень удобно делать магазинчики!
● сборка мусора? Не слышали о таком
4. Rails
● Всё то же самое, но в совершенстве
● Самое правильное расслоение
● Самый читаемый код
● Web 1.5
5. Веб меняется
● Растут нагрузки
● Запрос-ответ,ответ,ответ
● Просто ответ, ответ, ответ
12. Что с запросами и ответами?
● Сервер теперь сам шлет данные клиенту
● Подключенные клиенты (!)
● Состояние в памяти (!)
● Все достижения PHP рушатся как
карточный домик
13. Как бы так обслуживать клиентов
из одной копии программы?
23. Где может пригодиться?
● онлайн игры
● pub/sub, кометы и прочие мессенеджеры
● брокеры рекламы, ссылок и т.п.
● долгоживущие серверные задачи
● прочие in-memory API сервисы
24. Ruby/Python
● Привычно
● Нет multicore
● Кооперативный
шедулинг
● Единая память
● stop-world GC
● плохая
интроспекция
Erlang
● Отлежавшаяся
технология
● true multicore
● вытесняющий
шедулинг
● нет пауз в GC
● hot code reload
● изоляция
ресурсов и ошибок
● интроспекция
25. Erlang
● Обработка данных в памяти
● Легко управляемое состояние системы
● Опциональная сериализация в БД
● Централизованная запись
● Упрощенное развертывание (одна
программа)
● Смена привычек (выкинуть delayed_job)
● Одна из самых совершенных VM
28. Nitrogen
● Выбор для админского интерфейса
● Ни строчки JS
● Всё управление с сервера
● DSL не только для генерации, но и для
модификации
● Активное состояние страницы
29. Проблемы Erlang
● Беда с ORM (на уровне Rails 0.5)
● Бизнес-код очень говорливый
● Непривычные логи
30. Резюме
● Рельсы очень круто
● Иногда не очень
● Иногда Eventmachine спасает
● Иногда нет
● Тогда может спасти эрланг
● Подключенные клиенты, C100K и т.п.