Client: Rabbit Finance
Rabbit Finance is one of the leading insurance marketplaces in Thailand. You can purchase car insurance, health insurance and many other finance-related products on their site. The site has a streamlined process designed to maximize sales leads. There is no register or login required, which presents an obstacle to the conversion they are looking for.
After clicking the "Get Free Quote Now" button, the users go into a series of dropdowns to give the sales agent the details of the insurance they will be needing:
This is Winterwind's second time integrating the infamous "redbook" for vehicles, which contains complete information on all car makes, models and customization options available for them. The other-time was for NW Seat Covers, see that Magento Case Study here.
Decoupled Architecture Using Lumen
Anthony was asked to design a new architecture for the platform. The first thing to note about Rabbit is they have more products than Rabbit Finance. Some of their other websites, such as Rabbit Rewards, also need to access the same data that Rabbit Finance does. There is also Rabbit Daily, a news site.
So we went on to create a central Rabbit database in MySQL, using RDS from Amazon, that contains data that is needed by all Rabbit applications. These include the user base, vehicle information, generic company information and more. We then wrapped this in an API using Laravel Lumen, which was known simply as the Rabbit API. The Rabbit API connects to the main Rabbit database and provides general data to all current and future Rabbit products.
We then went on to create product specific databases with data that pertain only to that product. For example, we created a Rabbit Finance database with data from the RedBook, insurance rates, insurance pricing information, etc. That database was then wrapped in an API known as the Rabbit Finance API. This is the correct way to go about this. You could put all the data into one database, but this is inefficient and for multiple reasons. If all the applications were connecting to one master database, it would give that instance more connections than necessary, slowing down the DB instance. Likewise, if there were just one master API, the server would get inundated with too many requests. Even with a load balancer dividing up the requests across multiple servers, they would still be all connecting to the same master database, overloading it.
The solution is to have a tiered architecture, which was what Winterwind implemented for this company. When apps require generic Rabbit data, they connect to the master database, when they require application-specific data, they will connect to the appropriate API, which in turn connects to its own database.
The Rabbit Finance website was coded in Laravel, and the APIs were done in Lumen, which is a light-weight version of the Laravel framework designed to be used for APIs.