دیزاین سیستم یعنی ترجمه نیاز محصول به اجزای فنی که پایدار و قابل رشد باشند. این متن یک چارچوب سریع برای مصاحبه و پروژه واقعی ارائه میدهد.
مرحله ۱: جمعآوری نیاز
- اهداف کاربر، جریانهای کلیدی، معیار موفقیت (latency، دسترسپذیری، هزینه).
- حجم داده و رشد ماهانه، الگوی ترافیک (روزانه یا رویدادی).
مرحله ۲: مدل داده و قرارداد
- موجودیتها و رابطهها را ترسیم کنید؛ مالکیت داده هر سرویس را مشخص کنید.
- اسکیما و API نسخهدار با قوانین تکامل (backward compatible تا جای ممکن).
مرحله ۳: اجزای اصلی
- ورودی: API Gateway یا Load Balancer.
- پردازش: سرویسهای stateless با افقکشی (horizontal).
- ذخیرهسازی: انتخاب بین SQL/NoSQL بر اساس تراکنش و الگو دسترسی.
- کش: Redis/ CDN برای مسیرهای خواندنی پرتکرار.
مرحله ۴: قابلیت اطمینان
- SLO و بودجه خطا، هشدار بر اساس علائم (تاخیر، نرخ خطا).
- Retry با backoff و idempotency keys؛ circuit breaker.
- استراتژی دیپلوی: کاناری/blue-green.
مرحله ۵: مقیاس و هزینه
- ظرفیتسنجی اولیه: QPS، حجم ذخیره، پهنای باند.
- برنامه shard/partition برای رشد؛ archive برای داده سرد.
- انتخاب منطقه جغرافیایی با توجه به تأخیر و الزامات داده.
چکلیست
- دیاگرام توالی برای جریان اصلی.
- مسیرهای failure و fallback مشخص.
- observability (log/metric/trace) طراحی شده.
- ریسکها و trade-offها در یک ADR مستند.
این چارچوب پایهای است؛ با هر پروژه میتوانید اجزای خاص را عمیقتر کنید.
ادامه مطالعه