Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,051 views

Published on

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

Published in: Software
  • I have done a couple of papers through ⇒⇒⇒WRITE-MY-PAPER.net ⇐⇐⇐ they have always been great! They are always in touch with you to let you know the status of paper and always meet the deadline!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

Илья Беда «Как 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

×