اتواسکیل بر اساس ترافیک HTTP در App Platform دیجیتالاوشن
خلاصهٔ کاملتر
DigitalOcean App Platform تا پیش از این فقط برای پلنهای Dedicated CPU قابلیت autoscaling داشت، یعنی کسایی که روی پلنهای Shared CPU کار میکردن اصلاً راهی برای مقیاسپذیری افقی خودکار نداشتن. حالا این محدودیت برداشته شده و request-based autoscaling روی هر دو نوع پلن فعاله.
مشکل اصلی autoscaling مبتنی بر CPU اینه که CPU یه شاخص تأخیریه؛ یعنی کانتینرها باید کاملاً تحت فشار باشن تا سیستم بفهمه باید اسکیل کنه، و تا اون موقع کاربرا منتظر موندهان. request-based autoscaling به جاش به دو سیگنال واقعیتر نگاه میکنه:
- Requests per second per instance: تعداد درخواستهایی که هر کانتینر الان داره مدیریت میکنه
- P95 request latency: زمان پاسخی که ۹۵٪ کاربرا تجربه میکنن
وقتی ترافیک بالا میره و یکی از این آستانهها رد بشه، کانتینرهای جدید فوری راهاندازی میشن. وقتی بار کم بشه و همه متریکها زیر حد باشن، تعداد کانتینرها کاهش پیدا میکنه. روی پلنهای Dedicated هم میشه این دو متریک رو با CPU-based autoscaling ترکیب کرد.
برای تنظیم آستانههای مناسب، دیجیتالاوشن پیشنهاد میکنه اول از تب Insights در کنسول App Platform استفاده کنی. این تب نمودار HTTP Ingress Request Rate و P95 Latency رو نشون میده تا بتونی رفتار سرویست رو زیر بار عادی بشناسی و بعد قوانین autoscaling رو تنظیم کنی.
برای تنظیم از طریق app spec، یه بلاک autoscaling به سرویست اضافه میکنی. مثلاً این کانفیگ بین ۱ تا ۱۰ کانتینر اسکیل میکنه و هدفش ۱۰۰ RPS و تأخیر P95 حداکثر ۵۰۰ میلیثانیهست:
autoscaling:
min_instance_count: 1
max_instance_count: 10
metrics:
requests_per_second:
per_instance: 100
request_duration:
p95_milliseconds: 500چند نکته مهم هم هست: این قابلیت فقط برای web service componentهایی که ترافیک HTTP خارجی دارن کار میکنه و با Worker یا Function component سازگار نیست. همچنین نمیشه همزمان با Scale to Zero (حالت خواب غیرفعالی) فعال باشه. تصمیمات اسکیل بر اساس پنجره زمانی ۵ دقیقهای گرفته میشن تا واکنش به بار پایدار باشه، نه به اسپایکهای لحظهای.
نکات کلیدی:
- request-based autoscaling حالا روی پلنهای Shared و Dedicated CPU هر دو فعاله
- اسکیل بر اساس RPS و تأخیر P95 انجام میشه، نه CPU
- قبل از تنظیم آستانهها، از تب Insights برای شناخت الگوی ترافیک عادی اپت استفاده کن
- فقط برای web serviceها قابل استفادهست و با Scale to Zero ناسازگاره
- تنظیم هم از کنترل پنل و هم از طریق app spec امکانپذیره




