Назад к блогу

Cloudflare расширяет платформу: Basin вышел из беты, K2 и KV Instant в бетах, в Workers добавили пост-квантовые алгоритмы

Cloudflare расширяет платформу: Basin вышел из беты, K2 и KV Instant в бетах, в Workers добавили пост-квантовые алгоритмы

Cloudflare перевела свою платформу данных из беты в общий доступ под новым именем Basin и одновременно представила несколько новых примитивов — от потокового движка K2 до пост-квантовой криптографии в Workers. Разбираем, как устроены обновлённые продукты, зачем нужен режим Instant в Workers KV и какие задачи решают новые алгоритмы шифрования.

Cloudflare перевёл свою платформу данных в статус generally available и дал ей новое имя — Cloudflare Basin. Одновременно анонсированы два новых примитива: durable event streaming K2 в публичной бете и новый режим Workers KV под названием Instant в приватной бете. В Workers добавлена поддержка пост-квантовых алгоритмов через Web Crypto за флагом совместимости.

Что именно изменилось

Cloudflare Basin — открытая serverless-платформа данных, ранее называвшаяся Cloudflare Data Platform. В неё входят три продукта, каждый из которых тоже переименован:

  • Basin Pipelines (ранее Cloudflare Pipelines) принимает события из Workers, HTTP или Cloudflare Logpush, преобразует их с помощью SQL и записывает как таблицы Apache Iceberg или файлы в R2.
  • Basin Catalog (ранее R2 Data Catalog) управляет метаданными Iceberg и автоматически поддерживает таблицы.
  • Basin SQL (ранее R2 SQL) — serverless распределённый SQL-движок для запросов к таблицам Apache Iceberg напрямую на Cloudflare.

Cloudflare K2 запущен в публичной бете как durable event streaming primitive: события пишутся в поток, который хранит их как упорядоченный лог, а потребители читают их разными способами. Workers KV Instant запущен в приватной бете. AI Search стал общедоступным, тарификация начнётся 1 ноября 2026 года. Artifacts находится в открытой бете.

В Workers начальная реализация поддерживает ML-KEM-768 как KEM и ML-DSA-44 как алгоритм подписи. Для включения требуется флаг webcrypto_modern_algorithms.

Как работает Basin

События сначала принимаются, приводятся к схеме и записываются в объектное хранилище. Этим занимаются Basin Pipelines: они принимают события через HTTP-эндпоинты или привязки Workers, обрабатывают их согласно SQL-запросу и доставляют в Basin Catalog как таблицы Apache Iceberg либо в R2 как JSON- или Parquet-файлы.

Запись через INSERT INTO выполняется как часть SQL-обработки в Pipeline. Запрос вставляет результат выборки из потока в приёмник, выбирая нужные поля, преобразуя временные метки и хешируя IP-адреса:

INSERT INTO http_logs_sink
SELECT EdgeResponseStatus,
       to_timestamp_micros(EdgeStartTimestamp) AS event_time,
       upper(ClientRequestMethod) AS method,
       sha256(ClientIP) AS hashed_ip
FROM http_logs_stream
WHERE EdgeResponseStatus >= 400;

Обработка во время приёма уменьшает объём хранения, снижает шум от динамических источников и помогает не записывать чувствительные или ненужные значения.

Basin Catalog — полностью управляемый REST-каталог Apache Iceberg, который автоматически выполняет рутинное обслуживание таблиц. Создаётся командой npx wrangler basin catalog create CATALOG_NAME. Basin SQL — бессерверный распределённый движок запросов для таблиц Apache Iceberg, хранящихся в Basin Catalog; он автоматически масштабируется в глобальной сети Cloudflare без выделения кластеров или ресурсов.

Как работает K2

Стрим создаётся командой cf k2 streams create --name app_events --http-enabled. Продюсеры отправляют данные через HTTP API или Worker binding: например, привязка Workers принимает массив записей с content и headers, а результат сообщает, удалась ли отправка и можно ли повторить попытку при ошибке.

Потребитель запрашивает у потока следующую порцию событий и получает батч записей. На этот батч выдаётся lease на 5 минут. В течение этого времени клиент может сделать одно из трёх:

  • ack — пометить батч обработанным и не доставлять повторно;
  • nack — сообщить, что обработка не удалась, и запросить повторную доставку;
  • extend — продлить lease, если нужно больше времени на обработку.

Как работает Workers KV Instant

KV Instant — это новый режим Workers KV, использующий тот же API, что и классический режим Workers KV. При создании namespace нужно указать режим, передав атрибут "mode": "instant".

Три ключевых отличия от классического режима:

  • metadata не поддерживается: при чтении вместе со значением сопутствующие ему метаданные не возвращаются, и при записи их передать нельзя;
  • перечисление ключей возвращает все подходящие ключи в namespace без пагинации;
  • запись ограничена одной операцией в секунду на namespace, тогда как классический Workers KV ограничивает одну запись в секунду на ключ.

По поведению KV Instant обеспечивает чтение p99 за 1.62 мс и репликацию записи p99 около 256 мс, тогда как классический режим — 287 мс и 4.38 с соответственно. Чтение стоит $0.20 за миллион, что на 60% дешевле, но хранение и Class A операции значительно дороже.

Как использовать пост-квантовые алгоритмы

Для ML-KEM ключи генерируются с именем алгоритма "ML-KEM-768", флагом извлекаемости true и списком использований ["encapsulateBits", "decapsulateBits"]. Флаг извлекаемости true разрешает экспортировать ключевой материал, а список использований ограничивает операции, которые допускаются с ключом. Затем инкапсуляция с публичным ключом даёт общий секрет и шифртекст, а декапсуляция с приватным ключом восстанавливает тот же общий ключ.

Для ML-DSA ключи генерируются с именем "ML-DSA-44", флагом извлекаемости false и списком использований ["sign", "verify"]; подпись создаётся приватным ключом, а проверяется публичным.

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

if (SubtleCrypto.supports("sign", "ML-DSA-44")) {
  const keys = await crypto.subtle.generateKey("ML-DSA-44", false, ["sign", "verify"]);
}

Чтобы включить современные криптоалгоритмы, в wrangler.jsonc нужно добавить compatibility_flags с флагом "webcrypto_modern_algorithms".

Предыстория

До анонса Basin работал в открытой бете, и его сразу начали внедрять разработчики, включая биллинговую и инфраструктурную команды Cloudflare. Они использовали сервисы для разных задач: оптимизации сайтов электронной коммерции с помощью данных в реальном времени, долговременного хранения и отчётности по метрикам биллинга, а также приёма и запросов телеметрии от инфраструктуры Cloudflare. Ранние пользователи также включали Anomaly, чей соучредитель Дакс Раад сообщил о переносе всего конвейера данных компании на Basin Pipelines, Catalog и SQL, заменив сложную конфигурацию AWS S3 и Athena. За год были улучшены три области: скорость, открытость и экономическая эффективность.

У Cloudflare уже были асинхронные примитивы доставки — Queues и Basin Pipelines. Queues предназначены для отслеживания отдельных элементов дорогой или длительной работы и поддерживают сложную логику на уровне отдельного рабочего элемента: повторные попытки, задержки и очереди недоставленных сообщений. K2, напротив, рассчитан на крупномасштабное перемещение данных, долговременное хранение и разветвлённое потребление; сообщения производятся и потребляются пакетами, что даёт эффективную обработку ценой повторных попыток на уровне сообщения и более высокой задержки производителя. Basin Pipelines рекомендуют, когда конечный результат — запись событий в объектное хранилище или таблицы Iceberg, а K2 — когда нужна собственная обработка или запись в другие места назначения.

Большинство компаний разворачивают Apache Kafka, но Pipelines работает на периферии Cloudflare, охватывающей множество серверов в более чем 335 городах. Из-за уникальной архитектуры Cloudflare часто не может запускать традиционное распределённое программное обеспечение вроде Kafka, поэтому приходится переосмысливать построение и эксплуатацию таких систем.

Почему это сделали

Basin решает проблему дорогого и сложного построения аналитических данных: он объединяет Pipelines, Catalog и SQL для приёма, хранения и запросов, а также даёт бесплатный egress и оплату только за фактическое использование.

K2 решает проблему durable buffering на глобальной edge-инфраструктуре Cloudflare, где нельзя запускать традиционные распределённые системы вроде Kafka, и строит лог поверх объектного хранилища R2. Объектное хранилище не поддерживает обычные append-операции, поэтому приходится записывать полные файлы или сегменты, достаточно крупные, чтобы окупить стоимость записи и чтения каждого.

Workers KV Instant решает проблему медленного глобального распространения изменений и холодных чтений: он использует Quicksilver, чтобы обеспечить мгновенную доступность без ожидания истечения TTL.

Пост-квантовая криптография в Workers решает проблему отсутствия нужных примитивов в Web Crypto: разработчикам приходилось либо не строить протокол поверх Web Crypto, либо приносить собственную реализацию, что увеличивало приложения и требовало повторной работы для downstream-библиотек.

Что это меняет на практике

При переходе на KV Instant большинство операций с биндингами совместимы с классическими аналогами Workers KV, но нужно указать режим при создании namespace, учесть отсутствие metadata и отсутствие пагинации в list. Частота записи ограничена одним записью на namespace в секунду, потому что записи должны проходить через единую систему записи. Чтение (Class B, get) стоит $0.20 за миллион запрошенных ключей, что на 60% дешевле классического Workers KV, при этом каждый запрошенный ключ в одном get тарифицируется отдельно. Запись, удаление и list (Class A) стоят $0.10 за операцию, а хранение — $100 за MB в месяц.

KV Instant обеспечивает чтение более чем в 100 раз быстрее классического режима: p99 менее двух миллисекунд, а p95 измеряется в микросекундах. Запись распространяется более чем в 20 раз быстрее, при этом 99% записей реплицируются примерно за 250 мс.

AI Search принимает текстовые файлы и PDF размером до 10 MiB (ранее 4 MiB).

K2 доступен в публичной бете для аккаунтов с подпиской Workers Paid, с лимитами: максимум 10 ГБ хранилища и 30 МБ/с записи на поток. Во время беты использование K2 не тарифицируется, а после начала биллинга ожидается цена: $0.04/ГБ за произведённые данные, $0.04/ГБ за потреблённые данные и $0.02/ГБ/месяц за хранимые данные.

KV Instant запускается в приватной бете. Каждый ключ может быть до 300 байт, значения любого размера, если namespace не превышает один мегабайт, и namespace может содержать до 10 000 пар ключ-значение.

Ограничения и открытые вопросы

ML-KEM-512 не поддерживается, потому что используемая в Workers версия BoringSSL его не предоставляет. Вместо отдельной реализации для этого варианта авторы начинают с алгоритмов, доступных через нативную криптобиблиотеку. Также поддерживаются ML-KEM-1024, ML-DSA-65 и ML-DSA-87.

Из более крупного предложения WICG не вошли SHA-3, cSHAKE, TurboSHAKE, ChaCha20-Poly1305 и HPKE. Все добавленные алгоритмы пока являются опциональными и находятся за флагом совместимости, поскольку API основан на черновике.

Фраза «This change does not make every protocol post-quantum by itself» означает, что изменение само по себе не делает каждый протокол постквантовым, а лишь даёт разработчикам и авторам библиотек недостающие примитивы: ML-KEM для инкапсуляции ключа, ML-DSA для подписей и вспомогательные API, делающие эти примитивы доступными через Web Crypto.

Источники

Похожее