Evolution of Bid Notifications to Courier
Pushing the limits with Courier and improving reliability with great numbers.
By Ajat Prabha
🚀 Introduction
I remember the good old days when we relied on a vendor to send those tantalizing bid notifications to our driver’s partner app. Well, times have changed, and so have we! Let’s dive into the nitty-gritties of how Gojek revamped its bid notification system.
🍔 Bids: A Quick Bite
Before we get too deep into the tech talk, let’s clear up one thing: What on earth are bids?
In the simplest terms:
- Bids are food and ride requests sent to drivers.
- They serve as a connector, linking hungry customers with ready drivers, creating a seamless experience for food and ride requests! 🚗💨
📐 Blueprints of Change: System Redesign
Now, let’s delve into the details of this system:
Old System:
Two parallel channels running side by side:
- Vendor: The old channel we aimed to replace
- Pusher: The new kid on the block, initially used FCM + APNS channels only
New System:
- We’ve put all our eggs in one basket, and that basket is Pusher! 🥚🧺
- Pusher now uses a dynamic trio: Courier (our secret sauce, the in-house MQTT solution for those long-running connections) + FCM + APNS.
- Vendor is not used anymore!
😢 Saying Goodbye to the vendor
We recognized the need for change and strategically phased out the old system in stages:
- Tier 3 cities: They say, “Start small.” So we did.
- Tier 2 cities: The middle child always gets overlooked, but not this time!
- Tier 1 cities: Last but not least, the big guns!
📊 The Proof is in the Pudding (or the Numbers)
Since we’re all about data, let’s talk numbers:
- Courier’s delivery rate? A whopping 99.9%+! 🚀In comparison, the trio of FCM+APNS+VENDOR hovered around 97–99%.
- And here’s the cherry on top: We observed a ~22% reduction in P99 bid acceptance latency. That’s like cutting the queue at your favorite coffee shop! ☕️
😰 Rollout Roadblocks (and How We Crushed Them)
Every epic tale has its challenges, and ours was no different:
- We tried the Push Notification channel, but guess what? The Device ID played hide and seek with one of our internal micro-services databases. 🙈
- Solution: We gave our MQTT publish topic structure a makeover, ditching the deviceID. Not only did this simplify things, but it also boosted reliability. Talk about a win-win!
🎉 Conclusion
Change is the only constant, and at Gojek, we embrace it with open arms. As we usher in the era of Courier-backed Pusher, we’re excited about the road ahead. Here’s to faster bids, happier drivers, and satisfied customers!
To read more stories from our vault, click here.
Check out open job positions here.