Skip to main content

Banking Industry : Too much complicated

I decided to write on this topic, as I work in one of the largest Bank in Australia and I realized that providing a banking solution is very complex. As the technology is growing so rapidly, that one can't afford to provide a complete solution using a finite set of technologies.  And these days, its a habit of Big software companies that they sell all their available products to their clients. They try to integrate all available tools to make a product. In Banking Software Bank also thinks that if many systems are communicating to each other in live environment, chances of fraud are minimized.

National Australia Bank is My Company's client. I personally feel that for a product like Next generation which is called as NGP in our terminology, still in developing state, is going to be a very great. As to provide such a testing environment to the product like NGP in its childhood days is not possible for small sector banks. But thanks to the testing team to test such a huge set of stack.

So, I landed here in Melbourne 6 months back, and when I look at the progress of our product in this span, I can imagine its complexity. As when I left Mumbai, I thought it just a matter of releasing our developed product here in Melbourne and it will be available for the Customers of the Bank to use it.

While writing those pieces of code, it seems too easy for simple transactions, but banking is not for those 90% simple straight forward cases, its about remaining 10% complicated cases, which looks so simple on paper, but when it comes to reality, so many permutation and combinations are applicable on those. For an end user, say ATM user, its just a matter of inserting his card into ATM machine, inputting PIN and amount to withdraw money. End user feel that his account is debited with the transacted amount. But is this which only happens in the system? No, since this is just a simple straight forward transaction, but it is also too much complicated.

Bank don't care about individual accounts for tracking balances because its not feasible, bank have ledgers which keeps a track of their money flow. A ledger can be as granular as an ATM machine, i.e. if bank wants to track balance flows from an ATM machine, then a ledger can be defined. Similarly, other parameters are defined, if more granular balancing is required. On the basis of these parameters bank plays with interest rates and other features to derive their business.

If I close my eyes and think of complex cases, too many transaction comes to my mind within seconds like, Interest calculations, Back dated transaction, reversal, force transaction on invalid account status, interest adjustments, tax calculations, tax adjustments, financial year closure, transactions beyond fin year, tax year etc etc. So, development happens for these cases always takes time. And these cases cannot be think of when we are developing. Since, when we are developing, we are only thinking of one scenario at a time, but in live environment these multiple complex cases can play a silent role in creating a big problem which we have missed during development. For a simple Debit transaction, there are 1000's of test cases.

Over and above all these complexity, security is another complex feature which need to be developed as part of such product. These days security is very crucial as the hackers spreading there network over internet in such a frequency that technology providers are worried about this.

After doing all this, if something happens in the system, then also, people have to think of the solution to bring the system to the normal. Banking looks simple from an ATM machine, but its too complicated from inside like wires in a telephone box which have infinite connections. Will be writing more on individual cases later.

Comments

Popular posts from this blog

Nested Loop Natural Join

When the optimizer tries to finalize the execution plan of a query, it considers a lot of items. It must take the interrelated decisions based on those items. Most important of those items are, Ø   Access path Ø   Join Order Ø   Join Operation Access path tells how the required data is going to be retrieved from a table. So, this tells nothing but which index scan is imposed on that table like index range, index skip scan and so on. Join Order means, to execute a query that joins more than two tables, Oracle joins two of the tables, and then joins the resulting row source to the next table. This process is continued until all tables are joined into the result. It means oracle can join only two tables at most in a time though more than two tables are referred in a query. Oracle always tries to join the small tables first and then joins with the large tables. The reason behind is, it always tries to lower the number of resultant records formed while in the process of jo...

Bitmap index

Bitmap index is one of the index types that is supported by oracle. Unlike B*tree index, this is very compressed index. It means if I create a bitmap index on a column, then the generated index table will be smaller when compared the index table which is generated by the binary index on the same column. The reason is, in bitmap index, ROWIDs won’t be stored in the index table, instead index values will be mapped against bitmaps. Bitmap is nothing but it stores either of this values, 1(Match) or 0(No Match). For each distinct values in the column, a separate index record will be created. Unlike b*tree index, bitmap index can accept NULL and it creates separate index entry for this. Bitmap index will work better if number of distinct values are relatively less when compared to the total number of records. Why is it referred as “relatively less”? this index will work fine if table of 1,000,000,000 records contains 5000 distinct values and if table of 1,000 records contains 5 distinct va...

IOT – Index Organized Table

Oracle supports these 3 different types of tables, 1.      Heap Table (nothing but Data Table) 2.      IOT 3.      Cluster Table (using Cluster Index) First type, heap table is everyone aware of. Heap Table is of rows and columns and value is stored in each cells (each cell è intersection of each rows and columns). In Oracle, all these tables containing data are stored in the datafiles which would be in HardDisk. In datafile, fundamental storage unit is block (in other databases, this might be “Pages”). Logical representation of the datafile, the block, the data will be like this, “ROWID” is the memory address assigned to the each record getting stored in a block of a datafile. ROWID can be decoded to get the actual block number and the datafile name on which the particular record is stored. . If Suppose say, datafile is of 3MB. If size of single block is say 1MB, then 3 blocks would be in this single data file. Conside...