Challenge
The company was working on an application that would let consumers apply for loans from multiple sources at a time. It had designed a system whereby the app connected with loan providers’ APIs to pass requests and responses.
At the point of our first contact, the company was rebuilding its PHP application in Java. It lacked sufficient hands to integrate the app with financial organizations’ information systems. It reached out to several developers for help and chose Elinext.
Solution
The client had an already designed system when they came to us. It looked like a network where the user interface (UI) connected with loan providers’ APIs via so-called events. Those APIs were all different. Integrating one in the system required us to talk directly with our client’s partners and test it together.
At the beginning of the project, the client requested two part-time Java developers and asked for eight more four months later. But that was clearly too many of our people working on the project. Finally, we assigned two full-time engineers who nailed the job using Agile methodology.
Events
The loan request-response feature relies on events. A user applies for a loan, and the application creates a JSON-formatted event in a cloud in Google Cloud Platform (GCP). The event is queued and, come its turn, sent to an automated request distribution hub.
The system creates an event “Application created”, converts its data into the formats used by each financial organization’s API, and sends it to the organization, which can then either create an offer or reject the request. Based on the choice made, the system creates an event “Rejected” or “Offered” and lets the user know.
Integrations
The main challenge of this project has been connecting loan providers’ APIs with the application. We have had to work closely with financial organizations that have their own bureaucratic ways of doing things.
We have been using Gradle, Java, and Spring to build the integrations. Each integration is a separate project and service. It consists of the main module with components in controller, service, and model layers.
Integrations use HTTP and gRPC to process requests between different services. A shared library module allows for the shared service, model, and auto-configuration code. As a result, the system doesn’t duplicate code.
We have been running automated unit tests with each new build. The method we used combines the build tool Gradle with testing libraries and frameworks like JUnit, Spring Boot Starter Test, and Mockito. We also have been testing integrations manually through case scenarios, sometimes together with loan providers in real-time.
An average integration has taken us from one to three weeks to complete. As of this publication, we have developed 16.
Statistics
We developed a statistics board for admins, which shows figures like how many loan applications are in progress, accepted or rejected, how many requests resulted in an error, and more. We used Prometheus to source the metrics and Grafana to visualize them.
Result
Elinext helped the startup cut its time to market. Today, the system processes around 3000 loan applications daily across 16 financial organizations. These figures will grow as we continue to develop new integrations.
We have also gained unique experience in project management. We had to work out efficient collaboration with multiple parties, our client and the loan providers traditionally mired in bureaucracy. This has taught us some important lessons.