Limited Time Offer:Up to 20% off Hello Interview Premium
Up to 20% off Hello Interview Premium 🎉
Hello Interview
Learn System Design
Introduction
How to Prepare
Delivery Framework
Core Concepts
Key Technologies
Common Patterns
Question Breakdowns
Networking Essentials
API Design
Data Modeling
Caching
Sharding
Consistent Hashing
CAP Theorem
Database Indexing
Numbers to Know
Bitly
Dropbox
Local Delivery Service
Ticketmaster
FB News Feed
Tinder
LeetCode
WhatsApp
Rate Limiter
FB Live Comments
FB Post Search
YouTube Top K
Uber
YouTube
Web Crawler
Ad Click Aggregator
News Aggregator
Yelp
Strava
Online Auction
Price Tracking Service
Instagram
Robinhood
Google Docs
Distributed Cache
Job Scheduler
Payment System
Metrics Monitoring
ChatGPT
Real-time Updates
Dealing with Contention
Multi-step Processes
Scaling Reads
Scaling Writes
Handling Large Blobs
Managing Long Running Tasks
Redis
Elasticsearch
Kafka
API Gateway
Cassandra
DynamoDB
PostgreSQL
Flink
ZooKeeper
Time Series Databases
Data Structures for Big Data
Vector Databases
Vote For New Content
Pricing
Sign in / Sign up
Search
⌘K
Pricing

Tutor

Common Problems

Strava

Scaling Writes
Real-time Updates
Published
ByEvan King·
medium

Try This Problem Yourself

Practice with guided hints and real-time feedback

Understanding the Problem

🏃‍♂️🚴‍♀️ What is Strava? Strava is a fitness tracking application that allows users to record and share their physical activities, primarily focusing on running and cycling, with their network. It provides detailed analytics on performance, routes, and allows social interactions among users.
While Strava supports a wide variety of activities, we'll focus on running and cycling for this question.

Functional Requirements

Core Requirements
  1. Users should be able to start, pause, stop, and save their runs and rides.
  2. While running or cycling, users should be able to view activity data, including route, distance, and time.
  3. Users should be able to view details about their own completed activities as well as the activities of their friends.
Below the Line (Out of Scope)
  • Adding or deleting friends (friend management).
  • Authentication and authorization.
  • Commenting or liking runs.

Non-Functional Requirements

Core Requirements
  1. The system should be highly available (availability >> consistency).
  2. The app should function in remote areas without network connectivity.
  3. The app should provide the athlete with accurate and up-to-date local statistics during the run/ride.
  4. The system should scale to support 10 million concurrent activities.

The Set Up

Defining the Core Entities

The API

High-Level Design

1) Users should be able to start, pause, stop, and save their runs and rides.

2) While running or cycling, users should be able to view activity data, including route, distance, and time.

3) Users should be able to view details about their own completed activities as well as the activities of their friends.

Potential Deep Dives

1) How can we support tracking activities while offline?

2) How can we scale to support 10 million concurrent activities?

3) How can we support realtime sharing of activities with friends?

4) How can we expose a leaderboard of top athletes?

Purchase Premium to Keep Reading

Unlock this article and so much more with Hello Interview Premium
Buy Premium

Currently up to 20% off

Hello Interview Premium

System Design Guided Practice
Exclusive content
Recent interview questions
Learn More
Reading Progress

On This Page

Understanding the Problem

Functional Requirements

Non-Functional Requirements

The Set Up

Defining the Core Entities

The API

High-Level Design

1) Users should be able to start, pause, stop, and save their runs and rides.

2) While running or cycling, users should be able to view activity data, including route, distance, and time.

3) Users should be able to view details about their own completed activities as well as the activities of their friends.

Potential Deep Dives

1) How can we support tracking activities while offline?

2) How can we scale to support 10 million concurrent activities?

3) How can we support realtime sharing of activities with friends?

4) How can we expose a leaderboard of top athletes?

Questions
Meta SWE Interview QuestionsAmazon SWE Interview QuestionsGoogle SWE Interview QuestionsOpenAI SWE Interview QuestionsEngineering Manager (EM) Interview Questions
Learn
Learn System DesignLearn DSALearn BehavioralLearn ML System DesignLearn Low Level DesignGuided Practice
Links
FAQPricingGift PremiumHello Interview Premium
Legal
Terms and ConditionsPrivacy PolicySecurity
Contact
About UsProduct Support

7511 Greenwood Ave North Unit #4238 Seattle WA 98103


© 2026 Optick Labs Inc. All rights reserved.