Phase 05 / 05 · Final
Case Studies
دلوقتي بنطبّق كل اللي اتعلمناه. 6 أنظمة حقيقية، نصممها من الصفر.
0%
Methodology
كل case study هنمشي فيه على نفس الخطوات: ده الـ framework اللي بيتسأل في الـ system design interviews:
- 1. Requirements: ايه الـ functional و الـ non-functional
- 2. Estimations: حسابات القدرة (users, RPS, storage)
- 3. API Design: الـ endpoints الأساسية
- 4. Data Model: الـ schema
- 5. High-Level Architecture: الـ components
- 6. Deep Dive: التحديات الخاصة بالنظام
Case Study 01
URL Shortener
زي bit.ly و TinyURL
Requirements
Functional
- • تحويل URL طويل لـ URL قصير
- • الـ short URL يـ redirect للـ long URL
- • Custom aliases (اختياري)
- • تواريخ انتهاء الصلاحية
- • Analytics على عدد الـ clicks
Non-Functional
- • High availability: مش يقع
- • Low latency: أسرع من 100ms
- • Scalability: مليارات URLs
- • الـ short URLs مش قابلة للتنبؤ
Estimations
حسابات القدرة
- • Reads vs Writes: 100:1 (الناس بتفتح أكتر مما بتنشئ)
- • New URLs/sec: 200 (~17M/يوم)
- • Reads/sec: 20,000
- • Storage (5 سنوات): ~30TB
- • Cache size: 20% من الـ daily reads = ~170GB/يوم
API Design
POST /api/shorten
{ "url": "https://very-long-url.com/...", "alias": "optional" }
GET /:shortCode
Returns: 301 Redirect to long URL
DELETE /api/url/:shortCode
Data Model
جدول URLs
urls ( short_code VARCHAR(7) PRIMARY KEY, long_url TEXT, user_id BIGINT, created_at TIMESTAMP, expires_at TIMESTAMP, click_count BIGINT ) -- Index on user_id for user dashboards
High-Level Architecture
User → CDN → Load Balancer → API Servers
↓
┌─────────┴─────────┐
│ │
Redis Cache Database (sharded)
(hot URLs) PostgreSQLDeep Dive: توليد الـ Short Code
دي المشكلة الجوهرية. ازاي نولّد short code فريد بسرعة؟
❌ Hash-based (MD5/SHA)
سهل، بس فيه collisions، و الـ short code طويل.
⚠ Auto-increment + Base62
نـ encode الـ ID بـ base62 (a-zA-Z0-9). بس قابل للتنبؤ.
✓ Counter Service (مع Zookeeper)
Counter مركزي يدّي ranges للسيرفرات. كل سيرفر ياخد range (مثلاً 1000-2000) و يستخدمها بدون التواصل التاني.
الحل العملي: Counter Service + Base62 encoding. 7 characters تكفي لـ 3.5 trillion URLs.
أسئلة انترفيو على القسم ده
3القسم 1 / 6