System Design: Meeting Scheduling Platform (Onsite)
Context
Design a multi-tenant meeting scheduling system for an organization of any size (from startups to very large enterprises) operating across time zones. The system must support single and recurring meetings, rooms with constraints (capacity, equipment, location), and prevent double-booking of both people and rooms.
Functional Requirements
-
Core APIs (HTTP/gRPC acceptable):
-
Create, update, cancel single or recurring meetings.
-
Prevent double-booking for attendees and rooms.
-
Query free/busy and return the earliest common slot across N participants with room constraints and time zones.
-
Recurrence: iCal-style RRULEs, exceptions (single-instance edits), and partial-series updates/cancels.
-
Notifications: Invitations, updates, and cancellations.
Data and Scale Requirements
-
Specify data model (tables/collections and key fields).
-
Choose storage (SQL/NoSQL) per dataset, with justification.
-
Propose indexing and sharding for multi-tenant scale.
Concurrency and Consistency
-
Describe conflict detection and concurrency control during create/update/cancel, including:
-
Optimistic locking, transactional boundaries, idempotency.
-
Algorithms for overlap detection.
Cancellation Flow
-
Detail how to remove meetings efficiently, propagate notifications, free resources, and maintain audit history.
-
Propose optimizations for O(log n) cancel operations (per calendar) and bulk cancellations.
Nonfunctional Requirements
-
State reasonable QPS and latency SLOs, caching strategy, consistency model (strong vs eventual), background jobs, failure handling and retries, deduplication, security and access control.
-
Provide back-of-the-envelope capacity estimates.