بازگشت به کتابخانهکتابخانه7.1چارچوب ۴ مرحله‌ای طراحی
طراحی سیستم نرم‌افزاریSYSTEM DESIGNاز صفر تا تسلط
v1.0.0
01مبانی و تصویر بزرگ
02Scalability و ظرفیت
03لایه داده
04Cache، Queue و جریان
05معماری نرم‌افزار
06قابلیت اطمینان و عملیات
07متد طراحی
08Case Study های واقعی
09سیستم‌های توزیع‌شده عمیق
10مهندسی تولید: داده، امنیت و کارایی
11تمرین پیشرفته و کیس‌استادی‌های مکمل
12زیر کاپوت دیتابیس و معماری داده
13وب بلادرنگ و پروتکل‌های مدرن
14سیستم‌های توزیع‌شده پیشرفته
15SaaS ،SRE ،امنیت و شبکه پیشرفته
16طراحی سیستم در عصر AI
17Case Study های تکمیلی
LESSON 7.1فصل ۷متد طراحی

چارچوب ۴ مرحله‌ای طراحی

  • ~۱۲ دقیقه
  • ۴ پرسش
  • متن را انتخاب کن تا هایلایت شود

از این به بعد هر مسئله‌ای — در مصاحبه یا کار — با همین چهار مرحله حل می‌شود. مصاحبه ۴۵ دقیقه‌ای را هم همین‌طور تقسیم کن: ۵ + ۵ + ۲۰ + ۱۵.

مرحله ۱ — فهم مسئله و مرزکشی (۵ دقیقه)

  • سؤال بپرس، فرض نکن: دقیقاً کدام قابلیت‌ها؟ (MVP، نه همه‌چیز)
  • مقیاس: چند کاربر؟ DAU؟ نسبت خواندن/نوشتن؟ اندازه داده‌ها؟
  • قیود کیفی: تأخیر هدف؟ سازگاری یا دسترس‌پذیری؟ (CAP را همین‌جا روشن کن)
  • خروجی مرحله: لیست کوتاه Functional + Non-functional که مصاحبه‌گر تأیید کرده.

مرحله ۲ — تخمین (۵ دقیقه)

  • QPS میانگین و پیک، حجم ذخیره‌سازی ۵ ساله، پهنای باند — با اعداد گرد (فصل ۲).
  • از تخمین نتیجه معماری بگیر: «۱۰۰:۱ خواندنی → کش محور» — تخمینِ بدون نتیجه، نمایش است.

مرحله ۳ — طراحی سطح بالا (۲۰ دقیقه)

  • جعبه‌ها را بکش: ClientCDN/LBAPI Gateway → سرویس‌ها → کش/DB/صف.
  • برای هر Functional Requirement مسیر داده را تعریف کن: نوشتنِ X کجا می‌رود؟ خواندنش از کجا؟
  • API های اصلی را بنویس (۳-۴ endpoint کلیدی).
  • مدل داده: جدول‌ها/کلیدها + انتخاب دیتابیس با دلیل.

مرحله ۴ — عمیق‌شدن و گلوگاه‌ها (۱۵ دقیقه)

  • مصاحبه‌گر (یا خودت) ۱-۲ جزء را انتخاب کن و عمیق شو: الگوریتم فید؟ شمارنده توزیع‌شده؟
  • گلوگاه‌یابی: SPOF ها؟ Hot Key؟ حد Shard ها؟ چه چیزی اول می‌شکند؟
  • Trade-off هایت را بلند بگو و گزینه رد شده را هم نام ببر — این تفاوت ارشد و مبتدی است.

نگاشت نیاز → ابزار (برگه تقلب)

اگر شنیدی…فکر کن به…
خواندن سنگینCache + CDN + Read Replica
نوشتن سنگینصف + Wide-Column + Sharding
بلادرنگ دوطرفهWebSocket + Pub/Sub
جستجوی متنیInverted Index / Elasticsearch
پول و موجودیACID + Idempotency + دفتر کل
فایل حجیمObject Storage + CDN + آپلود مستقیم
نزدیک‌ترین‌ها روی نقشهGeohash / Quadtree
محافظت از سرویسRate Limiter + Circuit Breaker

به زبان ساده

روش حل طراحی سیستم یعنی اول مسئله و عدد را روشن کنیم، بعد جعبه‌ها را با دلیل به هم وصل کنیم.

مثال واقعی

برای یک سامانه رأی‌گیری، ابتدا QPS و دقت لازم را می‌پرسیم؛ بعد می‌فهمیم Redis برای شمارش زنده و Kafka برای ثبت پایدار مناسب است.

دانش‌سنجی

آزمون درس

۴ Q
01
اولین کار در اتاق مصاحبه طراحی سیستم؟
02
«نسبت خواندن ۱۰۰:۱» مستقیماً کدام تصمیم را می‌سازد؟
03
برای «پیدا کردن نزدیک‌ترین راننده‌ها» چه ساختاری به ذهنت می‌رسد؟
04
کدام جمله در مصاحبه امتیاز «ارشد بودن» می‌گیرد؟