মাইক্রোসার্ভিসের একটি মূল সুবিধা হল প্রতিটি সেবাকে স্বাধীনভাবে স্কেল করা যাতে এর নিজস্ব লোডের সাথে মেলে, পুরো অ্যাপটি স্কেল করার পরিবর্তে। বোতলজনক খুঁজে পাওয়া তখন প্রতি-সেবা এবং প্রতি-হপ পরিমাপের বিষয়।
মাইক্রোসার্ভিসের একটি মূল সুবিধা হল প্রতিটি সেবাকে স্বাধীনভাবে স্কেল করা যাতে এর নিজস্ব লোডের সাথে মেলে, পুরো অ্যাপটি স্কেল করার পরিবর্তে। বোতলজনক খুঁজে পাওয়া তখন প্রতি-সেবা এবং প্রতি-হপ পরিমাপের বিষয়।
# Kubernetes HPA: scale orders on CPU
minReplicas: 3
maxReplicas: 20
metric: cpu
targetUtilization: 70 # add pods when avg CPU > 70%
1. Metrics: which service has high latency / saturation? (RED/USE)
2. Traces: which SPAN in the request is slow?
3. Drill in: DB query? lock? N+1 calls? GC pause?
Gateway ──┤ Orders ──┤ Payments ████████████ ← 80% of latency here
Inventory ─┤
⚠️ Chatty synchronous calls (fan-out per request)
⚠️ Shared/overloaded database
⚠️ Missing or cold cache
⚠️ Unbounded retries amplifying load
এমন একটি সেবা স্কেল করা যার বোতলজনক হল একটি ভাগ করা ডেটাবেস কেবল আরও বেশি লোড DB-তে নিয়ে আসে — প্রকৃত সীমাবদ্ধতা স্কেল করুন, লক্ষণ নয়।
স্বাধীন স্কেলিং আপনাকে ক্ষমতা ব্যয় করতে দেয় যেখানে লোড সঠিকভাবে, যা একটি মনোলিথকে সম্পূর্ণভাবে স্কেল করার চেয়ে অনেক সস্তা।
কিন্তু অন্ধ স্কেলিং অর্থ নষ্ট করে এবং জিনিসগুলি খারাপ করতে পারে; প্রতি-সেবা মেট্রিক্স এবং প্রতি-হপ ট্রেস পরিমাপ করা হল যা আপনাকে সঠিক সীমাবদ্ধতা বলে যা সংশোধন করতে হবে।