Thanks for getting back with the helpful commentary, Pierre!
On 11.06.2018 21:01, Pierre-Alexandre Meyer wrote:
> On Fri, Jun 8, 2018 at 1:37 AM, Bill Killer <
billk...@timedrops.us>
> wrote:
>
>> 1) Is there a good way to address the scenario where the
>> subscription includes a product with a multiplier? Say
>> N=1000 (like 1000 products, identical) in a subscription.
>
> Could you simply create N subscriptions (each one having its own usage
> records)? If N ~1000, you might want to load test your deployment
> (especially the invoice generation part).
As the invoice generation time grows linearly with the number of
subscriptions, I am wary about trying with /N/ subscriptions, the
N=1000 is a sample which can go considerably higher (N ~= 50000
has been mentioned).
> We introduced STANDALONE subscriptions to allow for multiple
> subscriptions of the same kind in the same bundle (as opposed to one
> BASE with multiple ADD_ON). This feature is quite advanced though:
> unless you have a specific scenario in mind, better to stay away.
For now, I am indeed going to stay away from STANDALONE, as I do not
see how it would fit well with per-(item|subscription) metering. Which
is of course something I will need to solve if I somehow go for the
'multiplier' for products inside the subscription.
>> 3) Is it possible for "usage" value reporting to add something
>> else than number of "units" consumed -- e.g. the time period of
>> actual consumption -- so that KB would register the consumption
>> to the billing period by actual consumption time (if that
>> billing period is still not closed) or to the ongoing billing
>> period (if billing period for consumption time is already
>> closed),
>> by the "usage" reception time.
>
> This should be done in a metering system instead, outside of Kill Bill
> (see
>
http://docs.killbill.io/latest/consumable_in_arrear.html#_usage_and_metering).
Thanks for that link,
https://github.com/killbill/killbill-meter-plugin
reference there is of interest to me. However, I did not express myself
clearly, so illustrating with a sample:
* Let BCD be on 10th of each month.
* Metering system sends records in to billing system
* in form (consumption_time, acknowledgement_time,
consumption_unit, consumption_quantity).
* BCD passes and billing system has generated and sent out invoices.
* Records keep coming in which /consumption/ belongs to previous
billing
period. In such case the billing system (which has the
responsibility
to know when the bills are sent out) acknowledges these delayed
records
and adds them to new bill, /but/ with prices that were in effect
during
actual consumption, not at acknowledgment time.
So metering is in place but can receive information with considerable
delay
which billing system should take into account. Does Kill Bill maybe
already
have support for such case?
>> b) The dependencies of many Kill Bill components tend to be
>> very outdated.
>
> Kill Bill powers *very* large deployments (i.e. processing billions of
> $ yearly). As such, we need to be very careful about the stability of
> the system. It is often quite difficult to audit third-party libraries
> changes, to make sure upgrades don't impact our system. For this
> reason alone, we don't upgrade for the sake of upgrading.
Yep, certainly relate to this. However upgrading components with CVEs
on serialization & other issues I would not consider to be just "for
the sake of it", no matter how well isolated the deployment is assumed
to be. But that is certainly something that can be hard sell to end
customers. OTOH these days cybersecurity issues get considerable
attention, so achieving the the hard sell might be worth it both in the
short and long run.
Best regards & thanks again!
Bill Killer