Ably — облачная платформа real-time messaging, предоставляющая инфраструктуру для pub/sub коммуникации, присутствия и синхронизации состояния. Она ориентирована на enterprise-проекты с высокими требованиями к надёжности и глобальной доступности. По данным официальной документации Ably (2025), платформа гарантирует 99.999% uptime и задержку доставки менее 65 мс в 95-м перцентиле.
Главное
Ably — облачная real-time платформа, основанная в 2014 году, которая предоставляет инфраструктуру для обмена сообщениями в реальном времени. В отличие от простых pub-сервисов, Ably предлагает корпоративные гарантии доставки, глобальную сеть точек присутствия (POP) и встроенную синхронизацию состояния для миллионов одновременных клиентов.
Платформа используется в проектах, где критична надёжность доставки: финансовые тикеры, логистические трекеры, медицинские мониторинговые системы и многопользовательские игры. Ably базируется на собственной технологии распределённого брокера сообщений, который реплицирует данные через глобальную сеть из 15+ дата-центров.
По данным официального сайта Ably (2025), платформа обрабатывает более 200 миллиардов сообщений в месяц для 50 000+ активных приложений. Среди клиентов — компании из списка Fortune 500: Toyota (телематика автомобилей), HubSpot (синхронизация CRM), Designity (совместное редактирование).
Архитектура Ably построена на распределённой сети брокеров сообщений (routers), которые соединены через высокоскоростные каналы. Каждый брокер обслуживает подмножество каналов и реплицирует состояние через протокол Ably Protocol — бинарный протокол поверх WebSocket, оптимизированный для минимального overhead. Клиенты подключаются к ближайшему брокеру через DNS-балансировку.
Ключевое отличие Ably от конкурентов — встроенный global log (глобальный журнал), который хранит историю сообщений для каждого канала. Это позволяет новым подписчикам получать не только новые, но и предыдущие сообщения (replay), что критично для аудита и восстановления состояния после переподключения.
Модель взаимодействия Ably следует паттерну Publisher-Subscriber с дополнительными возможностями. Издатель отправляет сообщение в канал через Ably REST API или SDK. Сообщение попадает в глобальный распределённый лог канала и рассылается всем подписчикам через их активные соединения.
Транспортный уровень Ably поддерживает несколько протоколов: WebSocket (основной, с бинарным Ably Protocol), Server-Sent Events (для одностороннего получения), HTTP streaming (для сред с ограничениями) и MQTT (для IoT-устройств). Клиент автоматически выбирает доступный транспорт с наименьшей задержкой.
Каждое сообщение проходит через валидацию на стороне Ably — проверка подписи API-ключа, квоты канала, права доступа. Валидация происходит за 1–5 мс на граничном роутере, после чего сообщение реплицируется в глобальный лог. По данным технического блога Ably (2024), сквозная задержка (end-to-end) составляет менее 65 мс для 95% сообщений при межконтинентальной передаче.
Каналы Ably — именованные топики для обмена сообщениями. Каждый канал может иметь неограниченное количество подписчиков, но для стабильной производительности рекомендуется не более 10 000 на один канал в рамках одной зоны. Каналы могут быть однонаправленными (публикация только с сервера) или полноценными (клиенты публикуют сообщения).
Модель Pub/Sub в Ably расширяет классический паттерн дополнительными возможностями: присутствие подписчиков (presence), история сообщений (history), состояние канала (channel state) и пространства имён (namespaces). Каждый канал принадлежит пространству имён, которое определяет квоты и права доступа.
Присутствие (Presence) — автоматическое отслеживание участников канала. Каждый клиент, подписавшийся на канал, регистрируется в presence map с указанием clientId, статуса (online, away, offline) и произвольными данными. При отключении клиента (по таймауту или явно) presence автоматически обновляется.
История сообщений — каждый канал хранит историю сообщений по умолчанию (до 2 минут или 100 сообщений на бесплатном плане). В платных планах история может быть увеличена до 72 часов с возможностью произвольного ретроспективного доступа. История сохраняется в распределённом логе с гарантией неизменности (append-only).
| Функция | Бесплатный план | Enterprise план |
|---|---|---|
| Одновременные соединения | 100 | 10 000+ |
| Хранение истории | 2 минуты / 100 сообщений | 72 часа |
| Гарантия доставки | At-least-once | Exactly-once |
| Регионы | 1 регион | Все 15+ регионов |
| SLA | 99.9% | 99.999% |
Гарантии доставки — ключевое отличие Ably от большинства real-time сервисов. Платформа поддерживает несколько режимов доставки, выбираемых при публикации сообщения. Режим определяет, сколько раз сообщение будет доставлено и как обрабатываются сбои соединения.
At-least-once — сообщение доставляется минимум один раз, возможны дубликаты. Режим используется для уведомлений и некритичных данных, где дубликаты не наносят вреда. Exactly-once — сообщение доставляется строго один раз за счёт дедупликации на стороне клиента и сервера. Режим обязателен для финансовых транзакций и управления устройствами.
Last-value cache — специальный режим, при котором канал хранит последнее значение каждого именованного сообщения. Новый подписчик мгновенно получает актуальное состояние, не дожидаясь следующего события. Это реализовано через глобальный key-value store на каждом роутере. По данным документации Ably (2025), last-value cache снижает время восстановления состояния после переподключения с 2–5 секунд до 50–100 мс.
Начало работы с Ably требует регистрации, создания приложения и получения API-ключа. Библиотеки доступны для всех основных платформ. Рассмотрим пример публикации и подписки с использованием JavaScript SDK. Клиент подключается с API-ключом, подписывается на канал и привязывает обработчик события.
По данным документации Ably (2025), рекомендуется использовать разные API-ключи для серверной и клиентской части с минимальными правами (принцип least privilege). Серверный ключ может публиковать в любые каналы, клиентский — только подписываться на определённые пространства имён.
import * as Ably from 'ably';
const client = new Ably.Realtime({
key: 'YOUR_API_KEY',
clientId: 'user-123'
});
const channel = client.channels.get('test-channel');
channel.subscribe('update', (message) => {
console.log('Received:', message.data);
});
channel.publish('update', {
text: 'Hello from Ably',
priority: 1
});
const Ably = require('ably');
const rest = new Ably.Rest({ key: 'SERVER_API_KEY' });
const channel = rest.channels.get('test-channel');
channel.publish('server-event', {
type: 'notification',
payload: { userId: 100, text: 'Server message' }
}).then(() => {
console.log('Message published via REST');
});
Выбор между Ably и Pusher зависит от требований проекта. Обе платформы предоставляют hosted real-time инфраструктуру, но отличаются по архитектуре, гарантиям и ценообразованию. Ably ориентирована на enterprise с высокими требованиями к надёжности, Pusher — на быстрый старт и простоту.
Ably использует глобальный распределённый лог для каждого канала, что обеспечивает exactly-once доставку и ретроспективный доступ к истории. Pusher использует брокерскую архитектуру с at-least-once гарантией. Для большинства приложений разница незаметна, но для финансовых и медицинских систем exactly-once критична.
По данным сравнительного теста Ably vs Pusher (2024), Ably демонстрирует на 20–30% меньшую задержку при межконтинентальной передаче благодаря большему числу дата-центров. Pusher выигрывает по скорости интеграции — базовая настройка занимает 10–15 минут против 20–30 минут для Ably из-за большего количества опций конфигурации.
Ably SDK для мобильных платформ поддерживает iOS (Swift), Android (Kotlin/Java), Flutter и React Native. Мобильные клиенты полностью совместимы с серверной частью Ably и поддерживают все функции: pub/sub, presence, history, push-уведомления. Для Android доступна интеграция с Firebase Cloud Messaging для офлайн-доставки push-уведомлений.
Оптимизация для мобильных сетей — Ably SDK использует адаптивный heartbeat: на Wi-Fi интервал 15 секунд, на мобильной сети — до 60 секунд для экономии трафика. При потере соединения SDK переключается на резервный транспорт (HTTP streaming) без видимой задержки для пользователя. Среднее потребление трафика — 0.5–1 KB в минуту в режиме ожидания.
Push-уведомления — Ably поддерживает отправку push-через APNs (Apple) и FCM (Firebase). Push можно направить на конкретный канал или clientId. Если клиент активен (WebSocket подключён), сообщение доставляется через канал. Если клиент отключён, сообщение доставляется как push-уведомление. Это гарантирует, что пользователь никогда не пропустит важное сообщение.
Часто задаваемые вопросы
Ably предлагает exactly-once доставку, глобальный распределённый лог и 99.999% SLA. Pusher проще в настройке, но предоставляет только at-least-once гарантии. Ably часто выбирают enterprise-проекты с высокими требованиями к надёжности.
Бесплатный план включает 100 одновременных соединений и 500 000 сообщений в месяц. Платные планы стартуют от $19/мес (1000 соединений). Enterprise тариф с кастомными гарантиями обсуждается индивидуально.
Да, exactly-once — одна из ключевых функций Ably. Дедупликация выполняется на стороне платформы с использованием уникальных идентификаторов сообщений (message ID + connection ID).
На текущий момент Ably располагает 15+ точками присутствия по всему миру, включая США, Европу, Азию, Австралию и Южную Америку. Enterprise-клиенты могут выбрать конкретные регионы для хранения данных.
Да, Ably поддерживает MQTT-протокол для IoT-устройств с низким энергопотреблением. Для устройств на ESP32, Arduino и Raspberry Pi доступны легковесные SDK с минимальным потреблением памяти.
Итоги
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также