ERLANG
СДЕЛАЕТ ВАШИ
ПРИЛОЖЕНИЯ
РЕАЛТАЙМОВЫМИ
BRO AGENCY
БЕДА ИЛЬЯ
@IR4Y_IX
1
ЧТО НУЖНО ЗНАТЬ
О WEB-ПРИЛОЖЕНИЯХ
Это клиент-сервеное приложение
работающее по протоколу HTTP
Схема работы не подходят
д...
2
HTTP REQUEST
MIDDLEWARE
MIDDLEWARE
MIDDLEWARE
HANDLER
MIDDLEWARE
MIDDLEWARE
MIDDLEWARE
APPLICATION
WEB SERVER
REQUEST TO...
3
ПРОБЛЕМА
Эта схема синхронная
Работает по типу запрос ответ
Инициатором соединения выступает клиент
ЧТО ДЕЛАТЬ
ЕСЛИ СЕРВЕРУ
НУЖНО О ЧЕМ-ТО
ОПОВЕСТИТЬ
КЛИЕНТА?
5
ЭВОЛЮЦИЯ
ПУТЕЙ РЕШЕНИЯ
Пользователь сам обновит страницу
Short Polling
LongPolling
Comet
WebSocket
6
WEBSOCKET
WebSocket превращает HTTP
в асинхронный и симетричный протокол
7
ПОПУЛЯРНЫЕ ВЕБ-ФРЕЙМОРКИ
К ЭТОМУ НЕ ГОТОВЫ
Оптимизированы для работы
по схеме запрос-ответ
Не готовы обрабатывать потоки...
8
КАК ЖЕ БЫТЬ ?
Переписать все на
специализированных
фреймворках, например,
N₂O или meteor.js
Это долго и очень дорого
9
А МОЖЕТ КАК-ТО
ПО СТАРИНКЕ?
«Давайте возьмем и напишем часть
нашего приложения, отвечающую за реалтайм
в виде отдельного...
10
ЧТО МОЖНО
ИСПОЛЬЗОВАТЬ?
NodeJS
EventMachine
Tornado
Libevent
ERLANG
11
ЧТО ТАКОЕ
ERLANG?
Создан в 1980-х годах компанией Ericsson
и использовался в телекоммуникационном
оборудовании.
В 1998 ...
12
ОСНОВОПОЛАГАЮЩИЕ
ПРИНИНЦИПЫ
LET IT CRASH
МОДЕЛЬ
АКТОРОВ
НЕИЗМЕНЯЕМЫЕ
ДАННЫЕ
13
ПОЧЕМУ ERLANG?
Изначальная ориентация на реалтайм
Проверен годами в телекоммуникационном
оборудовании
Создан инженерами...
14
КАК ОБСТОЯТ ДЕЛА
С WEB?
N₂O ChicagoBoss
15
ЧТО БУДЕМ
ИСПОЛЬЗОВАТЬ?
DJANGO — основной Web фреймворк
TASTYPIE — приложение для создания REST
ANGULARJS — фронтенд
RE...
POSTGRESQL
ANGULARJS
DJANGO ORM
MODEL
TASTYPIE
MODEL
RESOURCE
16
SUBSCRIBER
17
PUBLISH SUBSCRIBE
PUBLISHER SUBSCRIBER
SUBSCRIBER
CHANNEL
POSTGRESQL REDIS
DJANGO
ORM MODEL
TASTYPIE
SERIALIZER
TASTYPIE
MODEL
RESOURCE
ANGULARJS ANGULARJS
COWBOY
EREDIS
SUBSCRIBE
...
20
ПОЧЕМУ БЫ
НЕ ПОЙТИ ДАЛЬШЕ?
Добавим RPC вызовы через RabbitMQ
Добавим возможность подписываться
на канал во время RPC вы...
CELERY
WORKER
RABBITMQ
ERLANG
CELERY CLIENT
COWBOY
ERLANG
BULLET
ANGULARJS
RPC PROVIDER
SELECT WORKER SEND TASK RESULT
IN ...
GITHUB.COM/IR4Y
Upcoming SlideShare
Loading in...5
×

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

514

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
514
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
16
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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×