В современном цифровом мире пользователи социальных сетей всё чаще сталкиваются с проблемой потери контроля над своими данными и идентичностью. Множество платформ подвержено неожиданным изменениям, закрытиям или смене приоритетов, из-за чего информация пользователей оказывается затерянной или подверженной нежелательному использованию. Именно для решения этой проблемы возникла экосистема ATProto — Authenticated Transfer Protocol, которая предлагает инновационный подход к управлению идентичностью и публикациями в децентрализованных социальных сетях. Сегодня мы подробно познакомимся с тем, как можно создавать бессерверные приложения на основе ATProto, используя платформу Cloudflare, которая предоставляет обширный набор инструментов для разработки, развертывания и масштабирования приложений без необходимости управлять традиционными серверами и инфраструктурой. ATProto — это протокол, который ставит пользователя в центр управления своими данными и идентичностью.
Вместо хранения и управления личными данными на стороне одной централизованной службы, все публикации и обновления пользователя хранятся в его личных репозиториях (repos), которые связаны с децентрализованными идентификаторами (DID). Данные подписываются криптографически, что обеспечивает проверяемость и непреложность их источника без необходимости доверять одному конкретному сервису. Это принципиально меняет подход к созданию социальных платформ и одновременно даёт отличный потенциал для разработчиков — создавать приложения, которые интегрируются в глобальный криптографически подтверждённый социальный веб. Cloudflare предлагает идеальную среду для разработки таких приложений благодаря своим серверлесс технологиям. Платформа Cloudflare Workers позволяет запускать код максимально близко к пользователю, снижая задержки и повышая производительность.
KV, глобальное кеширование данных на основе ключ-значение, обеспечивает быстрый доступ к информации с минимальной задержкой по всему миру. D1 предоставляет возможности распределённой реляционной базы данных, что идеально подходит для долговременного хранения структурированных данных. Durable Objects обеспечивают управление живыми соединениями WebSocket и синхронизацию в режиме реального времени — критически важные компоненты для современных интерактивных приложений. Начнем с простого примера — Statusphere, минималистичного демо-приложения, которое позволяет пользователям публиковать статус в виде одного эмодзи. Несмотря на кажущуюся простоту, Statusphere воплощает все ключевые концепции экосистемы ATProto, позволяя понять, как работает обмен данными, авторизация и публикация в децентрализованном социальном пространстве.
Каждая запись в ATProto строго типизирована с помощью концепции Lexicons — общего языка описания схем данных, который похож на JSON-Schema, но поддерживает дополнительные возможности типизации и согласованности. Для Statusphere используется схема xyz.statusphere.status, где каждая запись представляет собой объект с полями «status» и «createdAt». Такое строгое определение позволяет приложениям взаимодействовать друг с другом без несовместимостей и ошибок.
При разработке на Cloudflare Workers основным языком становится TypeScript. Библиотеки ATProto написаны именно на нем, что облегчает интеграцию и создание новых сервисов. Тем не менее, в некоторых случаях стандартные библиотеки предполагают наличие полноценного бэкенда или браузерного окружения, что приводит к необходимостям адаптации и доработки для работы в безсерверной среде Workers. Альтернативой выступает использование Rust с WASM-компиляцией — данный подход уже продемонстрировал успешные прототипы и позволяет использовать сильную типизацию Rust для более надежной разработки. Для взаимодействия с пользователями важным этапом является разрешение их идентификаторов.
В ATProto каждому пользователю присваивается уникальный DID, а для удобства использования применяется понятный хэндл — человекочитаемое имя, например alice.example.com. Через DNS-записи, зарегистрированные на поддоменах _atproto, происходит поиск соответствующего DID. Далее по этому DID загружается так называемый DID Document — документ, содержащий метаданные, включая адрес Personal Data Server (PDS), где хранятся ключи пользователя и его репозитории данных.
Для повышения быстродействия и снижения нагрузки разрешённые DID и PDS кэшируются с помощью Cloudflare KV, что обеспечивает быстрый доступ из любой точки мира с минимальными временными затратами. Аутентификация выполняется через OAuth, где пользователь входит через свой PDS и предоставляет приложению разрешения действовать от его имени. Сеансы пользователей сохраняются в защищённых куки — в частности, с помощью tower-sessions, а все данные сеансов надёжно хранятся в KV, что оптимально подходит для серверлесс среды. После авторизации приложение может обращаться к пользовательским данным через специального агента, который управляет сеансом и подписывает запросы. С его помощью Statusphere получает текущий статус пользователя, а также профиль из Bluesky — одной из первых больших реализаций ATProto.
Эти данные служат основой для формирования пользовательского интерфейса, который отображает актуальную информацию и позволяет отправлять новые статусы. Создание записи осуществляется через метод create_record, который добавляет новый элемент в персональный репозиторий пользователя. Каждая запись получает уникальный URI — канонический идентификатор, по которому её можно однозначно найти и проверить. Помимо этого, обновление синхронизируется с D1 базой данных, чтобы остальные компоненты приложения могли оперативно отразить изменения без необходимости постоянного запроса к PDS. Для обеспечения интерактивности и обмена событиями между браузерами и вкладками используются Durable Objects, выступающие в роли посредника в режиме реального времени.
При подключении пользователь сохраняет WebSocket-соединение с объектом, который получает сообщения об обновлениях и мгновенно рассылает их всем подписчикам. Такой подход позволяет поддерживать связь без необходимости постоянной работы полноценного сервера, экономя ресурсы и повышая отказоустойчивость. Особенностью бессерверной архитектуры является отсутствие возможности держать постоянные WebSocket-клиенты для подписки на внешние события ATProto Jetstream — глобального потока обновлений в экосистеме. Для решения этого ограничения в Cloudflare применяется система Cron Triggers. Это расписание, при котором работник периодически запускается по расписанию, поднимает WebSocket-подключение, получает обновления за последний интервал, закрывает соединение и возвращается в спящий режим.
Такой подход снижает задержки и одновременно соблюдает ограничения платформы по времени исполнения. Для пользователей, стремящихся к более быстрой и непрерывной интеграции событий, может быть развернут легковесный внешний слушатель, который напрямую подключается к Jetstream, принимает события и перенаправляет их команде в Cloudflare. Несмотря на кажущуюся сложность, это устройство остаётся простым, не имеет открытых портов и не требует постоянной базы данных — то есть сохраняет заданные serverless-принципы и предлагает масштабируемость на начальном этапе. Весь набор инструментов Cloudflare — от Workers до Durable Objects, KV и D1 — позволяет создавать полноценные, мощные и при этом лёгкие приложения, которые масштабируются глобально и обеспечивают безопасность данных. Это уникальное предложение для разработчиков, желающих быстро создавать децентрализованные социальные платформы на базе ATProto без необходимости управлять сложной традиционной инфраструктурой.
Используя уже готовые репозитории и шаблоны, каждый может развернуть у себя примитивное приложение Statusphere, получить опыт работы с новым протоколом и понять, как строятся современные децентрализованные приложения. Это отличный старт для создания более сложных сервисов, которые могут стать частью будущего социального интернета, где пользователи действительно владеют своей цифровой сущностью. В будущем можно ожидать улучшения платформы Durable Objects, которые позволят поддерживать долгоживущие WebSocket-клиенты без потерь производительности и необходимости обходных решений. Это откроет путь к ещё более отзывчивым и интерактивным приложениям, которые полностью реализуют потенциал serverless и децентрализации. Если вы хотите погрузиться в разработку бессерверных ATProto-приложений и освоить все тонкости взаимодействия с этим протоколом, платформа Cloudflare предлагает всё необходимое для быстрого старта и масштабируемости проекта.
Инвестируйте время в изучение, используйте готовые решения и создавайте собственные продукты нового поколения на стыке технологии и философии децентрализованного интернета.