بازگشت به کتابخانهکتابخانه1.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 1.1فصل ۱مبانی و تصویر بزرگ

طراحی سیستم چیست و چرا؟

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

فرض کن می‌خواهی یک فروشگاه آنلاین بسازی. قبل از اینکه کد بزنی، باید چند تصمیم بزرگ بگیری: عکس کالاها کجا ذخیره شوند؟ اگر یک سرور خوابید، خرید مردم قطع می‌شود؟ فردا که به‌جای صد نفر، صد هزار نفر آمدند، سیستم می‌ترکد یا تحمل می‌کند؟

طراحی سیستم یعنی همین تصمیم‌ها. تو قطعه‌های یک نرم‌افزار را انتخاب می‌کنی — Server، دیتابیس، Queue، Cache — و معلوم می‌کنی این قطعه‌ها چطور با هم حرف بزنند. هدف ساده است: نیاز محصول برآورده شود، بدون اینکه پول و پیچیدگی الکی خرج کنیم.

هیچ جواب «همیشه درست» وجود ندارد. هر انتخابی یک چیز به تو می‌دهد و یک چیز می‌گیرد. به این معامله می‌گویند Trade-off. مثال: همه چیز را روی یک سرور بگذاری، ساختن خیلی ساده است؛ ولی همان یک سرور که خراب شود، کل سایت می‌خوابد. هنر تو این است که این معامله را با چشم باز انجام بدهی، نه اینکه معماری شرکت‌های بزرگ را چشم‌بسته کپی کنی.

فروشگاه کوچک در برابر عملیات بزرگ
چپ: یک صندوق و یک نفر. راست: صف، چند ایستگاه، انبار. هر دو فروشگاه‌اند؛ مقیاس و پیچیدگی‌شان یکی نیست — و همین Trade-off است.

دو سطح طراحی

وقتی می‌گوییم «طراحی»، معمولاً دو طبقه جدا را قاطی می‌کنیم. اگر قاطی‌شان کنی، یا در جزئیات کد غرق می‌شوی، یا یک نقشه زیبا می‌کشی که نمی‌شود پیاده‌اش کرد.

HLDHigh Level Design
طراحی سطح بالا: چه قطعه‌هایی داریم، داده کجا می‌ماند، و درخواست کاربر از کجا به کجا می‌رود. مثل نقشه شهر. موضوع اصلی این دوره همین است.
LLDLow Level Design
طراحی سطح پایین: کلاس‌ها، Interface، الگوریتم و شکل کد داخل هر قطعه. مثل پلان داخلی یک آپارتمان — مهم است، ولی تمرکز این دوره نیست.

این دوره درباره HLD است: تصویر بزرگ. اول جای ساختمان‌ها را روی نقشه شهر مشخص می‌کنیم؛ بعداً می‌شود رفت سراغ چیدمان داخل هر اتاق.

سه ستون هر سیستم خوب

قبل از اینکه ابزار انتخاب کنی، سه سؤال از خودت بپرس. سیستم خوب معمولاً در هر سه، نمره قبولی می‌گیرد. اگر یکی را کامل فدا کنی، دیر یا زود دردش را می‌بینی.

Scalability
وقتی کاربر و داده زیاد شدند، بتوانی ظرفیت اضافه کنی. نه اینکه کل معماری را از نو بسازی.
Reliability
اگر سخت‌افزار سوخت، نرم‌افزار باگ داشت، یا کسی دکمه اشتباه را زد، سیستم باز هم کار درست را انجام بدهد — یا حداقل داده را خراب نکند.
Maintainability
مهندس بعدی بتواند بفهمد چه خبر است، تغییر بدهد و ویژگی تازه اضافه کند. سیستمی که فقط سازنده‌اش می‌فهمد، محکوم به مرگ است.

در مصاحبه و سر کار، سؤال چیست؟

سؤال هیچ‌وقت «بهترین معماری دنیا چیست؟» نیست. سؤال این است: با این نیازمندی، این بودجه و این تیم، کدام Trade-off را می‌توانی دفاع کنی؟ گاهی سرعت را به دقت داده ترجیح می‌دهی، گاهی هزینه کم را به Latency خیلی پایین، گاهی سادگی را به انعطاف زیاد.

به زبان ساده

طراحی سیستم یعنی قبل از ساختن، با زبان آدمیزاد بفهمیم به چه قطعه‌هایی نیاز داریم و هر انتخاب چه قیمتی دارد.

مثال واقعی

مثل رستوران: برای بیست مشتری یک آشپزخانه کوچک کافی است. برای بیست هزار سفارش در روز باید صف، انبار و چند آشپزخانه داشته باشی — و هر کدام از این‌ها یک Trade-off است.

دانش‌سنجی

آزمون درس

۴ Q
01
HLD عمدتاً به چه چیزی می‌پردازد؟
02
کدام‌یک یک نیازمندی Non-functional است؟
03
جمله «همه‌چیز Trade-off است» یعنی چه؟
04
اولین قدم درست در طراحی هر سیستم چیست؟