Skip to main content

Ride-Sharing Microservices

A distributed system ensuring high availability and fault tolerance.

Architecture Overview

This project implements a scalable backend for a ride-sharing application (like Uber/Lyft). It is composed of loosely coupled microservices communicating via gRPC and message queues.

  • Microservices: Driver Service, Rider Service, Trip Service, Payment Service.
  • Communication: gRPC for synchronous low-latency calls, Kafka for asynchronous events.
  • Database: MongoDB for flexible schema design (Trips), Redis for caching and geospatial data (Driver locations).

Key Technical Challenges

1. At-Least-Once Delivery

Ensured by implementing idempotent consumers. Each message processing logic checks a unique event ID against a processed-events store before execution to prevent duplicate side effects (e.g., charging a user twice).

2. Geospatial Search

Utilized Redis Geo to index driver locations and efficiently query "drivers within radius R" in O(log(N)) time.

Tech Stack

GogRPCKubernetesMongoDBStripe API

Project Stats

Role: Backend Engineer

Timeline: 3 Months

Status: Completed