Илья Беда «Как Erlang сделает ваши приложения реалтаймовыми»

990 views

Published on

Современный веб становится интерактивнее. Сейчас практически все браузеры поддерживают такую технологию как WebSocket, но современные веб-фремймоворки, такие как Django, Yii или RubyOnRails, не поддерживают работу с ними. Я расскажу, как мы сделали наши приложения интерактивным с использованием Erlang. А также что такое Erlang. Для чего он нужен.

Published in: Software
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
990
On SlideShare
0
From Embeds
0
Number of Embeds
105
Actions
Shares
0
Downloads
18
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Илья Беда «Как Erlang сделает ваши приложения реалтаймовыми»

  1. 1. ERLANG СДЕЛАЕТ ВАШИ ПРИЛОЖЕНИЯ РЕАЛТАЙМОВЫМИ BRO AGENCY БЕДА ИЛЬЯ @IR4Y_IX
  2. 2. 1 ЧТО НУЖНО ЗНАТЬ О WEB-ПРИЛОЖЕНИЯХ Это клиент-сервеное приложение работающее по протоколу HTTP Схема работы не подходят для создания приложений реального времени
  3. 3. 2 HTTP REQUEST MIDDLEWARE MIDDLEWARE MIDDLEWARE HANDLER MIDDLEWARE MIDDLEWARE MIDDLEWARE APPLICATION WEB SERVER REQUEST TO APPLICATION APPLICATION RESPONCE APPLICATION WEB SERVER BROWSER DRAW PAGE
  4. 4. 3 ПРОБЛЕМА Эта схема синхронная Работает по типу запрос ответ Инициатором соединения выступает клиент
  5. 5. ЧТО ДЕЛАТЬ ЕСЛИ СЕРВЕРУ НУЖНО О ЧЕМ-ТО ОПОВЕСТИТЬ КЛИЕНТА?
  6. 6. 5 ЭВОЛЮЦИЯ ПУТЕЙ РЕШЕНИЯ Пользователь сам обновит страницу Short Polling LongPolling Comet WebSocket
  7. 7. 6 WEBSOCKET WebSocket превращает HTTP в асинхронный и симетричный протокол
  8. 8. 7 ПОПУЛЯРНЫЕ ВЕБ-ФРЕЙМОРКИ К ЭТОМУ НЕ ГОТОВЫ Оптимизированы для работы по схеме запрос-ответ Не готовы обрабатывать потоки данных Не готовы обрабатывать пул WebSocket соединений
  9. 9. 8 КАК ЖЕ БЫТЬ ? Переписать все на специализированных фреймворках, например, N₂O или meteor.js Это долго и очень дорого
  10. 10. 9 А МОЖЕТ КАК-ТО ПО СТАРИНКЕ? «Давайте возьмем и напишем часть нашего приложения, отвечающую за реалтайм в виде отдельного модуля! А все остальное оставим без изменения.»
  11. 11. 10 ЧТО МОЖНО ИСПОЛЬЗОВАТЬ? NodeJS EventMachine Tornado Libevent ERLANG
  12. 12. 11 ЧТО ТАКОЕ ERLANG? Создан в 1980-х годах компанией Ericsson и использовался в телекоммуникационном оборудовании. В 1998 году вышел в open source и стал набирать популярность.
  13. 13. 12 ОСНОВОПОЛАГАЮЩИЕ ПРИНИНЦИПЫ LET IT CRASH МОДЕЛЬ АКТОРОВ НЕИЗМЕНЯЕМЫЕ ДАННЫЕ
  14. 14. 13 ПОЧЕМУ ERLANG? Изначальная ориентация на реалтайм Проверен годами в телекоммуникационном оборудовании Создан инженерами для инженеров
  15. 15. 14 КАК ОБСТОЯТ ДЕЛА С WEB? N₂O ChicagoBoss
  16. 16. 15 ЧТО БУДЕМ ИСПОЛЬЗОВАТЬ? DJANGO — основной Web фреймворк TASTYPIE — приложение для создания REST ANGULARJS — фронтенд REDIS — Publish/Subscribe очередь сообщений COWBOY — обработчик WebSocket соединении
  17. 17. POSTGRESQL ANGULARJS DJANGO ORM MODEL TASTYPIE MODEL RESOURCE 16
  18. 18. SUBSCRIBER 17 PUBLISH SUBSCRIBE PUBLISHER SUBSCRIBER SUBSCRIBER CHANNEL
  19. 19. POSTGRESQL REDIS DJANGO ORM MODEL TASTYPIE SERIALIZER TASTYPIE MODEL RESOURCE ANGULARJS ANGULARJS COWBOY EREDIS SUBSCRIBE PROCESS ERLANG BULLET SUBSCRIBESAVE PUBLISH TESTYPIE HYDRATE HTTP POST WEBSOCKET
  20. 20. 20 ПОЧЕМУ БЫ НЕ ПОЙТИ ДАЛЬШЕ? Добавим RPC вызовы через RabbitMQ Добавим возможность подписываться на канал во время RPC вызовов. Оформим в виде отдельной библиотеки: https://github.com/ir4y/asteroid
  21. 21. CELERY WORKER RABBITMQ ERLANG CELERY CLIENT COWBOY ERLANG BULLET ANGULARJS RPC PROVIDER SELECT WORKER SEND TASK RESULT IN JSON PARSE CELERY RESULT RESTORE UUID APPEND UUID TO CELERY RESULT SEND DATA TO BULLET PROCESS ROUTE RECEIVED DATA WITH UUID TO CALLBACK SERIALIZE DATA TO JSON SAVE UUID SPAWN PROCESS SYNC CALL TO CELERY GENERATE UUID CALL PROCEDUER
  22. 22. GITHUB.COM/IR4Y

×