System Architecture
The system comprises of:
- Banking server: This is a Java server (Apache Tomcat) which hosts the banking application business logic.
- Main database: The primary database - Maria DB. Some tables marked for main DB are found only here.
- Bank database(s): Individual banks may have their designated separate databases, potentially hosted elsewhere. Presently supported are only MariaDB.
- Caching server: A Redis server that provides temporary caching of the data
- File system: The file system is used for storing larger image or media files.
- Web server: An nginx server that is used to front-end the Java server (Banking server).
Others
DB Updates Needing Authorization
There are quite a few places where updation to a data structure needs someone else's approval.
It is desired that, if there is a query before an approval is given, then it should return the previous results.
To make it possible, we will need to create a database table that stores all the changes for approval, and those changes update to the actual tables only once the approval happens.
Database Connectivity
For performance reasons, we shall not go with an ORM framework. ORM solutions use reflection and introspection, which can both cause performance degradation.