4 ms·
I'm sure the person that invented mantras like "seperation of concerns" and "single responsibility principle" did so based on their trauma of building a billing
by llamaLord 3y ago
I'm sure the person that invented mantras like "seperation of concerns" and "single responsibility principle" did so based on their trauma of building a billing system.
The biggest mistake I see companies making is not properly appreciating the fact that there is in fact 4-5 entirely independent business processes going on inside that monolithic concept they refer to as a "billing system", and they REALLY need to be kept seperate.
IMO the fundamental seperation that is absolutely critical to make is distinguishing between your "entitlements system" that tracks what SKUs you offer and which customers have what SKUs (and in what quantity), the "accounting system" that takes input from the entitlements system and tracks the over-time net balanced owed by the customer, and finally the actual "billing system" which periodically takes the balance from the the Accounting system, zeroes the account back to nil, and generates an actual point in time "bill" for the customer to pay.
So many systems don't properly respect these boundaries and suffer the unbelievably painful consequences.
- llamaLord 3y agoOh, and for the love of all things holy, NEVER do ANYTHING in real-time... Schedules are your friend... Every system driven action in a billing system should be run off a configurable schedule, not done in response to actions (except updating customer entitlements)... You'll thank me later when you encounter dunning, invoicing terms, etc. P.s But you'll hate me when you encounter pro-rating...