Как они помогают упростить создание приложений, управляемых событиями в масштабе Интернета.

Приложения реального времени становятся все более популярными в новой цифровой экономике.

Если ваше приложение не передает информацию пользователям, они могут не взаимодействовать с ней и, возможно, в конце концов ее забудут. Вот почему каждое приложение, которое вы видите сегодня, пытается отправлять вам уведомления.

Это тонкий способ сказать: «Дорогой пользователь, пожалуйста, используйте меня сегодня».

Однако создание таких приложений - непростая задача. Но некоторые бессерверные платформы делают это безболезненным. В этом посте они подробно обсуждаются.

Чтобы получить представление о API, управляемых событиями, и о том, как работают приложения реального времени, вы можете обратиться к моей статье ниже.



Какие есть примеры приложений в реальном времени?

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

Некоторые примеры приложений включают:

  • Чат-приложения
  • Панели мониторинга в реальном времени
  • Всплывающие уведомления
  • Отслеживание геолокации
  • Управление и контроль IoT и подключенных устройств
  • Массовые многопользовательские онлайн-игры
  • СМИ
  • Торговые приложения

Создание приложений реального времени сложно.

За каждым приложением реального времени стоит постоянно развивающаяся сложная системная архитектура, которую сложно поддерживать. Он состоит из множества управляемых событиями API, механизма публикации / подписки, распределенного хранилища данных и армии первоклассных инженеров.

Если вы думаете, что все приложения реального времени предназначены для отправки асинхронных уведомлений вашим пользователям, это неправильно.

Фактически, это только верхушка айсберга.

Первое препятствие, с которым вам придется столкнуться, - это масштабируемость. Как интернет-приложение, вам необходимо отправить это уведомление миллиардам пользователей с задержкой менее секунды.

Затем вы должны убедиться, что пользователь не получит одно и то же уведомление более одного раза. Кроме того, пользователи из разных географических регионов не должны ощущать задержки в сообщениях чата. Это заставляет задуматься о единовременной обработке и возможной согласованности, что в конечном итоге усложняет систему.

Когда вы пытаетесь решить все вышеперечисленные задачи, управление системной инфраструктурой продолжает расти. Не говоря уже об усилиях, которые вы должны приложить для обеспечения безопасности и соответствия пользовательских данных стандартам. Неожиданная утечка данных в мгновение ока разрушит будущее вашего приложения.

Каковы ваши шансы создать интерактивное и адаптивное приложение, работающее в реальном времени, как обычный мобильный, веб-разработчик или серверный разработчик, несмотря на все эти проблемы?

Похоже, вам придется получить специальность по построению распределенных систем, нравится вам это или нет.

Можно ли этого избежать? ДА!!

Посмотрим как.

Как помогают бессерверные платформы?

К счастью, за последние несколько лет появилось несколько бессерверных платформ, которые помогли разработчикам разрабатывать и создавать приложения реального времени, не получив ученой степени в области распределенных систем.

Эти платформы приходят к вам в виде управляемых сервисов, которые отвлекают от вас основную сложность. Ниже приведен список вещей, общих для большинства из них.

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

Масштабируемость и доступность. Платформа сама обеспечивает высокую доступность в нескольких регионах, масштабирование по требованию и обеспечивает предсказуемую задержку по всему миру.

Пониженная сложность. Большинство платформ построено на масштабируемых системах pub-sub, которые могут эффективно обрабатывать около миллиарда подписчиков одновременно. События, приходящие и исходящие от потребителей, надежно хранятся в распределенном и секционированном журнале событий.

Такая архитектура решает многие проблемы, присущие распределенным системам: однократная обработка, упорядочение сообщений и работа с согласованными в конечном итоге данными.

Поддержка многопротокольного API. Эти платформы стараются скрыть свою внутреннюю сложность от конечных пользователей, то есть разработчиков. Базовая функциональность системы предоставляется разработчикам через хорошо документированные API и SDK.

Разработчики могут гибко работать с платформой на своем знакомом языке программирования, в то время как платформа позаботится обо всем остальном.

Большинство платформ поддерживают событийно-ориентированные технологии API для отправки и получения данных. WebHooks, WebSockets, SSE, STOMP и MQTT - несколько примеров.

Безопасность данных в движении и данных в состоянии покоя. Многие платформы предлагают надежные меры безопасности для данных, которые они хранят, - некоторые из них даже обеспечивают шифрование AES256 и соответствие SOC2 и HIPAA.

Принимая во внимание все эти факты, большинство разработчиков неизбежно выберут бессерверную платформу, как показано ниже, чтобы приступить к созданию приложений реального времени в масштабе Интернета.

1. Умело

По своей сути Ably представляет собой облачную платформу pub / sub как услугу, гарантирующую, что любое устройство, публикующее сообщения для Ably, будет получено в режиме реального времени любым количеством подписывающих устройств.

Как разработчик, вы можете использовать Ably в качестве масштабируемого механизма публикации / подписки для создания приложений обмена сообщениями в реальном времени, требующих гарантированной доставки, упорядочивания сообщений и сохранения сообщений. Кроме того, Ably можно использовать в качестве потоковой системы для подключения и использования сохраненных сообщений в потоковом режиме. Вы можете использовать такие протоколы, как WebSockets или SSE, для непрерывной отправки / получения данных в / из Ably. Ably также размещает и управляет очередями сообщений, которые предоставляются через протоколы AMQP и MQTT.

Более того, Ably предоставляет обширную экосистемную поддержку для сторонних интеграций. Его механизм публикации / подписки может отправлять сообщения на внешние веб-перехватчики, вызывать бессерверные функции и даже передавать потоки на другие платформы сообщений, такие как AWS Kinesis и RabbitMQ. Кроме того, поддерживаются push-уведомления.

Ably поддерживает концентратор потоковых данных, который позволяет разработчикам находить и использовать бесплатные и открытые источники потоковых данных, чтобы дополнять свои приложения сторонними данными в реальном времени. В настоящее время существуют потоковые источники в различных отраслях, таких как транспорт, спорт, новости, погода, социальные сети и финансы.

Все эти функции предлагаются разработчикам с помощью широкого набора SDK для конкретных языков и удобных для разработчиков API.

2. Толкатель

Бессерверная платформа Pusher предлагает разработчикам два продукта для создания приложений реального времени; Каналы и Лучи.

Каналы предоставляют основные функции публикации / подписки, которые можно использовать для создания приложений чата, информационных панелей в реальном времени, индикаторов присутствия и отслеживания географического местоположения. Потребители подключаются к каналам с помощью соединений WebSockets для непрерывной отправки и получения событий. Кроме того, Channels поддерживает интеграцию на основе событий с WebHooks, где он может отправлять сообщения на зарегистрированный WebHook, когда происходит что-то интересное.

Beams - это кроссплатформенный API push-уведомлений, разработанный для разработчиков, которым необходимо доставлять критически важную информацию о транзакциях в режиме реального времени без сложной интеграции и обслуживания.

Pusher обеспечивает сквозное шифрование перемещаемых данных, при этом соблюдая требования GDPR и HIPAA.

Для интеграции с платформой Pusher предоставляет широкий спектр языковых SDK и удобных для разработчиков API.

3. PubNub

PubNub позиционирует себя на рынке как чат и коммуникационная платформа в реальном времени.

PubNub предоставляет надежную службу обмена сообщениями в приложении с малой задержкой, чтобы удовлетворить как семантику публикации / подписки, так и семантику очереди сообщений. Каждое устройство связано с каналом, который является основным способом получения сообщений от PubNub. Канал имеет несколько вариантов для поддержки шаблонов связи один к одному, многие ко многим, одноадресной и широковещательной передачи.

Служба обмена сообщениями также предоставляет API-интерфейс присутствия для обнаружения и уведомления о статусе участника в сети. Кроме того, PubNub интегрируется с 65+ сторонними системами и API с интерфейсами веб-перехватчиков и потоков данных, а также с безопасным хранилищем для хранения внешних учетных данных.

Одна вещь, которая помогает PubNub выделиться среди конкурентов, - это встроенная поддержка бессерверных функций. Функции PubNub позволяют разработчикам запускать код в своей сети или использовать существующие интеграции для преобразования, перенаправления, расширения, фильтрации и агрегирования сообщений для обнаружения и блокировки спамеров, измерения средних значений и т. Д.

PubNub поддерживает соответствие нормативным требованиям, включая HIPAA, GDPR, SOC2 Type 2 и CCPA.

Как и любая другая платформа, PubNub предоставляет разработчикам богатый набор API и SDK для конкретных языков.

4. Azure SignalR

Сервис Azure SignalR упрощает процесс добавления веб-функциональности в реальном времени к приложениям через HTTP. Эта функция в реальном времени позволяет службе отправлять обновления содержимого подключенным клиентам, таким как одностраничное веб-приложение или мобильное приложение. В результате клиенты обновляются без загрязнения сервера или отправки новых HTTP-запросов на обновления.

SignalR - отличный вариант, если вы планируете создать весь стек приложений на платформе Azure, поскольку он изначально интегрируется со службами Azure, такими как Функции Azure и ASP.NET Core.

SignalR обеспечивает подключение к потребителям по нескольким протоколам. WebSockets является оптимальным транспортом, но другие методы, такие как Server-Sent Events (SSE) и длительный опрос, используются, когда другие параметры недоступны.

В конце концов, это служба Azure, а это означает, что разработчикам сразу же предоставляется широкий спектр SDK, API и соответствие требованиям безопасности.

5. AWS AppSync

AWS AppSync - это полностью управляемый сервис, упрощающий разработку GraphQL API. API-интерфейсы GraphQL, созданные с помощью AWS AppSync, дают интерфейсным разработчикам возможность запрашивать несколько баз данных, микросервисов и API-интерфейсов с одной конечной точки GraphQL.

Хотя AppSync в первую очередь позиционирует себя как шлюз API для создания и запуска API-интерфейсов GraphQL, он также поддерживает создание приложений в реальном времени с помощью встроенных подписок GraphQL.

Благодаря управляемым подпискам GraphQL AppSync может отправлять обновления данных в реальном времени через веб-сокеты миллионам клиентов. AppSync также обеспечивает локальный доступ к данным для мобильных и веб-приложений, когда устройства переходят в автономный режим, и синхронизацию данных с настраиваемым разрешением конфликтов, когда они снова в сети.

Разработчики могут использовать AppSync и другие сервисы AWS для создания приложений в реальном времени, пользуясь при этом языковыми SDK, API и соответствиями безопасности.

Заключение

Создание масштабируемых приложений реального времени - непростая задача, даже несмотря на то, что мы живем в мире облачных вычислений. Как разработчик или архитектор, вы должны найти способ сделать этот процесс безболезненным в долгосрочной перспективе.

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