Как перестать писать биллинг с нуля для AI и SaaS проектов

14 авг 2026
4,340
501
9
3 недели

Логотип Flexprice

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

В этот момент бизнес просит ввести оплату за фактическое использование (usage-based), кредитные пакеты или предоплаченные балансы. Разработчики садятся писать собственный велосипед. Появляются самописные счетчики в Redis, ночные кроны для подсчета копеек, таблицы транзакций в базе данных и тонны костылей. Вместо работы над продуктом команда на несколько месяцев застревает в тонкостях биллинга.

Проблема биллинга

Проект Flexprice пытается забрать эту рутину на себя. Это open-source движок тарификации и учета потребления, который можно развернуть на собственных серверах и встроить в существующий стек.

Реклама

Что умеет система

Flexprice не пытается заменить ваш платежный шлюз. Сервис садится между вашим бэкендом и платежками вроде Stripe, забирая на себя учет событий, математику тарифов, кредиты и расчет инвойсов.

Возможности Flexprice

Если разобрать платформу на составляющие, внутри есть четыре главных блока.

1. Потоковый учет событий (Usage Metering)

Система принимает сырые события о потреблении ресурсов через API или SDK (есть клиенты под Go, Python и JavaScript). Это могут быть токены LLM, секунды работы GPU, количество вызовов API или гигабайты переданного трафика. Движок агрегирует эти миллионы событий в реальном времени, избавляя вас от необходимости писать кастомные агрегаторы на стороне приложения.

2. Кошельки и система кредитов

Для многих AI-сервисов стандартная модель — это покупка кредитов с их постепенным списанием. Во Flexprice встроена логика работы с балансами. Можно выдавать промо-кредиты со сроком сгорания, настраивать автопополнение баланса при падении ниже порога и списывать баллы по сложным правилам.

3. Гибкие тарифные сетки

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

4. Управление доступом к функциям (Feature Gating)

Сервер умеет отдавать информацию о лимитах и доступности фичей для конкретного пользователя. Бэкенд запрашивает у Flexprice статус: может ли клиент сделать еще один запрос или лимит исчерпан. Это убирает проверку прав и тарифов из бизнес-логики приложения.

Что под капотом

Архитектура проекта выглядит солидно и сразу рассчитана на высокие нагрузки. Здесь нет попыток сложить аналитику в обычный Postgres.

Стек технологий:

  • Go — на нем написан весь бэкенд и воркеры. Работает быстро, потребляет предсказуемое количество памяти.
  • ClickHouse — хранит и агрегирует сырые события потребления. Отличное решение для аналитических выборок по миллиардам строк.
  • Apache Kafka — принимает входящий поток событий и гарантирует, что ни один вызов API не потеряется при пиковых нагрузках.
  • Temporal — отвечает за оркестрацию долгих процессов: биллинговых циклов, формирования инвойсов, повторных попыток списания и периодических задач.
  • PostgreSQL — хранит метаданные клиентов, тарифные планы, настройки кошельков и финансовую отчетность.

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

Как запустить проект локально

Для быстрого старта у авторов подготовлен docker-compose файл, который поднимает всю необходимую инфраструктуру одной командой.

Вам понадобятся установленные Docker и Golang (если захотите собирать сервис локально).

# Клонируем репозиторий
git clone https://github.com/flexprice/flexprice
cd flexprice

# Поднимаем всю инфраструктуру
make dev-setup

Команда запустит базы данных, Kafka, Temporal и сервисы Flexprice. После старта станут доступны веб-интерфейсы:

  • API сервиса: http://localhost:8080
  • Temporal UI: http://localhost:8088
  • Kafka UI: http://localhost:8084
  • ClickHouse UI: http://localhost:8123

Если хочется запускать бинарник напрямую на хосте, можно поднять только окружение через docker compose up -d postgres kafka clickhouse redis temporal temporal-ui и выполнить go run cmd/server/main.go.

С какими нюансами придется столкнуться

Перед тем как внедрять Flexprice в прод, нужно учесть пару моментов.

Первый момент касается лицензии. Проект позиционирует себя как Open Core. Основная часть (около 99% кода) распространяется под лицензией AGPLv3, но часть enterprise-функционала в папках ee и internal/ee закрыта коммерческой лицензией. Для большинства внутренних задач открытого ядра хватит, но юристам вашей компании стоит взглянуть на AGPLv3 заранее.

Второй нюанс — сложность эксплуатации. Наличие Kafka, ClickHouse и Temporal в одном сетапе требует времени на поддержку, настройку бэкапов и мониторинг. Для маленького пет-проекта с сотней пользователей это может быть оверхедом. Если же вы строите продукт с прицелом на терабайты логов и миллионы транзакций, такой стек полностью оправдан.

Стоит ли пробовать

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

Если вы прямо сейчас продумываете схему списания денег за токены или вызовы методов, загляните в репозиторий проекта — это сэкономит пару месяцев упорной разработки.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.