আইটি অপারেশন — সাইট নির্ভরযোগ্যতা লাইভ মডেল

আপনি একটি ওয়েব সার্ভিসে অন-কল: ইনস্ট্যান্সের বহরের সামনে লোড ব্যালান্সার, ডাটাবেসের সামনে ক্যাশ, এবং 99.9 % উপলব্ধতার লক্ষ্য। প্রতি মিনিটে মডেল পাঠ্যবইয়ের সূত্র থেকে সারির বিলম্ব, টাইমআউট, ক্যাশ হিট ও ডাটাবেস লোড হিসাব করে — এবং আপনার সিদ্ধান্তের খরচ কত।

আপনি যা শিখবেন

সিমুলেটর

সময় 0 মিনিট
অনুরোধ 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]অনুমান: ওয়ার্কারের সংখ্যা, সার্ভিস সময়, ডাটাবেসের সক্ষমতা, ক্যাশের আকার, পূরণের গতি, দাম এবং খারাপ বিল্ডের ত্রুটির হার মাঝারি ওয়েব সার্ভিসের দৃষ্টান্তমূলক মান।
Erlang 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

যাঁরা পেশা হিসেবে এটি করেন

শিক্ষামূলক মডেল — পরিচালন-সংক্রান্ত সিদ্ধান্তের জন্য নয়। বাস্তব সাইট প্রতিটি ধ্রুবক নিজেদের যন্ত্রপাতি ও তথ্যের সঙ্গে ক্যালিব্রেট করে।