A practical guide to developing financial system — Part 1
What to expect, Trends, Challenges, Key Features
Developing financial applications requires careful attention and consideration due to the critical nature of monetary transactions, confidential user information, and regulatory compliance.
For over seven years, I have been engaged in the development of financial systems. Through this series, I’ll be sharing specific insights to assist you in developing, deploy and maintain a safe, dependable, and reliable financial system;
Numeric Values
During the initial phases of development, it’s crucial to establish how numerical values will be displayed, captured, transferred, validated and stored. Systems manage numerical value differently. The correct approach to manage numerical is the established and enforced standard. Be aware of the programming language’s capabilities and storage constraints.
Transactions Records — Unique Reference
Each transaction entry needs a unique identifier. This identifier should be different from the database record ID and suitable for public sharing. For instance, 121D19Z9
.
To simplify recognition, you can add more context to the reference. As an example, you may introduce the prefix WIT to withdraw transaction reference, like WIT-121D19Z9
; making sure they are recognisable at a first glimpse.
Transaction Records — State Modification
Modifying record state holds significant importance in financial systems. Before state modification, checks must be done. Usually, there are established sets of conditions that must be met before a record’s state can be altered. Comprehensive log must be kept for every state modification.
Account Balance
The account balance is derived from its transaction history. Relying on the stored calculated value can lead to problems when the calculation falls out of synchronization.
Environment Variables
Using Environment variables enables the deployment of multiple instances from a single application, facilitating separation of production and sandbox environments, among other advantages.
Environment variables should be separated from the application; doing so not only adheres to best practises, but also ensures the presence of a single true and shareable source. Be aware that systems store environment variables as text/string.
Queues
For non-critical procedures and processes that do not require quick action, always utilise a queuing strategy. Queue manages simultaneous requests while upholding performance.
Within a multi-instance application, it is crucial to ensure that jobs are exclusively executed on the designated instance.
Comprehensive log entries for actions executed within the jobs should be kept. Queue systems allow you to retry failed jobs, which is always useful.
IP Whitelisting
In addition to other security practices, Whitelisting IP creates a trusted list of pre-approved IP addresses or ranges of IP addresses sources that are permitted to communicate with the application. Use IP Whitelisting; this strategy not only improves overall system security but also improves performance, serves as an early warning mechanism, and protects against both external attacks and insider risks.
This post is part of a 5-part series on a guide for creating financial systems. Read the coming instalments and other technical articles created by the ClickPesa Engineering Team on our blog.