← Google Interview Insights

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

Senior
Jun 2026

Summary

Google system design round for what felt like a mid-to-senior backend or full-stack role. One question, image upload and tagging for a travel site, but it opened up into a surprisingly broad conversation about storage, metadata, and scale.

Questions Asked (1)

Q1

Design a service that allows users to upload images and apply tags to them on a travel platform.

System DesignTechnical Trade-offsData Modeling
Author's notes

I started with the upload pipeline and spent way too long on chunked uploads before they nudged me toward the tagging side.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying functional and non-functional requirements, such as scale, latency, and consistency needs. Then propose a high-level architecture covering image upload, storage, tagging, and retrieval, and dive into key components like data modeling and trade-offs. Finally, discuss scaling strategies and potential bottlenecks.

Pro tip: Emphasize the importance of separating image storage from metadata to optimize for cost and performance, and discuss how to handle eventual consistency in tag propagation. This shows you understand real-world trade-offs beyond just functional requirements.

1. Clarify Requirements

Ask questions to understand the scale (e.g., number of users, images per day), latency requirements, consistency needs, and whether tags are user-generated or system-generated. Also clarify if images need to be processed (e.g., resizing) and if there are privacy considerations.

2. High-Level Design

Outline the main components: a client application, an API gateway, an image upload service, a storage system (e.g., object storage for images, a database for metadata), a tagging service, and a search/retrieval service. Sketch the data flow from upload to tagging to retrieval.

3. Data Modeling

Design the schema for images and tags. Consider a relational database for metadata with tables for images, tags, and image-tag associations. Discuss indexing strategies for efficient tag-based queries and potential use of a search engine like Elasticsearch for flexible tag search.

4. Deep Dive into Key Components

Pick 1-2 areas to detail, such as the upload service (handling large files, chunked uploads, resumability) or the tagging service (how tags are applied, validated, and stored). Discuss trade-offs between synchronous vs. asynchronous tagging and consistency models.

5. Scaling and Trade-offs

Discuss how to scale each component: horizontal scaling of services, sharding the database, using CDNs for image delivery, and caching frequently accessed tags. Address trade-offs like consistency vs. availability, cost vs. performance, and complexity vs. maintainability.

Key Points to Mention

  • Separation of image storage (e.g., Google Cloud Storage) and metadata storage (e.g., Cloud SQL or Firestore) for scalability and cost efficiency.
  • Use of a message queue (e.g., Pub/Sub) for asynchronous processing of image uploads and tag indexing to decouple services and handle spikes.
  • Data model: many-to-many relationship between images and tags, with proper indexing for efficient tag-based queries.
  • Consideration of eventual consistency for tag updates and how it affects user experience; use of caching to mitigate.
  • Security and access control: authentication, authorization, and validation of uploaded images and tags to prevent abuse.
  • Monitoring and analytics: tracking upload success rates, tag usage, and system performance to inform scaling decisions.

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