Serverless для Apache Kafka c Upstash

Автор Категория ,
Serverless для Apache Kafka c Upstash

Сегодня поговорим про администрирование кластера Apache Kafka и разработку потоковых приложений передачи и разберем, как обеспечить их работу в бессерверном режиме с платформой Upstash. Финансовая экономия, простота сопровождения и другие преимущества FaaS-сервисов и serverless-подхода с RESTfull API для обработки событий в реальном времени.

Снова про serverless: что такое Upstash Kafka и зачем это нужно

Платформы потоковой передачи событий, такие как Apache Kafka и AWS Kinesis, позволяют захватывать и хранить события в реальном времени в любом масштабе, позволяя оперативно реагировать на события. Однако, по мере увеличения входящего объема событий необходимо прилагать значительные усилия для поддержки этих архитектур потоковой передачи, увеличивая операционную сложность пропорционально росту бизнеса. Например, для управления производственным кластером Kafka требуется специальный набор навыков, которым должен обладать администратор. Но управляемая платформа компенсирует это за счет эксплуатационных расходов. Тенденция к переходу на бессерверные вычисления сегодня прослеживается очень ярко, поскольку это позволяет создавать и запускать приложения и сервисы, не беспокоясь о серверах. Облачная платформа автоматически и динамически управляет выделением вычислительных ресурсов в зависимости от пользовательской нагрузки.

Такой подход актуален и для потоковой передачи событий. В частности, Upstash Kafka – это бессерверная платформа Apache Kafka, упрощающая создание архитектур потоковой передачи. С помощью Upstash разработчики могут быстро подготовить кластер Kafka и подключиться к нему с помощью собственных клиентов через TCP и REST API через HTTP.

Таким образом, разработчику остается заботиться только о создании и использовании сообщений для Upstash Kafka. За все остальное, включая инициализацию, мониторинг и поддержку Кафка-кластеров, отвечает Upstash.

В отличие от других подобных провайдеров, в Upstash с пользователей взимается плата за каждый запрос, позволяя платить только за реальное использование платформы. Напомним, в Confluent и AWS (Kinesis и MSK) за базовые серверы/сегменты взимается фиксированная почасовая ставка, независимо от того, есть ли к ним обращения. Далее рассмотрим основные шаги по практическому использованию Upstash Kafka.

Бессерверная Кафка

Прежде всего следует зарегистрироваться в Upstash, используя учетные записи Amazon, Github или Google. Upstash предлагает бесплатный и коммерческий варианты с возможностью отправки десяти тысяч команд или запросов в Kafka, сохранением сообщений и поддержкой REST API. Вся работа по настройке и развертыванию потокового serverless-приложения сведется к следующим шагам:

  • Создание Кафка-кластера в визуальной консоли Upstash и добавление топика. При создании кластера можно указать регион, в котором он будет развернут. Для лучшей производительности рекомендуется выбрать ближний к местоположению регион. Далее следует установить тип кластера на или несколько зон. Топик, созданный в кластере с одной зоной, содержит только одну реплику; кластер с несколькими зонами содержит три реплики. После создания кластера можно создавать топики, задавая количество разделов и некоторые дополнительные свойства, такие как период хранения сообщений, размер хранения и максимальный размер сообщения, который раздел должен вместить.
  • создание сообщений для Кафка-кластера, используя любые клиенты для конкретного языка (Java, Python, Go и Node.js) или с помощью upstash-kafka, клиента на основе HTTP/REST, поверх REST API Upstash Kafka. Это библиотека Node.js, которую можно включить в свой проект. Также можно использовать Upstash REST API, который дает возможность использовать продюсера, написанного на любом языке с Upstash. Наконец, доступны инструменты командной строки, такие как kcat и kaf, для быстрого создания сообщения и тестирования функциональности. После создания сообщений можно просмотреть их количество и использование в консоли Upstash.
  • Потребление сообщений можно организовать вышеописанными способами. Upstash REST API, инструменты CLI (kcat и kaf) и upstash-kafka также поддерживают использование сообщений из созданного Кафка-кластера.

Бессерверный характер Upstash Kafka делает его идеальным выбором для создания и использования событий с бессерверных платформ типа «Функция как услуга» (FaaS, Function as a Service), таких как AWS Lambda и Cloudflare Workers. Так можно создавать serverless-архитектуры приложений, управляемых событиями. Недавно мы рассказывали про лямбда-функции в статье про паттерны проектирования распределенных приложений.

Upstash Kafka, Kafka serverless
Upstash Kafka

При этом Upstash обходит ограничение, свойственное большинству бессерверных сред выполнения на основе WebAssembly, таких как Cloudflare Workers, Fastly Compute, Auth0 Actions и пр., которые не допускают TCP-подключения, требуя HTTP-соединения для доступа к кластеру Kafka.

Upstash предлагает RESTful API, что позволяет:

  • создавать сообщения для Upstash из бессерверной функции;
  • запускать бессерверную функцию каждый раз, когда Upstash Kafka получает сообщения.

Узнайте больше про администрированию и использованию Apache Kafka для потоковой аналитики больших данных вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков больших данных в Москве:

Источники

  1. https://medium.com/event-driven-utopia/build-serverless-streaming-architectures-with-upstash-kafka-ee2d55f42a0d
  2. https://upstash.com/