Построение сервисов с RSocket для взаимодействия в реальном времени

Большинство веб-приложений написаны в парадигме запрос/ответ, отлично вписывающейся в мир HTTP. Однако в приложениях, где пользователи активно взаимодействуют друг с другом, стандартная парадигма достигает предела, и возможность видеть действия других пользователей в реальном времени является стандартным ожиданием пользователей современных приложений.

В мире, где правит запрос/ответ, клиенты обычно инициируют взаимодействие, тогда как в realtime мире бэкенд должен начать передачу данных, как только данные становятся доступны, не дожидаясь запросов от клиента. Построение таких систем нетривиально для сервисов с большим количеством пользователей, ведь для каждого пользователя бэкэнду необходимо держать открытое соединение и все связанные с ним данные. Вопросы масштабирования и отказоустойчивости в случае realtime сервисов также сложнее обычных REST сервисов.

В Canva мы сделали возможным для наших пользователей взаимодействовать друг другом в реальном времени, построив сервис с помощью RSocket. В этом докладе я опишу, как мы строили сервис, проблемы, с которыми мы столкнулись и сопутствующие решения как с точки зрения кода — использование RSocket на бэкенде и фронтенде, backpressure, мониторинг и отладка, так и с точки зрения инфраструктуры.


Сергей Целовальников,

Canva

@SerCeMan
Построение сервисов с RSocket для взаимодействия в реальном времени
Сергей Целовальников,
Canva
@SerCeMan
Большинство веб-приложений написаны в парадигме запрос/ответ, отлично вписывающейся в мир HTTP. Однако в приложениях, где пользователи активно взаимодействуют друг с другом, стандартная парадигма достигает предела, и возможность видеть действия других пользователей в реальном времени является стандартным ожиданием пользователей современных приложений.

В мире, где правит запрос/ответ, клиенты обычно инициируют взаимодействие, тогда как в realtime мире бэкенд должен начать передачу данных, как только данные становятся доступны, не дожидаясь запросов от клиента. Построение таких систем нетривиально для сервисов с большим количеством пользователей, ведь для каждого пользователя бэкэнду необходимо держать открытое соединение и все связанные с ним данные. Вопросы масштабирования и отказоустойчивости в случае realtime сервисов также сложнее обычных REST сервисов.

В Canva мы сделали возможным для наших пользователей взаимодействовать друг другом в реальном времени, построив сервис с помощью RSocket. В этом докладе я опишу, как мы строили сервис, проблемы, с которыми мы столкнулись и сопутствующие решения как с точки зрения кода — использование RSocket на бэкенде и фронтенде, backpressure, мониторинг и отладка, так и с точки зрения инфраструктуры.
О докладчике
О докладчике
Опытный разработчик. Большой поклонник платформы JVM, распределенных систем и функционального программирования. Поработав в Naumen и JetBrains, Сергей в 2016 году присоединился к инфраструктурной команде Canva и помог отмасштабировать сервисы Canva до уровня, на котором они смогли надежно обрабатывать запросы десятков миллионов пользователей.
Другие спикеры
Другие спикеры
Показать ещё
Click to order
Total: 
Пришлём подтверждение оплаты на указанную почту в течение 30 минут
Имя
Фамилия
Компания
Должность
E-mail
Оплачивая участие, вы соглашаетесь на обработку персональных данных и с условиями пользования сайтом