← Amazon Interview Insights

Amazon·Software Engineer·Onsite - System Design / Architecture·Senior

SeniorPrefer not to say
Jun 2026

Summary

Amazon system design round focused entirely on building a GitHub-scale developer platform. Dense question, lots of ground to cover, and I definitely felt the time pressure trying to hit every subsystem they wanted.

Questions Asked (1)

Q1

Design a GitHub-style developer community platform covering user profiles, repositories with code, issues, and pull requests, follow/star relationships, an activity feed, and scaling for high throughput. Walk through sharding, read/write paths, caching, feed fan-out, search, code blob storage, key API endpoints, and the data model.

System DesignData ModelingTechnical Trade-offs
Author's notes

This is basically five questions rolled into one.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale (e.g., 100M users, 1B repos, 10M events/day), then sketch a high-level architecture with core services and data stores. Dive into the data model and API design, then systematically address each component: sharding, caching, feed fan-out, search, and blob storage, explaining trade-offs and scaling strategies.

Pro tip: Emphasize the read-heavy nature of the platform and how caching and denormalization are used to meet latency SLAs, while ensuring write scalability through sharding and asynchronous processing. Show awareness of consistency trade-offs, like eventual consistency for feeds vs. strong consistency for repository metadata.

1. Clarify Requirements and Scale

Ask questions to understand expected scale (users, repos, events), read/write ratio, latency requirements, and consistency needs. Define functional and non-functional requirements.

2. High-Level Architecture and Data Model

Outline core services (User, Repo, Issue/PR, Feed, Search) and their interactions. Design the data model with entities like User, Repository, Issue, PullRequest, Follow, Star, and Activity, considering relationships and access patterns.

3. Deep Dive into Components

For each component, explain sharding strategy (e.g., by user_id or repo_id), read/write paths, caching layers (e.g., Redis for hot data), feed fan-out approach (push vs. pull), search indexing (e.g., Elasticsearch), and blob storage (e.g., S3 with CDN).

4. API Design and Trade-offs

Define key API endpoints (e.g., GET /users/{id}, POST /repos, GET /feed) and discuss trade-offs such as consistency vs. availability, normalization vs. denormalization, and cost vs. performance.

5. Scaling and Bottlenecks

Identify potential bottlenecks (e.g., hot shards, feed fan-out storms) and propose solutions like consistent hashing, rate limiting, and asynchronous processing. Summarize how the system scales to high throughput.

Key Points to Mention

  • Sharding strategy: shard by user_id for user-centric data, by repo_id for repositories, and use consistent hashing to distribute load evenly.
  • Caching: use Redis or Memcached for hot data like user profiles, repository metadata, and recent activity; employ CDN for static assets and code blobs.
  • Feed fan-out: hybrid approach—push (write) for active users and pull (read) for inactive users, with a queue-based system to handle fan-out asynchronously.
  • Search: use Elasticsearch or similar for full-text search over repositories, issues, and code; index asynchronously via change data capture.
  • Code blob storage: store code in object storage (e.g., S3) with metadata in a database; use CDN for fast retrieval and deduplication for efficiency.
  • API endpoints: design RESTful endpoints for CRUD operations on users, repos, issues, PRs, follows, stars, and feed; consider GraphQL for flexible queries.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.