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

Бессерверные глобальные API

Введение

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

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

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

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

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

Рисунок 1: традиционная архитектура в рамках одного региона
Рисунок 1: традиционная архитектура в пределах одного региона

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

Рисунок 2: Region Earth
Рисунок 2: Region Earth

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

Бессерверные глобальные API

Рисунок 3: глобальные бессерверные API
Рисунок 3: глобальные бессерверные API

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

  1. Запрос клиента: Отправка запроса на конечную точку API.
  2. API Shield/Router: Обработка входящего запроса с помощью Workers, проверить его валидность и при необходимости выполнить логику аутентификации. Затем передать (возможно, преобразованный и (или) дополненный) вызов API отдельным Workers с помощью Service Bindings. Это обеспечивает разделение ответственности.
  3. Данные с преимущественным чтением: Чтение из KV для обслуживания преимущественно читаемых, статических данных. Это могут быть конфигурационные данные или сведения о продуктах. Выполняйте запись по мере необходимости, сохраняя ограничения в виду.
  4. Реляционные данные: Запрос к D1 для работы с реляционными данными. Это могут быть данные пользователей, данные о продуктах или другие данные.
  5. Внешние данные: Запрос к внешним базам данных с помощью Hyperdrive. Там, где это применимо, используйте кеширование для повышения производительности. Это особенно полезно, если миграция данных не входит в рамки внедрения.