SlideShare a Scribd company logo
1 of 50
Download to read offline
Эволюция:
                          Rails, Eventmachine, Erlang


                                     Макс Лапшин
                                   max@maxidoors.ru

Sunday, December 16, 12
Программы древности


                 •        Написаны на С

                 •        Запутанная логика

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




Sunday, December 16, 12
Программы древности


                 •        Данные хранятся в памяти

                 •        Ручная сериализация на диск

                 •        Сложные протоколы IPC




Sunday, December 16, 12
Программы древности




Sunday, December 16, 12
PHP
                 •        Запрос-ответ

                 •        Программа живет одну секунду

                 •        Share nothing

                 •        Персистентность внешняя

                 •        Нулевой контроль за ресурсами

                 •        Естественный контроль за overload

Sunday, December 16, 12
PHP




Sunday, December 16, 12
Rails


                 •        Идея PHP в совершенстве

                 •        Лучший инструмент для сайтов

                 •        Лучший выбор для Web 1.5




Sunday, December 16, 12
Rails




Sunday, December 16, 12
Web меняется


                 •        Веб становится динамичным

                 •        Хватит перезагружать страницу

                 •        Ajax в рельсах реализован прекрасно




Sunday, December 16, 12
Web меняется


                 •        Веб становится интерактивным

                 •        Страница меняется сама!

                 •        Беда!




Sunday, December 16, 12
Web меняется




Sunday, December 16, 12
Интерактивный веб в Rails

                 •        Меняется источник активности

                 •        Теперь опять сервер инициирует поток данных

                 •        Старые концепции опять не годятся

                 •        Comet, WebSockets, ServerSentEvents — рельсы это не могут



Sunday, December 16, 12
Проблемы

                 •        Подключенные клиенты

                 •        Возникает стейт в памяти

                 •        Проблемы обработки ошибок

                 •        Архитектурная непригодность для решения проблем



Sunday, December 16, 12
Rails

                 •        Организованы жестко по принципу запрос-ответ

                 •        Огромный расход памяти на каждого клиента

                 •        Один запрос — один инстанс

                 •        Только для коротких запросов



Sunday, December 16, 12
Типичная архитектура
                                   online-игры на Rails
                 •        Rails

                 •        Comet сервер

                 •        СУБД

                 •        Сотни лишних запросов к БД

                 •        Постоянная (де)сериализация и синхронизация

Sunday, December 16, 12
Fail!



Sunday, December 16, 12
Eventmachine


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

                 •        Держит стейт в памяти

                 •        В сотни раз сокращает трафик к БД




Sunday, December 16, 12
Online игра на
                                         Eventmachine

                 •        Стейт игры держится в памяти

                 •        Пользователи подключаются к одному серверу

                 •        Команды передаются внутри Ruby VM

                 •        Запись в БД только из игры



Sunday, December 16, 12
Eventmachine


                 •        Сохраняется вся экосистема Rails

                 •        Можно прибить гвоздями асинхронную БД

                 •        Расшаренный код с Rails-приложением




Sunday, December 16, 12
Win?!



Sunday, December 16, 12
Eventmachine
                 •        Страдает реализация (нелепые баги)

                 •        Callbacks hell

                 •        Как жить с ошибками?

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

                 •        Контроль перегрузки

                 •        Репликация и failover

Sunday, December 16, 12
Callbacks




Sunday, December 16, 12
Fibers

                 •        Спасают

                 •        Глючат

                 •        Но спасают

                 •        Ещё сложнее, чем коллбеки



Sunday, December 16, 12
Обработка ошибок

                 •        Ошибки происходят

                 •        Баги в коде

                 •        Неожиданные входные данные

                 •        Все ошибки не убрать



Sunday, December 16, 12
Обработка ошибок

                 •        Как обрабатывать?

                 •        Как не повалить весь сервер?

                 •        Какие данные разрушаются от одной ошибки?

                 •        Как не превратить код в сплошную обработку ошибок?



Sunday, December 16, 12
Обработка ошибок

                 •        В Ruby ошибка привязана к потоку выполнения

                 •        Объекты живут отдельно от потоков

                 •        Это ключевая проблема почти для всех языков

                 •        Надо связывать объекты и ошибки руками, делая новые ошибки



Sunday, December 16, 12
Утечки памяти


                 •        В Ruby сотни утечек

                 •        Данные не группируются по объектам предметной области

                 •        Утекла, так утекла. Ребутнем потом.




Sunday, December 16, 12
Fail!



Sunday, December 16, 12
Контроль за нагрузкой


                 •        Как не дать сервису упасть под нагрузкой?

                 •        Как правильно отказать новым клиентам?

                 •        Как не навредить старым клиентам?




Sunday, December 16, 12
Контроль за нагрузкой




Sunday, December 16, 12
Контроль за нагрузкой

                 •        Бесконтрольно принимаем клиентов

                 •        Начинаем тормозить всех

                 •        Все получают таймаут от фронт-прокси, делают retry

                 •        В системе удваивается количество работы



Sunday, December 16, 12
Контроль за нагрузкой




Sunday, December 16, 12
Контроль за нагрузкой

                 •        Требуется backpush в каждом компоненте системы

                 •        Важно не дать затыку пролезть вглубь системы

                 •        Для этого нужен адекватный контроль загрузки

                 •        Торможение клиента и отказ на ранней стадии

                 •        Требуется удобная сборка данных по состоянию клиентов


Sunday, December 16, 12
Репликация и failover


                 •        У вас только один Comet-сервер?

                 •        Как пережить его падение?

                 •        Репликация по сети — только руками.




Sunday, December 16, 12
Fail!



Sunday, December 16, 12
Erlang

                 •        Построен вокруг изоляции ошибок

                 •        Обработка клиентов строго изолирована и группирована

                 •        Все ресурсы строго разграничены

                 •        Обработка клиентов прогнозируема

                 •        Прозрачная сетевая кластеризация


Sunday, December 16, 12
Процессы в Erlang

                 •        Вся логика изолирована в независимых процессах

                 •        Коммуникация только обменом сообщений

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

                 •        Их могут быть миллионы



Sunday, December 16, 12
Процессы в Erlang

                 •        Процессы чертовски удобны!

                 •        Ими проще моделировать предметную область

                 •        Они совпадают с теми квадратиками на флипчарте

                 •        Проще проектировать в таких терминах



Sunday, December 16, 12
Ошибки

                 •        Любая ошибка привязана к процессу

                 •        Самое частое поведение — упасть процессу по ошибке

                 •        Не тратишь время на обработку ошибок

                 •        Система устойчива к нерегулярным сбоям



Sunday, December 16, 12
Ресурсы

                 •        Все ресурсы строго изолированы

                 •        Со смертью процесса всё освобождается, включая файлы и сокеты

                 •        Консоль прям внутри работающей системы

                 •        Элементарный поиск потребителя памяти

                 •        Утечки — вообще не проблема


Sunday, December 16, 12
Ресурсы



                 •        Год аптайма — не проблема




Sunday, December 16, 12
Контроль нагрузки

                 •        Синхронные call-ы сообщениями сдерживают нагрузку

                 •        Длина очереди процесса — прекрасная метрика

                 •        Можно интроспектить загрузки процессов

                 •        Гораздо проще вовремя отказать



Sunday, December 16, 12
Кластеризация


                 •        Адресация процессов доступна по сети

                 •        Механизмы для глобальной адресации процессов в кластере

                 •        Надо быть аккуратным, что бы не положить канал




Sunday, December 16, 12
Win!



Sunday, December 16, 12
Win?



Sunday, December 16, 12
Проблемы Erlang

                 •        Говорливый синтаксис после Ruby

                 •        Неудобная работа со строками (много текста), но есть серьезные
                          фичи для скорости (iolists)

                 •        Нет и не планируется удобного ORM типа ActiveRecord

                 •        Зато можно хранить данные в памяти. Пользуйтесь этим!



Sunday, December 16, 12
С чего начать?

                 •        “Erlang Programming” by Francesco Cesarini

                 •        http://learnyousomeerlang.com by Fred

                 •        http://groups.google.com/group/erlang-programming

                 •        http://groups.google.com/group/erlang-russian



Sunday, December 16, 12
Что будет полезно?


                 •        ChicagoBoss — веб-фреймворк а-ля Rails 0.5

                 •        https://github.com/doubleyou/dps Распределенный Comet сервер




Sunday, December 16, 12
Итого

                 •        Rails — чудесный инструмент для сайтов

                 •        Rails становится непригоден для интерактивного веба

                 •        Eventmachine хороший мостик в новый веб

                 •        В Eventmachine есть нерешаемые проблемы

                 •        Erlang их чудесно решает. Написали и забыли.


Sunday, December 16, 12
Вопросы?


                                 Макс Лапшин

                              max@maxidoors.ru

                          http://levgem.livejournal.com




Sunday, December 16, 12

More Related Content

Viewers also liked

Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Constantin Kichinsky
 
Ruby: интерпретируемый, динамичный, человеколюбивый
Ruby: интерпретируемый, динамичный, человеколюбивыйRuby: интерпретируемый, динамичный, человеколюбивый
Ruby: интерпретируемый, динамичный, человеколюбивыйAlex Mikitenko
 
Erlang railsclub - 1
Erlang   railsclub - 1Erlang   railsclub - 1
Erlang railsclub - 1Max Lapshin
 
Микросервисы: откуда столько шума?
Микросервисы: откуда столько шума?Микросервисы: откуда столько шума?
Микросервисы: откуда столько шума?Ivan Evtukhovich
 
Видеостриминг на 10 ГБит/с
Видеостриминг на 10 ГБит/сВидеостриминг на 10 ГБит/с
Видеостриминг на 10 ГБит/сMax Lapshin
 
Там, где Rails не справляются
Там, где Rails не справляютсяТам, где Rails не справляются
Там, где Rails не справляютсяMax Lapshin
 
Pulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядовPulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядовMax Lapshin
 
Развитие DevOps/NoOps инструментов. Что было, что есть, что будет.
Развитие DevOps/NoOps инструментов.  Что было, что есть, что будет.Развитие DevOps/NoOps инструментов.  Что было, что есть, что будет.
Развитие DevOps/NoOps инструментов. Что было, что есть, что будет.Ivan Evtukhovich
 
Flussonic IPTV OTT
Flussonic IPTV OTTFlussonic IPTV OTT
Flussonic IPTV OTTMax Lapshin
 
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.HappyDev-lite
 
Антон Веснин - "Обзорное сравнение серверов приложений ruby-on-rails"
Антон Веснин - "Обзорное сравнение серверов приложений ruby-on-rails"Антон Веснин - "Обзорное сравнение серверов приложений ruby-on-rails"
Антон Веснин - "Обзорное сравнение серверов приложений ruby-on-rails"railsclub
 
1000 запросов в секунду на rails (Макс Лапшин)
1000 запросов в секунду на rails (Макс Лапшин)1000 запросов в секунду на rails (Макс Лапшин)
1000 запросов в секунду на rails (Макс Лапшин)Ontico
 
10 reasons I love RubyOnRails
10 reasons I love RubyOnRails10 reasons I love RubyOnRails
10 reasons I love RubyOnRailsPavel Gabriel
 
Как сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on RailsКак сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on RailsYaroslav Markin
 
Призма24 - Маркетплейсы.
Призма24 - Маркетплейсы.Призма24 - Маркетплейсы.
Призма24 - Маркетплейсы.Vitalii Tytskyi
 
Когда технологий много - iForum 2013
Когда технологий много - iForum 2013Когда технологий много - iForum 2013
Когда технологий много - iForum 2013Andrey Listochkin
 

Viewers also liked (20)

Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!
 
Ruby: интерпретируемый, динамичный, человеколюбивый
Ruby: интерпретируемый, динамичный, человеколюбивыйRuby: интерпретируемый, динамичный, человеколюбивый
Ruby: интерпретируемый, динамичный, человеколюбивый
 
Erlang railsclub - 1
Erlang   railsclub - 1Erlang   railsclub - 1
Erlang railsclub - 1
 
Микросервисы: откуда столько шума?
Микросервисы: откуда столько шума?Микросервисы: откуда столько шума?
Микросервисы: откуда столько шума?
 
Видеостриминг на 10 ГБит/с
Видеостриминг на 10 ГБит/сВидеостриминг на 10 ГБит/с
Видеостриминг на 10 ГБит/с
 
Там, где Rails не справляются
Там, где Rails не справляютсяТам, где Rails не справляются
Там, где Rails не справляются
 
Pulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядовPulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядов
 
Развитие DevOps/NoOps инструментов. Что было, что есть, что будет.
Развитие DevOps/NoOps инструментов.  Что было, что есть, что будет.Развитие DevOps/NoOps инструментов.  Что было, что есть, что будет.
Развитие DevOps/NoOps инструментов. Что было, что есть, что будет.
 
Flussonic IPTV OTT
Flussonic IPTV OTTFlussonic IPTV OTT
Flussonic IPTV OTT
 
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
 
Антон Веснин - "Обзорное сравнение серверов приложений ruby-on-rails"
Антон Веснин - "Обзорное сравнение серверов приложений ruby-on-rails"Антон Веснин - "Обзорное сравнение серверов приложений ruby-on-rails"
Антон Веснин - "Обзорное сравнение серверов приложений ruby-on-rails"
 
1000 запросов в секунду на rails (Макс Лапшин)
1000 запросов в секунду на rails (Макс Лапшин)1000 запросов в секунду на rails (Макс Лапшин)
1000 запросов в секунду на rails (Макс Лапшин)
 
Oleg Gorbunov Action cable
Oleg Gorbunov Action cableOleg Gorbunov Action cable
Oleg Gorbunov Action cable
 
10 reasons I love RubyOnRails
10 reasons I love RubyOnRails10 reasons I love RubyOnRails
10 reasons I love RubyOnRails
 
RSpec. Part 2
RSpec. Part 2RSpec. Part 2
RSpec. Part 2
 
Как сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on RailsКак сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on Rails
 
Призма24 - Маркетплейсы.
Призма24 - Маркетплейсы.Призма24 - Маркетплейсы.
Призма24 - Маркетплейсы.
 
R18n
R18nR18n
R18n
 
Rails Concerns
Rails ConcernsRails Concerns
Rails Concerns
 
Когда технологий много - iForum 2013
Когда технологий много - iForum 2013Когда технологий много - iForum 2013
Когда технологий много - iForum 2013
 

More from Max Lapshin

Code generation in Erlang
Code generation in ErlangCode generation in Erlang
Code generation in ErlangMax Lapshin
 
Erlang for Yandex
Erlang for YandexErlang for Yandex
Erlang for YandexMax Lapshin
 
Актуальное состояние вещания видео в интернете
Актуальное состояние вещания видео в интернетеАктуальное состояние вещания видео в интернете
Актуальное состояние вещания видео в интернетеMax Lapshin
 
Что и почему писать на Erlang
Что и почему писать на ErlangЧто и почему писать на Erlang
Что и почему писать на ErlangMax Lapshin
 
Devpoint2 video in internet
Devpoint2 video in internetDevpoint2 video in internet
Devpoint2 video in internetMax Lapshin
 
Erlyvideo — сервер потокового видео.
Erlyvideo — сервер потокового видео.Erlyvideo — сервер потокового видео.
Erlyvideo — сервер потокового видео.Max Lapshin
 
Отличие Erlang от объектных языков
Отличие Erlang от объектных языковОтличие Erlang от объектных языков
Отличие Erlang от объектных языковMax Lapshin
 
кеширование в бд
кеширование в бдкеширование в бд
кеширование в бдMax Lapshin
 

More from Max Lapshin (11)

Code generation in Erlang
Code generation in ErlangCode generation in Erlang
Code generation in Erlang
 
Erlang for Yandex
Erlang for YandexErlang for Yandex
Erlang for Yandex
 
Актуальное состояние вещания видео в интернете
Актуальное состояние вещания видео в интернетеАктуальное состояние вещания видео в интернете
Актуальное состояние вещания видео в интернете
 
Http streaming
Http streamingHttp streaming
Http streaming
 
Erlang&rails
Erlang&railsErlang&rails
Erlang&rails
 
Что и почему писать на Erlang
Что и почему писать на ErlangЧто и почему писать на Erlang
Что и почему писать на Erlang
 
Devpoint2 video in internet
Devpoint2 video in internetDevpoint2 video in internet
Devpoint2 video in internet
 
Erlyvideo — сервер потокового видео.
Erlyvideo — сервер потокового видео.Erlyvideo — сервер потокового видео.
Erlyvideo — сервер потокового видео.
 
Отличие Erlang от объектных языков
Отличие Erlang от объектных языковОтличие Erlang от объектных языков
Отличие Erlang от объектных языков
 
Erlyvideo
ErlyvideoErlyvideo
Erlyvideo
 
кеширование в бд
кеширование в бдкеширование в бд
кеширование в бд
 

Rails, Eventmachine, Erlang

  • 1. Эволюция: Rails, Eventmachine, Erlang Макс Лапшин max@maxidoors.ru Sunday, December 16, 12
  • 2. Программы древности • Написаны на С • Запутанная логика • Огромная сложность программирования Sunday, December 16, 12
  • 3. Программы древности • Данные хранятся в памяти • Ручная сериализация на диск • Сложные протоколы IPC Sunday, December 16, 12
  • 5. PHP • Запрос-ответ • Программа живет одну секунду • Share nothing • Персистентность внешняя • Нулевой контроль за ресурсами • Естественный контроль за overload Sunday, December 16, 12
  • 7. Rails • Идея PHP в совершенстве • Лучший инструмент для сайтов • Лучший выбор для Web 1.5 Sunday, December 16, 12
  • 9. Web меняется • Веб становится динамичным • Хватит перезагружать страницу • Ajax в рельсах реализован прекрасно Sunday, December 16, 12
  • 10. Web меняется • Веб становится интерактивным • Страница меняется сама! • Беда! Sunday, December 16, 12
  • 12. Интерактивный веб в Rails • Меняется источник активности • Теперь опять сервер инициирует поток данных • Старые концепции опять не годятся • Comet, WebSockets, ServerSentEvents — рельсы это не могут Sunday, December 16, 12
  • 13. Проблемы • Подключенные клиенты • Возникает стейт в памяти • Проблемы обработки ошибок • Архитектурная непригодность для решения проблем Sunday, December 16, 12
  • 14. Rails • Организованы жестко по принципу запрос-ответ • Огромный расход памяти на каждого клиента • Один запрос — один инстанс • Только для коротких запросов Sunday, December 16, 12
  • 15. Типичная архитектура online-игры на Rails • Rails • Comet сервер • СУБД • Сотни лишних запросов к БД • Постоянная (де)сериализация и синхронизация Sunday, December 16, 12
  • 17. Eventmachine • Решает проблемы с подключением клиентов • Держит стейт в памяти • В сотни раз сокращает трафик к БД Sunday, December 16, 12
  • 18. Online игра на Eventmachine • Стейт игры держится в памяти • Пользователи подключаются к одному серверу • Команды передаются внутри Ruby VM • Запись в БД только из игры Sunday, December 16, 12
  • 19. Eventmachine • Сохраняется вся экосистема Rails • Можно прибить гвоздями асинхронную БД • Расшаренный код с Rails-приложением Sunday, December 16, 12
  • 21. Eventmachine • Страдает реализация (нелепые баги) • Callbacks hell • Как жить с ошибками? • Учет ресурсов • Контроль перегрузки • Репликация и failover Sunday, December 16, 12
  • 23. Fibers • Спасают • Глючат • Но спасают • Ещё сложнее, чем коллбеки Sunday, December 16, 12
  • 24. Обработка ошибок • Ошибки происходят • Баги в коде • Неожиданные входные данные • Все ошибки не убрать Sunday, December 16, 12
  • 25. Обработка ошибок • Как обрабатывать? • Как не повалить весь сервер? • Какие данные разрушаются от одной ошибки? • Как не превратить код в сплошную обработку ошибок? Sunday, December 16, 12
  • 26. Обработка ошибок • В Ruby ошибка привязана к потоку выполнения • Объекты живут отдельно от потоков • Это ключевая проблема почти для всех языков • Надо связывать объекты и ошибки руками, делая новые ошибки Sunday, December 16, 12
  • 27. Утечки памяти • В Ruby сотни утечек • Данные не группируются по объектам предметной области • Утекла, так утекла. Ребутнем потом. Sunday, December 16, 12
  • 29. Контроль за нагрузкой • Как не дать сервису упасть под нагрузкой? • Как правильно отказать новым клиентам? • Как не навредить старым клиентам? Sunday, December 16, 12
  • 31. Контроль за нагрузкой • Бесконтрольно принимаем клиентов • Начинаем тормозить всех • Все получают таймаут от фронт-прокси, делают retry • В системе удваивается количество работы Sunday, December 16, 12
  • 33. Контроль за нагрузкой • Требуется backpush в каждом компоненте системы • Важно не дать затыку пролезть вглубь системы • Для этого нужен адекватный контроль загрузки • Торможение клиента и отказ на ранней стадии • Требуется удобная сборка данных по состоянию клиентов Sunday, December 16, 12
  • 34. Репликация и failover • У вас только один Comet-сервер? • Как пережить его падение? • Репликация по сети — только руками. Sunday, December 16, 12
  • 36. Erlang • Построен вокруг изоляции ошибок • Обработка клиентов строго изолирована и группирована • Все ресурсы строго разграничены • Обработка клиентов прогнозируема • Прозрачная сетевая кластеризация Sunday, December 16, 12
  • 37. Процессы в Erlang • Вся логика изолирована в независимых процессах • Коммуникация только обменом сообщений • Данные только внутри процессов • Их могут быть миллионы Sunday, December 16, 12
  • 38. Процессы в Erlang • Процессы чертовски удобны! • Ими проще моделировать предметную область • Они совпадают с теми квадратиками на флипчарте • Проще проектировать в таких терминах Sunday, December 16, 12
  • 39. Ошибки • Любая ошибка привязана к процессу • Самое частое поведение — упасть процессу по ошибке • Не тратишь время на обработку ошибок • Система устойчива к нерегулярным сбоям Sunday, December 16, 12
  • 40. Ресурсы • Все ресурсы строго изолированы • Со смертью процесса всё освобождается, включая файлы и сокеты • Консоль прям внутри работающей системы • Элементарный поиск потребителя памяти • Утечки — вообще не проблема Sunday, December 16, 12
  • 41. Ресурсы • Год аптайма — не проблема Sunday, December 16, 12
  • 42. Контроль нагрузки • Синхронные call-ы сообщениями сдерживают нагрузку • Длина очереди процесса — прекрасная метрика • Можно интроспектить загрузки процессов • Гораздо проще вовремя отказать Sunday, December 16, 12
  • 43. Кластеризация • Адресация процессов доступна по сети • Механизмы для глобальной адресации процессов в кластере • Надо быть аккуратным, что бы не положить канал Sunday, December 16, 12
  • 46. Проблемы Erlang • Говорливый синтаксис после Ruby • Неудобная работа со строками (много текста), но есть серьезные фичи для скорости (iolists) • Нет и не планируется удобного ORM типа ActiveRecord • Зато можно хранить данные в памяти. Пользуйтесь этим! Sunday, December 16, 12
  • 47. С чего начать? • “Erlang Programming” by Francesco Cesarini • http://learnyousomeerlang.com by Fred • http://groups.google.com/group/erlang-programming • http://groups.google.com/group/erlang-russian Sunday, December 16, 12
  • 48. Что будет полезно? • ChicagoBoss — веб-фреймворк а-ля Rails 0.5 • https://github.com/doubleyou/dps Распределенный Comet сервер Sunday, December 16, 12
  • 49. Итого • Rails — чудесный инструмент для сайтов • Rails становится непригоден для интерактивного веба • Eventmachine хороший мостик в новый веб • В Eventmachine есть нерешаемые проблемы • Erlang их чудесно решает. Написали и забыли. Sunday, December 16, 12
  • 50. Вопросы? Макс Лапшин max@maxidoors.ru http://levgem.livejournal.com Sunday, December 16, 12