How we made our app 20X faster and 3X resilient

WibmoPay
The Payments Infrastructure Company
3 min readApr 19, 2016

Mypoolin is a social payments platform that allows you to do two things seamlessly.

  • Splitting and settling your bills for daily use like dining, parties, lunch.
  • Planning and paying with friends for movies, events, gifts and more.

By virtue of the nature of application and the user flow, the app consists of 4 parts of the journey — Discovery (for planning cases), creating the group, chatting & paying, and finally redeeming the collected amount. Over this journey, there are multiple touch points for you that are facilitated in a manner that provides you with the wholesome delta like package that you experience. The tributaries that fill into it are our multiple third party API interactions (from recommendation listings, to chatting, to payments) that help you in sailing through the app in a matter of seconds.

In such an app flow, the speed and resilience of the system achieve prime significance. The goal being that each touch point experience should be delivered with the most optimum speed and reliability. Hence, when we decided to shift from our existing stack to a reasonably better one, we were visibly excited.

Deployment challenges
  1. Shifting to Nginx reverse proxy from apache

In many ways, Apache can be viewed as a huge ship with tons of amenities from sauna to pool to buffet rooms and more, while Nginx can be viewed as a medium sized steamer with the engine of a Ferrari. The implication is clear- do we want a server that does 100 things decently well but we need only 8 of them or do we need a server that performs at least 10 times as fast with 12 of those options.

Results: (handling with 100 concurrent connections of same type)

Apache server — 1500 requests per second

Nginx server — 14000 requests per second

Huge ship — whether you need it or not

2. Implementing CDN on all static content across the server

Once we realized that the static content on our website (including the css, js and of course all the images) comes around to approximately 12% of the whole source, then the concept of CDN began to make perfect sense. Especially in a world where the discovery / recommendation section of the app is meant to delight you by making an awesome first impression, the importance of speed multiplies automatically. The idea of a CDN is pretty simple in the sense that it aims to deliver content to the user from the server that is closest in terms of browsing location, hence saving unnecessary requests.

Results: (handling with 100 concurrent connections of same type)

Static content was being delivered up to 2.16 times as fast

3. Multi A-Z deployment on Amazon RDS

The key focus of any engineer handling data is always the reliability and availability of data in case something fails. That is the precise thing that multi A-Z deployment helps in. Considering that after enabling the above, we were able to achieve protection against failures of disk, DB instance or even a complete availability zone, hence statistically this made the application resilient by up to 3 times.

Multi A-Z deployment @ MyPoolin

At present, we are working on adding a key and awesome update that will make your peer to peer transactions, universal from any bank to any bank, completely fast and insanely cool. Look forward to it in the next few weeks.

Wish to work with some of the best hackers, programmers and designers in the country? Wish to join one of the fastest growing ventures in the intricate, growing and powerful domain of fin-tech? Look no further. Ping us directly at hello@mypoolin.com

Cheers

Team Mypoolin

--

--

WibmoPay
The Payments Infrastructure Company

The one stop solution for all your business payments, settlement reconciliation & money management needs.