Policy-квоты
Для чего это
Policy-квоты предназначены для ограничений, которые ваш продукт проверяет локально без runtime-запросов в BillBill:
- срок хранения документов;
- максимальное число guest-пользователей;
- включение/отключение feature-флагов.
Чем отличаются от metered-метрик
- Metered metrics: usage отправляется в BillBill, участвует в биллинге и может отклоняться по лимиту.
- Policy quotas: BillBill хранит конфигурацию, а проверка выполняется у вас (в потребителе), без записи metric events.
Иерархия
product defaults -> plan overrides
- На продукте задается базовый набор квот.
- На плане задаются переопределения конкретных кодов.
- Потребитель получает
quota/resolvesnapshot и кэширует его локально.
Рекомендованный формат значения
Чтобы избежать magic numbers, используйте связку:
valueType:count | bytes | duration | bool | string | jsonvalue: строковое сериализованное значениеpolicyState:active | unlimited | disabled
Пример:
- хранить 30 дней:
valueType=duration,value=2592000,policyState=active - хранить вечно:
policyState=unlimited - запретить хранение:
valueType=duration,value=0,policyState=active
Кэширование snapshot у потребителя
- Используйте pull-модель обновления (например, раз в 5 минут).
- Обновляйте snapshot вне расписания при смене плана/подписки.
- Используйте
etag/versionиз ответа, чтобы дешево определять изменения.