Wallet One, a Joint Project with the Largest State Online Lottery
Objectives: Transition from legacy monolithic architecture to a microservice system, increasing the number of transactions from 1,500 per second to 15,000 per second. Implementation of payment system to buy lottery tickets and withdraw winnings to personal account, integration with the bank and the state service portal for authentication
Technology stack: Java Spring, Angular, PostgreSQL
Project period: September 2018 - June 2019
Team: a Business Analyst, a Teamlead-Architect, 2 Front-end Developers, 2 Back-End Developers, a Tester, and a Project Manager
Website: walletone.com
Сlient
Wallet One, an international payment service, having its own banking license, approached us in connection with their joint project with a major state online lottery. It turned out that the platform's capacity was categorically insufficient during periods of seasonal bursts of activity. For example, during the New Year holidays more than 10 times as many lottery tickets are sold than usual.
Project
The lottery, this witty way of replenishing the state treasury, invented back in the 18th century by Giacomo Casanova (this historical character was not only famous on the love front), has been working properly up to now.
As in many other countries in this case, the state has a monopoly on the lottery. Consequently, all tickets, which are sold at almost every cash register of chain stores, as well as on the Internet, belong to the state.
But even state lottery status does not solve the issue of a banking license. And paying out winnings is a financial activity that requires a number of licenses. So Wallet One appeared as the contractor with all the necessary rights to carry out such operations.
During the first negotiations, it became clear that instead of trying to update and develop the old platform, it was more appropriate and even faster to create a new system.
FinTech is one of the most complex and highly loaded areas of IT development.
The peculiarity of this particular case was that the online lottery has a whole system of balances. One balance under the contract can only be spent on the purchase of lottery tickets and nothing else. The other type of balance is winnings, which, unlike the first, can be withdrawn to a third-party bank account and cashed out. Also, the platform must be able to accept payments from other payment systems (such as Yandex-purse) and banks. In addition, the security of personal data must be taken into account.
We put 6 people on the project: an Architect-Teamlead, 2 back-end and 2 front-end developers, and a tester. By the new year, when it became clear that without our project manager the project could not be completed, our PM Anna Senkina joined it. A plan, estimates and forecasts were created, and the situation was eventually straightened out. And we were left with the knowledge, reinforced by new experience, that there are absolutely necessary, obligatory roles on every project. (By the way, if you're interested in learning more about the different roles on IT projects, check out our YouTube channel Roles and Tasks in IT Project. What are all These Roles (TeamLead, Project manager, Product Owner, etc.) for?)
Results
- We created from scratch what is called "processing", the system which conducts operations: takes transactions from the lottery website and sends them to the banking systems, and vice versa.
- We carried out integration with payment services and the bank. An electronic wallet management system was created, as well as balance and commission management system.
- The number of operations per second, which the system could process, increased up to 10-15 thousand per second.
- All security requirements for the operation of financial systems and storage of personal data were taken into account.
We ended our participation in the project when all that was left was to work out scenarios for the migration of existing users and balances from the old system, and, in fact, to carry out the transition to the new one. A year later the system was launched and is now up and running.