- کانال/مصاحبهگر: Tech Dummies - Narendra Lakshmana Gowda
- مدت: 00:51:27
- لینک ویدیو: https://www.youtube.com/watch?v=psQzyFfsUGU
این سند خلاصهٔ نکات کلیدی یک مصاحبهٔ ساختگی system design است. اگر وقت دارید دیدن ویدیو توصیه میشود.
Teach Me: 5 Years Old | Beginner | Intermediate | Advanced | (reset auto redirect)
Learn Differently: Analogy | Storytelling | Cheatsheet | Mindmap | Flashcards | Practical Projects | Code Examples | Common Mistakes
Check Understanding: Generate Quiz | Interview Me | Refactor Challenge | Assessment Rubric | Next Steps
صورتمسئله (یکخطی): طراحی end-to-end برای پخش ویدیو در مقیاس جهانی با UX روان.
حوزهٔ اصلی
- در محدوده: اپهای کاربر (وب/موبایل/TV), API Gateway, microservices, load balancing, ویدیو ingest/transcoding، CDN (Open Connect)، دیتاستورها (MySQL و Cassandra)، caching (EVCache/memcached)، استریم/لاگ (Chukwa → Kafka → Samza → S3/Elasticsearch)، سیستم recommendation با Spark/ML، observability.
- خارج از محدوده: جزئیات امنیتی عمیق، billing داخلی، و schemaهای دقیق API.
الویتهای غیرعملکردی: latency پایین در شروع پخش، availability بالا، مقیاسپذیری جهانی، هزینهٔ بهینه.
معماری High-Level (متنی)
- کلاینتها (web، mobile، TV/console) به frontendهای AWS از طریق ELB (دو لایه: DNS RR بین zoneها و سپس LB روی instanceها) وصل میشوند.
- API Gateway (Zuul) برای routing/auth/shaping/filters؛ ایزولیشن و circuit breaking با Hystrix. *(نکته: در ۲۰۲۵ برای JVM معمولاً Resilience4j رایجتر است.)*
- Microserviceها (REST/gRPC) برای login، homepage، search، recommendations، billing و…
- دیتا: MySQL برای user/billing (ACID) با master–master و replica خواندنی؛ Cassandra برای viewing history/دادههای بزرگ. *(میتوان به Aurora/Vitess هم فکر کرد.)*
- Cache: EVCache (بر پایهٔ memcached)؛ write به همهٔ کلاسترها، read از نزدیکترین. *(Redis برای ساختارهای دادهٔ غنیتر گزینهٔ جایگزین است.)*
- ویدیو pipeline: ingest استودیو → chunking → transcoding توزیعشده → variant/resolutionها → push به CDN Open Connect؛ انتخاب خودکار bitrate با ABR.
- دیتا pipeline: Chukwa → Kafka → Samza → مقصدها (S3/Elasticsearch) → داشبوردها (Kibana/Grafana).
- Open Connect: جعبههای CDN متعلق به Netflix در ISPها؛ consistent hashing روی نودها؛ caching پیشدستانه بر اساس محبوبیت/لوکیشن.
تریدآفهای اصلی
- نسبت cache hit جهانی در برابر هزینهٔ ذخیرهسازی در edge.
- تضمینهای ACID (MySQL) در برابر throughput/scale (Cassandra).
- سادگی کلاینت در برابر smart client برای انتخاب سرور/سوئیچ ABR.
- پیچیدگی عملیاتی (سرویسهای زیاد) در برابر چابکی و ایزولاسیون خطا.
ریسکها/خرابیهای شایع
- hot shard/hot key روی عناوین ترند؛ cache stampede.
- failureهای زنجیرهای بین microserviceها؛ timeouts نامناسب.
- قطعیهای منطقهای ISP/CDN، یا misconfiguration در ELB بین zoneها.
فلشکارت مرور ۵ دقیقهای
- س: چه چیزی routing/filters را در edge انجام میدهد؟ ج: Zuul Gateway. *(برای HTTP/3 میتوان Envoy/API Gateway را هم سنجید.)*
- س: چه چیزی جلوی cascading failure را میگیرد؟ ج: Hystrix با timeout/bulkhead/fallback.
- س: user/billing کجا ذخیره میشود و viewing history کجا؟ ج: MySQL و Cassandra.
- س: پخش از کجا انجام میشود؟ ج: نزدیکترین سرور Open Connect با ABR.
- س: latency/throughput API چگونه بهبود مییابد؟ ج: EVCache با read نزدیکترین کلاستر.
- س: ingest رویدادها/لاگها؟ ج: Chukwa → Kafka → Samza → S3/Elasticsearch.
دامنه/صنعت: vod، streaming، analytics
الگوهای محصول: video-on-demand، recommendation، cdn، caching، search-index، queue، job-scheduler، pub-sub، notification
نگرانیهای سیستمی: high-availability، low-latency، geo-replication، eventual-consistency، hot-key، backpressure، autoscaling
فناوریها: microservices، grpc، rest، kafka، mysql، cassandra، memcached، s3، elasticsearch، spark، cdn
(بسته به لایسنس/مدیریت، OpenSearch هم میتواند جایگزین ES باشد.)
پرامپت اصلی: ساخت Netflix برای استریم جهانی با UX روان؛ کنترلپلین در AWS و تحویل ویدیو از Open Connect.
Use Caseها
- کشف محتوا (homepage rows، search)، پخش با adaptive bitrate، ادامهٔ تماشا.
- شخصیسازی: ردیفها و artwork برای هر کاربر.
- پشتیبانی: logging برای debug مسائل کاربر/سیستم.
خارج از محدوده: auth/DRM سطحجزئی، تبلیغات؛ اشارهٔ گذرا به billing. APIها: در ویدیو مشخص نشدهاند.
آنچه در ویدیو آمده
- شروع سریع پخش و روانی playback؛ سرو از نزدیکترین edge؛ انتخاب مداوم بهترین سرور.
- «دو ابر»: کنترلپلین در AWS؛ data-plane ویدیو در Open Connect.
- ELB دولایه؛ Zuul + Hystrix؛ EVCache؛ MySQL (ACID) + Cassandra (Scale)؛ Spark/ML برای recommendation؛ Chukwa/Kafka/Samza → ES/S3.
فرضیات ملایم
- استقرار multi-region روی AWS با Route 53؛ autoscaling برای spikeها؛ جعبههای CDN در ISPهای جهان.
- در ویدیو عددگذاری نشده؛ از این بخش عبور میکنیم.
- کلاینتها: Web, iOS/Android/TV؛ smart clientها پیوسته بهترین سرور Open Connect را probe و در صورت لزوم mid-stream سوئیچ میکنند؛ ABR کیفیت را با پهنایباند تطبیق میدهد.
- Edge/Gateway: ELB (DNS RR بین zoneها → LB روی instanceها)؛ فیلترهای Zuul (inbound/endpoint/outbound) برای auth/routing/metrics/headers. *(HTTP/3/QUIC در edge میتواند start-up را بهتر کند.)*
- Services: HTTP/gRPC؛ Hystrix برای ایزولیشن وابستگیها با timeout/bulkhead/fallback.
- Storage: MySQL master–master + read replicas؛ Cassandra برای write سنگین/تاریخچه؛ EVCache برای تسریع read (SSD-backed).
- Ingest/Transcode: فایل منبع → chunk → صف → workerهای EC2 برای transcoding به resolution/bitrateهای متعدد → ذخیره روی S3 → push به Open Connect.
- Open Connect: caching پیشدستانه بر اساس محبوبیت جهانی/منطقهای؛ توزیع اشیا با consistent hashing.
- Data/Logs: Chukwa رویدادها را جمع میکند → Kafka → Samza → S3/Elasticsearch → داشبوردها.
- ML/Personalization: Spark مدلها را برای انتخاب/مرتبسازی ردیفها و انتخاب artwork آموزش میدهد.
- کراسپلتفرم (TV/Mobile/Web)؛ در وب معمولاً React برای سرعت شروع/مدولار بودن.
- انتخاب هوشمند سرور Open Connect؛ ABR برای سازگاری با bandwidth.
- سوئیچ ارائهدهنده در میانهٔ پخش وقتی مسیر بهتری پیدا شود.
- routing پویا، auth، shaping، security؛ فیلتر قبل/بعد از proxy؛ دستکاری header/metrics.
- امکان traffic splitting برای load test/canary؛ فیلتر bad requestها (مانند user-agent). (گزینههای مدرن: Envoy، Kong، Spring Cloud Gateway.)
- ایزولهسازی callهای راهدور؛ timeout؛ bulkhead؛ circuit-breaker با نرخ خطا؛ fallback؛ داشبورد متریک. (در ۲۰۲۵ معمولاً Resilience4j یا قابلیتهای service mesh متداولتر است.)
- write به همهٔ کلاسترها؛ read از نزدیکترین؛ throughput/latency را بهبود میدهد و هزینه را کم میکند؛ SSD برای ظرفیت بیشتر.
- تهدیدها: hot key روی عناوین ترند؛ راهکار: sharding/replication و request coalescing.
- MySQL: برای user/billing با master–master و replicaهای خواندنی؛ failover مبتنی بر DNS (Route 53). *(Failover مبتنی بر DNS کند است؛ HA مدیریتشده بهتر است.)*
- Cassandra: توزیعشده برای viewing history؛ فشردهسازی دورهای تاریخچهٔ قدیمی برای footprint کمتر.
- جریان: ingest → chunk → صف → EC2 transcoderها → نسخههای متعدد رزولوشن/bitrate → S3 → Open Connect؛ کلاینت با ABR کیفیت را تطبیق میدهد.
- *(codec ladder مدرن: AV1/HEVC بسته به دستگاهها.)*
- Chukwa رویدادها/لاگها را میگیرد → Kafka؛ Samza آنها را route/filter میکند به S3/Elasticsearch؛ داشبوردها برای debug signup/login/playback و resource usage.
- *(بسیاری از استکها امروز Kafka + Flink/Streams را ترجیح میدهند.)*
- مدلها: collaborative filtering و content-based؛ آموزش روی Spark؛ خروجی برای انتخاب/مرتبسازی ردیفها و آزمایش artwork استفاده میشود.
- Artwork Personalization: چندین thumbnail برای هر عنوان؛ رصد CTR/watch-time؛ انتخاب برنده برای سگمنتها.
- مدل: applianceهای Netflix در ISPها (رایگان برای شریک)؛ کاهش ترافیک ترانزیت و بهبود QoE؛ HA با قطعات افزونه.
- استراتژی cache: محتوای جهانی همهجا cache؛ محتوای محلی بر اساس سابقهٔ مصرف؛ placement با consistent hashing.
| موضوع | گزینه A | گزینه B | گرایش ویدیو | منطق |
|---|---|---|---|---|
| Gateway | Zuul | Envoy/سایر | Zuul | در زمان نتفلیکس بلوغ فیلتر/روتینگ |
| Fault Tolerance | Hystrix | Resilience4j/mesh | Hystrix | مدل غنی timeout/bulkhead/fallback |
| OLTP | MySQL | Postgres/Managed | MySQL | ACID و ابزارهای موجود |
| Big Data Store | Cassandra | HBase/Dynamo-مانند | Cassandra | مقیاس برای تاریخچه/لاگ |
| Stream Proc | Samza | Flink/Streams | Samza | routing/filter روی Kafka |
(یادآوری: برای ۲۰۲۵ احتمالاً Envoy/Resilience4j/Flink رایجترند.)
- Replication/Consistency: MySQL master–master + replicas؛ Cassandra برای scale؛ EVCache نوشتن تکراری و خواندن محلی.
- Latency Budget: شروع سریع با edge نزدیک + cache؛ ABR جلوی stall را میگیرد.
- Load Shedding/Degradation: fallbackهای Hystrix؛ split مسیر در gateway؛ خواندن cache-first وقتی امن است.
- در ویدیو جزئیات خاصی جز اشارهٔ کلی به امنیت در gateway مطرح نشده است.
- متریک/لاگ/تریس: متریکهای Hystrix؛ Elasticsearch + داشبوردها برای ردیابی مشکلات کاربری/سیستمی (signup، login، playback).
- در ویدیو ذکر نشده است.
- در ویدیو ذکر نشده است.
- جداسازی control plane (AWS) از data plane (Open Connect).
- smart client + ABR برای مقابله با نوسان شبکه.
- gateway + circuit breaker برای جلوگیری از اثرات زنجیرهای خرابی.
- caching تهاجمی و locality-aware برای کاهش هزینه/latency.
- آمیختن ACID (MySQL) با scale-out (Cassandra) در جای مناسب.
- caching پیشدستانهٔ CDN و consistent hashing برای hit ratio بهتر.
- Open Connect: CDN اختصاصی Netflix در ISPها.
- ABR (Adaptive Bitrate): روشی برای تطبیق کیفیت ویدیو با پهنایباند.
- Zuul: API gateway برای routing/filters و traffic shaping.
- Hystrix: کتابخانهٔ latency/fault tolerance (timeout, bulkhead, fallback).
- EVCache: cache توزیعشدهٔ Netflix بر پایهٔ memcached.
- Chukwa/Kafka/Samza: زنجیرهٔ ingest/pub-sub/routing برای رویدادها/لاگها.
- بازبینی الگوهای gateway و circuit breaking.
- نمونهسازی ABR و استراتژیهای CDN caching.
- تمرین تریدآفها: SQL در برابر NoSQL؛ سیاستهای cache؛ edge در برابر origin.
- منبع ویدیو: https://www.youtube.com/watch?v=psQzyFfsUGU
- کانال: Tech Dummies - Narendra Lakshmana Gowda
- یادداشت: این سند خلاصهای از ویدیوی پیوندشده است.
من Ali Sol هستم، توسعهدهندهٔ PHP. بیشتر بدانید:
- وبسایت: https://alisol.ir
- لینکدین: https://www.linkedin.com/in/alisolphp