بازگشت به کتابخانهکتابخانه2.1نیازمندی‌ها، SLA و ۹ها
طراحی سیستم نرم‌افزاری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 2.1فصل ۲Scalability و ظرفیت

نیازمندی‌ها، SLA و ۹ها

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

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

بیشتر معماری را دومی تعیین می‌کند. «پیام بفرست» یک قابلیت است. «۹۹٪ پیام‌ها زیر ۲۰۰ میلی‌ثانیه برسند» یک کیفیت است. اگر کیفیت را نپرسی، جعبه و فلش می‌کشی برای مسئله‌ای که هنوز اندازه ندارد.

بانک و اندازه‌گیری زمان انتظار
یک نفر با کرونومتر زمان باجه را می‌نویسد؛ یکی در صف معطل مانده. کیفیت حرف نیست — عدد است. همان شغل SLI و SLO و SLA.

دو جور سؤال

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

Functional
شغلش این است که بگوید سیستم چه کاری انجام دهد: ارسال پیام، آپلود عکس، جستجو. بدون این‌ها محصول وجود ندارد.
Non-functional
شغلش این است که بگوید همان کار چقدر خوب انجام شود: Latency، Availability، امنیت، هزینه، حجم داده و رشد. معماری معمولاً از این‌جا شکل می‌گیرد.

سه اسم برای اندازه‌گیری کیفیت

برگرد به بانک. یک نفر با کرونومتر زمان انتظار را می‌نویسد. تیم یک هدف داخلی می‌گذارد: «۹۹٪ مشتری‌ها زیر پنج دقیقه». بعد در قرارداد با شرکت بزرگ می‌نویسند اگر این قول شکست، جریمه. این سه نقش اسم دارند.

SLI
خودِ عدد اندازه‌گیری‌شده. مثل «p99 Latency = 180ms» یا «Error Rate = 0.02٪». بدون SLI کیفیت حرف است، نه عدد.
SLO
هدف داخلی تیم روی همان عدد. «p99 باید زیر 200ms بماند». قول تیم به خودش است، هنوز قرارداد حقوقی نیست.
SLA
تعهد قراردادی به مشتری، معمولاً با جریمه. «۹۹.۹٪ Uptime وگرنه پول برمی‌گردد». SLA را از روی SLO واقعی می‌نویسی، نه از روی غرور.

به p99 دقت کن. میانگین دروغ می‌گوید. اگر میانگین 80ms باشد ولی p99 برابر 2s، یعنی از هر ۱۰۰ درخواست یکی دو ثانیه طول می‌کشد — و کاربر پرمصرف تو دقیقاً همان را می‌بیند.

Availability: هر ۹ چقدر می‌ارزد؟

وقتی می‌گویند سیستم «سه تا ۹» دارد، یعنی چند ساعت در سال اجازه خوابیدن دارد. اسم این خوابیدن Downtime است. هر ۹ اضافه، هزینه را چند برابر می‌کند — Failover خودکار، ماشین اضافه، تیم کشیک.

سطحDowntime در سالواقعیت
99%~۳.۷ روزبرای اغلب محصولات قابل قبول نیست
99.9%~۸.۸ ساعتاستاندارد رایج سرویس‌های وب
99.99%~۵۳ دقیقهنیازمند Failover خودکار و Redundancy جدی
99.999%~۵.۳ دقیقهبسیار گران؛ فقط زیرساخت‌های حیاتی

به زبان ساده

اول بفهم سیستم چه می‌کند، بعد بفهم آن کار چقدر خوب باید انجام شود. SLI عدد است، SLO هدف تیم، SLA قول قراردادی.

مثال واقعی

در بانک یک نفر با کرونومتر زمان باجه را می‌نویسد. تیم می‌گوید ۹۹٪ زیر پنج دقیقه؛ قرارداد همان را با جریمه می‌نویسد.

دانش‌سنجی

آزمون درس

۴ Q
01
«جستجو باید برای ۹۹٪ درخواست‌ها زیر 300ms جواب دهد» چیست؟
02
چرا p99 مهم‌تر از میانگین است؟
03
99.99٪ Availability یعنی حداکثر حدوداً چقدر Downtime در سال؟
04
کدام سؤال برای کشف نیازمندی Non-functional است؟