آئی ٹی آپریشنز — سائٹ کی قابلِ اعتمادی براہِ راست ماڈل

آپ ایک ویب سروس کے لیے آن کال ہیں: انسٹینسز کے فلیٹ کے سامنے لوڈ بیلنسر، ڈیٹا بیس کے سامنے کیش، اور 99.9 % دستیابی کا ہدف۔ ہر منٹ ماڈل قطار کی تاخیر، ٹائم آؤٹ، کیش ہٹس اور ڈیٹا بیس لوڈ نصابی فارمولوں سے نکالتا ہے — اور آپ کے فیصلوں کی قیمت بھی۔

آپ کیا سیکھیں گے

سمیولیٹر

وقت 0 min
درخواستیں 1125 · ایرر ریٹ 0.00% · p99 لیٹنسی 342 ms · سروس دیتے انسٹینس 10 (+0) · کیش ہٹ ریٹ 77% · ڈیٹا بیس کا استعمال 19% · بچا ہوا ایرر بجٹ (30 دن) 50.0%⇉1125 درخواست/سیکنڈ▶▶▶▶▶▶▶▶▶▶······························▶ 10 · ⚙ 0 · 52% · p99 342 msفلیٹ کا استعمال 52%کیش ہٹ ریٹ 77%ڈیٹا بیس کا استعمال 19%⚠ 0.00% · 🔥 0.0×50%$ 4.00/h · Σ $0.00
  • سروس دیتا انسٹینس
  • شروع ہوتا انسٹینس
  • خراب بلڈ پر انسٹینس
  • خالی جگہ
  • آتی ہوئی درخواستیں

کنٹرولز

فلیٹ کی نچلی حد۔ بڑھانے سے انسٹینس فوراً شروع ہوتے ہیں — پھر بھی سروس دینے سے پہلے بوٹ کی تاخیر چاہیے۔

استعمال پر ہدف کی پیروی؛ جب تک انسٹینس شروع ہو رہے ہوں نیا اسکیل آؤٹ نہیں۔ بند = ٹھیک کم از کم۔

کم = زیادہ گنجائش اور زیادہ خرچ۔ ناپا گیا استعمال 100 % سے زیادہ نہیں ہو سکتا، اس لیے سیر شدہ فلیٹ صرف قدم بہ قدم بڑھتا ہے۔

لمبا TTL = زیادہ ہٹس، مگر جواب پرانے ہو سکتے ہیں (اوسط عمر ≈ TTL/2)۔

6 منٹ تک گرم کیز لوڈ کرتا ہے (فی منٹ کیش کا +12 %) اضافی 600 ڈیٹا بیس کوئری/s کی قیمت پر۔

کم ترجیح والے 30 % (پری فیچ، بیچ، کرالر) کا حصہ جو لوڈ بیلنسر پر "بعد میں کوشش کریں" کے ساتھ مسترد ہوتا ہے۔

بھاری فیچر ہر درخواست پر 20 ms CPU اور ایک ڈیٹا بیس کوئری بڑھاتا ہے۔ بند = نرم تنزلی۔

آخری درست بلڈ کو نئے فلیٹ پر دوبارہ ڈیپلائے کرتا ہے (5 منٹ، دو بار بل ہوتا ہے)، پھر ٹریفک سوئچ کرتا ہے۔ دوبارہ دبانے سے تیاری نئے سرے سے شروع ہوتی ہے؛ اگر کوئی خراب بلڈ لائیو نہ ہو تو صرف پیسے خرچ ہوتے ہیں۔

اشاریے

ایرر ریٹ
0.00%
معمول
p99 لیٹنسی
342ms
معمول
بچا ہوا ایرر بجٹ (30 دن)
50.0%
معمول
فلیٹ کا استعمال
52%
معمول
برن ریٹ (1 h)0.0 ×
درخواستیں1125 req/s
سروس دیتے انسٹینس10
شروع ہوتے انسٹینس0
کیش ہٹ ریٹ77 %
ڈیٹا بیس کا استعمال19 %
روکا گیا ٹریفک0 %
فلیٹ کی لاگت4.00 $/h
اب تک کی لاگت0.00 $
کیش جوابات کی اوسط عمر30 s
خراب بلڈ پر ٹریفک0 %
سفارشات دستیاب100 %

رجحان

ایرر ریٹ: — %20.000.00

بحرانی منظرنامے

سطح 1 · خراب ریلیز

09:10 بجے نئی بلڈ جاری ہوتی ہے۔ مہینہ پہلے ہی سخت رہا ہے: ایرر بجٹ کا صرف 20 % باقی ہے۔ ڈیپلائے کے چند منٹ بعد برن ریٹ پیج بجتا ہے۔ بجٹ کی حفاظت کریں۔

  • آخر میں بچا ایرر بجٹ ≥ 18.5 %
  • ڈیپلائے کے بعد اوسط ایرر ریٹ ≤ 0.65 %
  • فلیٹ کی لاگت ≤ $9.50

سطح 2 · اچانک ہجوم

سروس کا ایک لنک تیزی سے پھیل رہا ہے اور آج صبح کسی وقت ٹریفک میں اچانک اضافے کی توقع ہے — کوئی نہیں جانتا کب، یا کتنا بڑا۔ آج نئے انسٹینسز کو بوٹ ہونے میں 8 منٹ لگتے ہیں۔ جب وہ آئے تو خالی گنجائش پر پیسہ جلائے بغیر غلطیاں اور تاخیر کم رکھیں۔

  • اوسط ایرر ریٹ ≤ 0.2 %
  • اوسط p99 لیٹنسی ≤ 400 ms
  • اوسط روکا گیا ٹریفک ≤ 5 %
  • کل لاگت ≤ $21
  • سفارشات ≥ 85 % وقت دستیاب

سطح 3 · ٹھنڈا کیش

دوپہر کی چوٹی پر ایک دیکھ بھال اسکرپٹ پورا کیش خالی کر دیتا ہے۔ اب ہر درخواست ڈیٹا بیس پر جاتی ہے، جو معمول کے 85 % ہٹ ریٹ کے لیے بنایا گیا تھا۔ ڈیٹا بیس پر بوجھ ڈالے بغیر سروس بحال کریں۔

  • اوسط ایرر ریٹ ≤ 1.5 %
  • پہلے منٹ کے بعد ڈیٹا بیس کا استعمال کبھی 90 % سے اوپر نہ ہو
  • کیش جوابات کی اوسط عمر اوسطاً ≤ 90 s
  • کل لاگت ≤ $9
  • سفارشات ≥ 80 % وقت دستیاب
  • اوسط روکا گیا ٹریفک ≤ 5 %

بنیاد — اعداد کے پیچھے ماڈل

ہر تعلق جو سمیولیٹر استعمال کرتا ہے، اس کے ماخذ کے ساتھ۔ مفروضے کے طور پر نشان زد مستقل توضیحی کیلیبریشنز ہیں۔

درخواستیں روزانہ منحنی اور خلل کی پیروی کرتی ہیں؛ فی منٹ تعداد بے ترتیب ہے (پوائسن، نارمل تخمینہ) تھوڑے اچانک پن کے ساتھ۔
λ(t) = base × (1 + 0.25·sin(2π(t + clock − 6 h)/24 h)) × surge(t), clock = time of day at the start (peak at 12:00); count/min ≈ N(60λ, √(60λ)) × (1 + N(0, 0.02))[6]مفروضہ: ورکرز کی تعداد، سروس کے اوقات، ڈیٹا بیس کی گنجائش، کیش کا سائز، دوبارہ بھرنے کی رفتار، قیمتیں اور خراب بلڈ کی خرابی کی شرح ایک درمیانی ویب سروس کی مثالی قدریں ہیں۔
ارلانگ C: M/M/N نظام میں اس کا امکان کہ درخواست کو فارغ ورکر کے لیے انتظار کرنا پڑے۔
N = instances × 16 workers, a = λ·S; C(a, N) = B / (1 − (a/N)(1 − B)), B = Erlang B[3][6]
انتظار کے وقت کی دم: t سے زیادہ انتظار کا امکان قوتِ نمائی طور پر گھٹتا ہے؛ 2 s ٹائم آؤٹ پر ابھی منتظر درخواستیں ناکام ہوتی ہیں۔ گنجائش سے آگے، زائد ناکام ہوتا ہے۔
P(W > t) = C·e^(−(N/S − λ)·t); timeouts = P(W > 2 s); a ≥ N ⇒ failed share = 1 − N/a[3]
سروس ٹائم اور انتظار کے وقت کے کوانٹائلز سے p99 لیٹنسی۔
p99 ≈ S·ln 100 + ln(C/0.01)/(N/S − λ) (service + waiting quantile, an approximation)[3][6]تخمینہ: سروس اور انتظار کے کوانٹائل جمع کرنا ان کے مجموعے کا عین p99 نہیں (یہ تھوڑا زیادہ یا کم ہو سکتا ہے)؛ ہر منٹ کے اندر قطار کو مستحکم مانا گیا ہے کیونکہ درخواستیں ملی سیکنڈ میں ہوتی ہیں۔
لٹل کا قانون: مصروف ورکرز = آمد کی شرح × سروس میں وقت۔
busy workers L = λ·S ⇒ utilization = λ·S / N[4]
TTL کیش: بے ترتیب درخواستوں کے ساتھ ہر مس ایک TTL مدت شروع کرتا ہے جس میں درخواستیں ہٹ ہوتی ہیں۔
hit = warm × rT/(1 + rT), r = λ / 20,000 objects; mean age of a cached answer ≈ T/2[5]
کیش مس ڈیٹا بیس پر لوڈ ڈالتے ہیں؛ اس کی قطار کی تاخیر اسے چھونے والی ہر درخواست کو سست کرتی ہے، جو ایپ ورکرز کو بھی بھرتی ہے۔
DB load = λ·q·(1 − hit); query time = 5 ms/(1 − ρ_db) (≤ 250 ms); S = S_app + (1 − hit)·q·query time[6]مفروضہ: ورکرز کی تعداد، سروس کے اوقات، ڈیٹا بیس کی گنجائش، کیش کا سائز، دوبارہ بھرنے کی رفتار، قیمتیں اور خراب بلڈ کی خرابی کی شرح ایک درمیانی ویب سروس کی مثالی قدریں ہیں۔
SLO اور ایرر بجٹ: برن ریٹ بتاتا ہے کہ بجٹ اجازت سے کتنے گنا تیزی سے خرچ ہو رہا ہے۔
budget = 1 − SLO = 0.1 %; burn = error rate / 0.1 %; Δbudget per min = burn / 43,200; burn (1 h) = mean error rate over the last 60 min / 0.1 % (window pre-filled with the opening minute)[1][2]
بوٹ کی تاخیر اور کول ڈاؤن کے ساتھ ہدف کی پیروی کرنے والا آٹو اسکیلر۔
desired = ⌈serving × utilization / target⌉ (utilization saturates at 100 %); new instances serve after the boot delay[6]مفروضہ: ورکرز کی تعداد، سروس کے اوقات، ڈیٹا بیس کی گنجائش، کیش کا سائز، دوبارہ بھرنے کی رفتار، قیمتیں اور خراب بلڈ کی خرابی کی شرح ایک درمیانی ویب سروس کی مثالی قدریں ہیں۔
ماڈل میں استعمال ہونے والے دیگر آپریشنل مستقل۔
16 workers/instance · app time 50 ms (+20 ms and +1 query with the feature on) · 2 queries/request · DB 4,000 queries/s · 20,000 hot objects · cache refill τ = 30 min (slower while the DB is saturated) · warm-up job +12 %/min for 6 min, +600 queries/s · timeout 2 s · 30 % low-priority traffic · bad build +5 % errors, ×1.25 CPU · rollback 5 min · $0.40 per instance-hour · scale-in by ≤ 20 % of the fleet after 10 quiet minutes · up to 40 instancesمفروضہ: ورکرز کی تعداد، سروس کے اوقات، ڈیٹا بیس کی گنجائش، کیش کا سائز، دوبارہ بھرنے کی رفتار، قیمتیں اور خراب بلڈ کی خرابی کی شرح ایک درمیانی ویب سروس کی مثالی قدریں ہیں۔

بے ترتیبی: سیڈ والا mulberry32 جنریٹر؛ استعمال شدہ تقسیمیں — یکساں، ایکسپونینشل (الٹا CDF)، نارمل (Box–Muller)، پوائسن (Knuth)۔ سیڈ دکھایا جاتا ہے اور شیئر کیا جا سکتا ہے۔

ماخذ

  1. Site Reliability Engineering — Ch. 3 Embracing Risk (error budgets), Ch. 4 Service Level Objectives — Beyer, Jones, Petoff, Murphy (eds.), O'Reilly, 2016
  2. The Site Reliability Workbook — Ch. 5 Alerting on SLOs (burn rate; 14.4× over 1 h = 2 % of a 30-day budget) — Beyer, Murphy, Rensin, Kawahara, Thorne (eds.), O'Reilly, 2018
  3. Teletraffic Engineering Handbook — Erlang C formula; waiting-time distribution for M/M/n, FCFS — ITU-D Study Group 2 Question 16/2 (V. B. Iversen), 2005
  4. J. D. C. Little — A Proof for the Queuing Formula: L = λW — Operations Research 9(3):383–387, 1961
  5. J. Jung, A. W. Berger, H. Balakrishnan — Modeling TTL-based Internet Caches — IEEE INFOCOM 2003, 2003
  6. M. Harchol-Balter — Performance Modeling and Design of Computer Systems: Queueing Theory in Action (M/M/k, server farms, capacity provisioning) — Cambridge University Press, 2013

یہ کام روزی کے لیے کون کرتا ہے

تعلیمی ماڈل — عملی فیصلوں کے لیے نہیں۔ حقیقی سائٹس ہر مستقل کو اپنے آلات اور ڈیٹا کے مطابق ترتیب دیتی ہیں۔