Some software systems are designed for massive amounts of data to be processed in a very short time. Banking systems, fraud detection, billing systems. Lets pick one, I worked on for a long time: billing systems (for telecom or internet providers for example).
Most of those systems are very large, mostly complex systems, designed to bill millions of customers per month. Some examples are Kenan Arbor (bought by Lucent) or Amdocs. Since these systems need to process vast amounts of data very fast, they are built using compiled sources / binaries. Binary software is not easily customizable. So most of these systems are widely customizable via configuration files. Taking in account all options possible in dynamic configurations results in even more compiled code. I think you got it.
What actually is a billing system?
To give an impression which steps are required in a typical billing scenario, here is a short non-exhaustive list:
Collect billable items from external systems, translate or reformat the data and put it in a database.
Additional for mobile telecom billing: import GSM TAP3 (Transferred Account Procedure version 3) roaming data.
- First step: Rating
Put a “price tag” on every billable item for the billing period in question
- Second step: Billing
Collect rated items as invoice items per customer.
- Third step: Invoicing
Create invoices, on paper or digitally.
- Fourth step: Payment
Withdraw money via saved payment option per customer.
Alternatively: substract invoice total from prepaid deposit.
All of these steps could be “special” for any customers. Think of a subscribed service. Every customer pays $5 per month. But once the company had an introductory offer of 20% off for the first year. So not only are some customers paying only $4 but they are paying $5 after 12 months. Now take into account, that a typical mobile telecom company has something like 20-30 different contract types or rates. Wow, lots of options. Not a problem for a multi-million dollar company but for smaller companies with, let’s say, 100 to 100.000 customers.
Now what if a billing system would be implemented in a scripting language? Admittedly it would be a bit slower (would it? I don’t really know) that a solution in C or C++. But it would be very fast and flexible customizable, if well documented (we developers love to write documentation, don’t we?). Also management summary dashboards would be much more flexible as prebuilt solutions like QlikView (which also would cost additional license fees).
I could visualize for example a solution in Python. This way it would be fast compared to some other scripting languages and could leverage the massive amount of financial and mathematical software components. Build an administration and dashboard component with Flask or Django and run Python scripts on a PostgreSQL database. If more speed is needed you could switch to an Apache Spark architecture, which would also be scriptable in Python via PySpark.
Start on a small budget but don’t let decisions limit your options!
Pingback: Markierungen 06/16/2016 - Snippets