System Design یا سیستم دیزاین فرایند تبدیل نیازمندی‌های یک محصول به طراحی قابل پیاده‌سازی برای اجزا، دیتابیس، API، ارتباطات و زیرساخت است. سیستم دیزاین فقط انتخاب میکروسرویس و کش نیست. ابتدا باید معلوم باشد سیستم چه کاری انجام می‌دهد، چه تعداد کاربر دارد، چه خطاهایی قابل تحمل است و چه محدودیت‌هایی از نظر هزینه و زمان وجود دارد.

گام‌های طراحی یک سیستم

مرحلهپرسش کلیدینمونه خروجی
۱. نیازمندی فانکشنالکاربر دقیقاً چه کارهایی می‌تواند انجام دهد؟ثبت و پیگیری سفارش
۲. نیازمندی نان‌فانکشنالچقدر سریع و پایدار باشد؟تاخیر پاسخ و دسترس‌پذیری هدف
۳. برآورد ظرفیتچند درخواست و چه حجم داده‌ای؟RPS، حجم ذخیره‌سازی، ترافیک
۴. مدل داده و APIچه موجودیت‌ها و قراردادهایی لازم‌اند؟Orders، Payments و Endpointها
۵. انتخاب معماریمرز ماژول‌ها و مسیر درخواست چیست؟ماژولار مونولیت یا سرویس مستقل
۶. تست شکست و رشدوقتی دیتابیس یا شبکه از دسترس خارج شد؟Timeout، Retry، Queue و Backup
۷. ارزیابی و مستندسازیچه تصمیم‌هایی را چرا گرفتیم؟Architecture Decision Record

مثال طراحی بخش ثبت سفارش

Client -> API / Checkout
          -> Orders module -> Database
          -> Outbox table -> Message Broker -> Inventory worker
                                         -> Notification worker
Metrics / Logs / Traces observe the complete flow

در سیستم فروشگاهی، ایجاد سفارش و ثبت رویداد می‌تواند داخل یک تراکنش دیتابیس انجام شود. سپس Worker رویداد را از Outbox منتشر می‌کند تا فرایندهای غیرفوری جدا از مسیر HTTP پردازش شوند. بسته به مقیاس، بسیاری از این اجزا حتی می‌توانند در یک مونولیت ماژولار قرار بگیرند.

ظرفیت تقریبی چگونه حساب می‌شود؟

daily_requests = 1_200_000
average_rps = daily_requests / 86400
peak_factor = 8
peak_rps = average_rps * peak_factor
print(round(average_rps, 1), round(peak_rps))  # 13.9 111

این اعداد فرضی‌اند و ضریب پیک باید از داده واقعی به دست آید. علاوه بر RPS، الگوی خواندن و نوشتن، اندازه payload، نرخ خطا، هزینه و اندازه داده در برآورد مهم‌اند.

اشتباه رایج

در مصاحبه یا پروژه واقعی، فهرست کردن Redis، Kafka و Kubernetes بدون نیازمندی، طراحی سیستم محسوب نمی‌شود. هر ابزار باید دلیل مشخصی در معماری داشته باشد.

اصطلاحات فنی: معماری نرم‌افزار، دیتا اینتنسیو، نیازمندی فانکشنال، نیازمندی نان‌فانکشنال، شاردینگ، کشینگ.