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

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

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

Если разобрать платформу на составляющие, внутри есть четыре главных блока.
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-платформ, баз данных как сервисов и любого софта с оплатой за ресурсы.
Если вы прямо сейчас продумываете схему списания денег за токены или вызовы методов, загляните в репозиторий проекта — это сэкономит пару месяцев упорной разработки.
