INTEGRITY Документация

Программируемые платформы

Введение

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

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

Workers for Platforms предоставляет идеальную инфраструктуру для создания программируемых платформ благодаря безопасным изолированным средам, в которых клиенты могут безопасно выполнять собственный код в любом масштабе, с автоматическим масштабированием до нуля и глобально распределённой средой выполнения, оптимизирующей производительность и стоимость.

Основные компоненты архитектуры

Архитектура Workers for Platforms состоит из нескольких ключевых компонентов, которые вместе образуют безопасное, масштабируемое и эффективное решение для мультитенантных приложений. Далее рассматриваются основные понятия.

  1. Основной поток запросов: Обзор потока запроса в программируемой платформе.

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

  3. Контроль исходящего трафика: контроль исходящих соединений для обеспечения соответствия требованиям.

  4. Использование ресурсов хранения и данных: использование баз данных и хранилищ для создания ещё более насыщенного пользовательского опыта в масштабе.

  5. Инструменты наблюдаемости: Сервисы сбора логов и метрик для мониторинга производительности платформы и устранения неполадок.

Основной поток запросов

Рисунок 1: Workers for Platforms: основной поток
Рисунок 1: Workers for Platforms: основной поток
  1. Запрос клиента: Отправка запроса от клиентского приложения к Dynamic Dispatch Worker.

  2. Маршрутизация: Определение нужной нагрузки для выполнения и маршрутизация запроса к соответствующему Пользовательский Worker в Dispatch Namespace. Рабочая нагрузка каждого клиента выполняется в изолированном User Worker с собственными ресурсами и границами безопасности.

Поток вызовов и метаданных

Рисунок 2: Workers for Platforms: основной поток
Рисунок 2: Workers for Platforms: основной поток

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

  1. Входящий запрос: Отправка запросов на пользовательские хосты или Worker с помощью wildcard-маршрута Workers.

  2. Поиск метаданных: Получение конфигурационных данных конкретного клиента из KV хранилище. Такие запросы обычно основаны на имени хоста входящего запроса или на пользовательских метаданных в случае пользовательских имён хостов.

  3. Вызов Worker: Маршрутизация запросов к нужному User Worker в Dispatch Namespace на основе метаданных. При необходимости можно передать дополнительный контекст при вызове функции.

Шаблон контроля исходящего трафика

Рисунок 3: Workers for Platforms: Egress Control
Рисунок 3: Workers for Platforms: Egress Control

Наблюдаемость и контроль данных критически важны для безопасности. Outbound Workers позволяют перехватывать все исходящие запросы в скриптах User Worker.

  1. Вызов Worker: Маршрутизация запросов к нужному User Worker в Dispatch Namespace. При необходимости можно передать дополнительные параметры в Outbound Worker при вызове User Worker.

  2. Внешние запросы: Отправка запросов через fetch() вызовы к внешним сервисам через контролируемый Outbound Worker.

  3. Перехват запросов: Оценка исходящих запросов и выполнение ключевых функций, таких как централизованное применение политик и ведение журнала аудита.

Архитектура метрик и логирования

Рисунок 4: Workers for Platforms: Metrics & Logging
Рисунок 4: Workers for Platforms: Metrics & Logging
  1. Логирование: Сбор логов из всех Workers в цепочке обработки запроса через Tail Worker и Workers Trace Events Logpush сервисов.

  2. Метрики: Сбор пользовательских метрик через Workers Analytics Engine и готовых из коробки Аналитика которые можно легко запрашивать через GraphQL API.

  3. Интеграция со сторонними сервисами: Экспорт логов и метрик на различные внешние платформы мониторинга и аналитики, такие как Datadog, Splunk, Grafana и другие, через Интеграции с аналитикой.

Модель изоляции ресурсов

Рисунок 5: Workers for Platforms: Resources
Рисунок 5: Workers for Platforms: Resources
  1. Входящий запрос: Отправка запросов на пользовательские хосты или Worker с помощью wildcard-маршрута Workers.

  2. Вызов Worker: Маршрутизация запросов к нужному User Worker в Dispatch Namespace.

  3. Доступ к ресурсам: Взаимодействие с ресурсами, привязанными к конкретному скрипту:

    • D1 для хранения реляционных баз данных
    • Durable Objects для строго согласованных данных
    • KV для хранилища типа ключ-значение с высокой частотой чтения и итоговой согласованностью
    • R2 для объектного хранения

Процесс развёртывания и управления

Рисунок 6: Workers for Platforms: Deployment & Management Flow
Рисунок 6: Workers for Platforms: Deployment & Management Flow
  1. Интерфейс управления: Взаимодействие с платформой через интерфейсы GUI, API или CLI.

  2. Обработка на платформе: Обработка этих взаимодействий для:

    • Преобразование и сборка кода
    • Выполнение проверок безопасности
    • Применить конфигурацию
  3. Управление изменениями: Развёртывание изменений в Cloudflare через Cloudflare REST API.

Заключение

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