Position: Software Engineer (JavaScript | Node.js | Express.js)
Category: Node.js
English level: fluent
Years of experience: 3


As a backend engineer in the Fintech industry, one of the most robust applications I have worked on is a large-scale bill payment and mobile transfer application. Security was a top priority for our team, as we needed to ensure that our users' assets were always protected and that all transactions met certain conditions before being initiated. We also had to ensure that the application was optimized for performance and scalability.

One of the most significant challenges I encountered when building this application was managing race conditions in transaction requests. For example, users who had $50 in their account could  complete a $50 transaction successfully, however, if the the user initiates another transaction of $50 before the user’s balance gets updated on the database, that transaction would be successful, leading to potential financial losses.

To address this challenge, our team considered locking the user’s account for a few seconds, after the user completes a transaction, but this approach would increase the latency of the application and negatively impact the user experience. After some discussion, I suggested we build a rate-limiter microservice that would receive all transaction requests and allow only a predefined amount of requests per time window, preventing multiple requests from the same user within a short period of time. The team agreed, and we successfully implemented this solution.

Because the rate-limiter service was designed to be modular and easily extendable, we were able to extend its functionality to other endpoints of the product with little or no extra cost. And this approach allowed us to optimize the performance of the application without sacrificing security or user experience.

Through this project, I learnt the importance of separating concerns of different microservices. It also taught me the value of teamwork and collaboration when it comes to solving complex technical challenges. it also made me learn about the rate limiter as a precaution against the denial of service attack.

Technologies used in building these applications are Node.Js, Express.Js, MongoDb, Docker.
Interested in mid- and high complexity long-term projects requiring problem-solving skills and providing opportunities for personal development.

Purely backend or backend-predominating roles are preferrable.