Engineering that powers SOS emergency on Uber
The emergency button on the Uber app is life-saving; and the service powering it needs to be available 24 x 7, no matter what!
So, how did Uber design such a service? How did they make it highly available; here's a quick gist about its system design ??
Information Gathering
When the emergency button is pressed, we first need to gather all the critical information and send it to the server. The critical information could be
Capturing Location
When the emergency button is pressed, we do not just need to fetch the location at that moment, instead we continuously capture the location and keep sending it to the backend.
This would help us notify the nearby police and help them keep an eye on the movement.
Lat-long are not enough
To make tracing effective, we cannot just share the lat and long because they are incomprehensible; hence we try to deduce the address from the lat-long.
This process of deducing address from lat-long is called Reverse Geocoding.
Notifying the police
Uber uses a 3rd party service named RapidSOS to notify nearby local authorities.
RapidSOS provides APIs to register an emergency and send live updates about the emergency. It takes care of notifying the local authorities and providing them with the necessary information.
Notifying others
Uber not only notifies the police through RapidSOS, but it also notifies
The notification to all channels happens in parallel to increase the probability of someone getting notified.
领英推荐
Reliability and Availability
Given that the emergency service deals with events that are urgent, important, and critical; it is extremely crucial that the service is reliable and highly available; which means
Key Decisions
Here's the video of my explaining this in-depth ?? do check it out
Thank you so much for reading ?? If you found this helpful, do spread the word about it on social media; it would mean the world to me.
If you liked this short essay, you might also like my courses and playlists on
I teach an interactive course on System Design where you'll learn how to intuitively design scalable systems. The course will help you
I have compressed my ~10 years of work experience into this course, and aim to accelerate your engineering growth 100x. To date, the course is trusted by 1000+ engineers from 11 different countries and here you can find what they say about the course.
Together, we will dissect and build some amazing systems and understand the intricate details. You can find the week-by-week curriculum and topics, testimonials, and other information at https://arpitbhayani.me/masterclass.
Full Stack Developer | Software Developer | Scrum Master | Business Intelligence (BI)
2 年This is an interesting article that I enjoyed reading
R&D Software Engineer @i-exceed | Databases | Distributed systems | Microservices | Zig?
2 年Arpit Bhayani Interesting topic loved your content Here is my other find out how Uber Engineering uses gRPC to provide RT-Push platform RAMEN moving from HTTP1.1 consider to QUIC/HTTP3 then back to gRPC-based bidirectional streaming HTTP2. This could be a great example how gRPC plays major role mobile clients over HTTP1.1 + JSON. HTTP2 now supports JSONtranscoder to make HTTP REST calls to client. https://www.uber.com/en-IN/blog/ubers-next-gen-push-platform-on-grpc/
Becoming the best version of Amritanjali
2 年intresting read ????
More about me: arpitbhayani.me Subscribe #AsliEngineering for such in-depth engineering concepts: https://www.youtube.com/c/ArpitBhayani System Design course: arpitbhayani.me/masterclass Redis Internals course: arpitbhayani.me/redis-internals Microservices: https://courses.arpitbhayani.me/designing-microservices All GitHub Outages: https://courses.arpitbhayani.me/github-outage-dissections/ BitTorrent Internals: https://courses.arpitbhayani.me/bittorrent-internals/