...
My first assignment was to work as a developer for the pilot/demo version of the AutoDispatching project, a system to allow taxi drivers and passengers to interact in real-time via the mobile apps.
After many setbacks, we were finally able to build a version of it which allowed over 10K concurrent connections using RestAPI and websocket.
We used ExpressJS to build the internal APIs for the mobile apps, web and dashboard app and also the external APIs for the 3rd party to integrate to their own system.
After the pilot version, I was assigned to lead the team to further develop and maintain the AutoDispatching. The other teams were the mobile app team, billing team, web app team.
Besides the task to continuously improve and update the system, we have made some major new/improved features as below:
- Using Redis Pub/Sub to scale up AutoDispatching from single thread version to multithread version to utilize the CPU power more effectively.
- Build a service to send SMS, marketing, MaskPhone to customers. The SMS gateway that we integrate were: Twilio, ringcaptcha, ovh, oneway, mobitel, dialog, infobip, and mobivn.
- Build a map provider service:
* I’ve lead the team to study Google, Tencent, Tomtom, Here, and OpenStreetMap map services and integrate them into our system.
* The first problem is when the users raise, the fee from map service companies seems to raise a lot; the taxi companies requested to find a way to help them lower the service fee. After about 6 months of study and research, trial and fail attempts, etc … we have come to build a new database system that help us overcome this problem.
* We were also able to provide a home-built algorithm which provides the similar function with the short-path finding algorithm optimized for the rush-hour from Google for the other map services which don’t have the similar function (Tencent, Tomtom, Here, OpenStreetMap).
* Another interesting function which we’ve built is to provide a ridesharing feature, which helps the drivers to save movement time (and of course, money too).
* MapProvider is also a driver tracking (geofence), which allows taxi companies to track a driver when a driver is about to enter and then exit a specific/defined zones.
My other assignments were:
- Participate in the task to build a web app for the taxi companies to manage the drivers, their customers, and their own biz matters. We used React at client side and NodeJS at backend side.
- Participate to build a ProcessLog service. All other services will push their logs to ProcessLog using MessageQueue (RabbitMQ). ProcessLog will proceed to analyze and process the logs then push to the Report service.
Finally, here are some numbers about AutoDispatching system so far for your reference:
- Covered 220+ cities on global.
- Processed 20.000.000+ bookings.
- 100.000+ bookings per day.
...