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

Preview:

DESCRIPTION

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

Citation preview

ERLANG СДЕЛАЕТ ВАШИ ПРИЛОЖЕНИЯ РЕАЛТАЙМОВЫМИ

BRO AGENCYБЕДА ИЛЬЯ@IR4Y_IX

1 ЧТО НУЖНО ЗНАТЬ О WEB-ПРИЛОЖЕНИЯХ

Это клиент-сервеное приложение работающее по протоколу HTTP

Схема работы не подходят для создания приложений реального времени

2

HTTP REQUEST

MIDDLEWARE

MIDDLEWARE

MIDDLEWARE

HANDLER

MIDDLEWARE

MIDDLEWARE

MIDDLEWARE

APPLICATIONWEB SERVER

REQUEST TOAPPLICATION

APPLICATION RESPONCE

APPLICATIONWEB SERVER

BROWSER

DRAW PAGE

3 ПРОБЛЕМА

Эта схема синхронная

Работает по типу запрос ответ

Инициатором соединения выступает клиент

ЧТО ДЕЛАТЬ ЕСЛИ СЕРВЕРУ НУЖНО О ЧЕМ-ТО ОПОВЕСТИТЬ КЛИЕНТА?

5 ЭВОЛЮЦИЯ ПУТЕЙ РЕШЕНИЯ

Пользователь сам обновит страницуShort PollingLongPollingCometWebSocket

6 WEBSOCKET

WebSocket превращает HTTP в асинхронный и симетричный протокол

7 ПОПУЛЯРНЫЕ ВЕБ-ФРЕЙМОРКИК ЭТОМУ НЕ ГОТОВЫ

Оптимизированы для работы по схеме запрос-ответ

Не готовы обрабатывать потоки данных

Не готовы обрабатывать пул WebSocket соединений

8 КАК ЖЕ БЫТЬ ?

Переписать все на специализированных фреймворках, например, N₂O или meteor.js

Это долго и очень дорого

9 А МОЖЕТ КАК-ТО ПО СТАРИНКЕ?

«Давайте возьмем и напишем часть нашего приложения, отвечающую за реалтайм в виде отдельного модуля!А все остальное оставим без изменения.»

10 ЧТО МОЖНО ИСПОЛЬЗОВАТЬ?

NodeJSEventMachineTornadoLibevent

ERLANG

11 ЧТО ТАКОЕ ERLANG?

Создан в 1980-х годах компанией Ericssonи использовался в телекоммуникационном оборудовании.

В 1998 году вышел в open source и стал набирать популярность.

12 ОСНОВОПОЛАГАЮЩИЕ ПРИНИНЦИПЫ

LET IT CRASH

МОДЕЛЬ АКТОРОВ

НЕИЗМЕНЯЕМЫЕДАННЫЕ

13 ПОЧЕМУ ERLANG?

Изначальная ориентация на реалтайм

Проверен годами в телекоммуникационном оборудовании

Создан инженерами для инженеров

14 КАК ОБСТОЯТ ДЕЛА С WEB?

N₂O ChicagoBoss

15 ЧТО БУДЕМ ИСПОЛЬЗОВАТЬ?

DJANGO — основной Web фреймворкTASTYPIE — приложение для создания RESTANGULARJS — фронтендREDIS — Publish/Subscribe очередь сообщенийCOWBOY — обработчик WebSocket соединении

POSTGRESQL

ANGULARJS

DJANGO ORM MODEL

TASTYPIE MODEL RESOURCE

16

SUBSCRIBER

17 PUBLISH SUBSCRIBE

PUBLISHER SUBSCRIBER

SUBSCRIBER

CHANNEL

POSTGRESQL REDIS

DJANGO ORM MODEL

TASTY

PIE

SERIA

LIZER

TASTYPIE MODEL RESOURCE

ANGULARJS ANGULARJS

COWBOY

EREDISSUBSCRIBE PROCESS

ERLA

NG

BULLET

SUBSCRIBESAVE PUBLISH

TESTYPIEHYDRATE

HTTP POST WEBSOCKET

20 ПОЧЕМУ БЫ НЕ ПОЙТИ ДАЛЬШЕ?

Добавим RPC вызовы через RabbitMQ

Добавим возможность подписываться на канал во время RPC вызовов.

Оформим в виде отдельной библиотеки: https://github.com/ir4y/asteroid

CELERY WORKER

RABBITMQ

ERLANG CELERY CLIENT

COWBOY

ERLA

NG

BULLET

ANGULARJS RPC PROVIDER

SELECT WORKER SEND TASK RESULT IN JSON

PARSE CELERY RESULT

RESTORE UUIDAPPEND UUID TO CELERY RESULTSEND DATA TO BULLET PROCESS

ROUTE RECEIVED DATA WITH UUID TO CALLBACK

SERIALIZE DATA TO JSON

SAVE UUIDSPAWN PROCESS

SYNC CALL TO CELERY

GENERATE UUIDCALL PROCEDUER

GITHUB.COM/IR4Y

Recommended