عددی که اهمیت دارد، مجموع نیست
هزینه سالانه ششرقمی توکن برای یک اپراتور واحد، نقطه عطفی نیست که ارزش جشن داشته باشد. این نشانهای است که سیستم از نقطهای فراتر رفته که کسی بتواند آن را از یک میانگین ترکیبی استنتاج کند. وقتی یک بار کاری به آن مقیاس میرسد، پرسش مهندسی جالب دیگر این نیست که عاملها چقدر خودمختاری دارند. بلکه این است که چه کسری از ترافیک به لایه مدل درست هدایت میشود، و آیا آن کسر اندازهگیری میشود یا فرض.
در نظر بگیرید که یک ناوگان عامل تککاربره در آن سطح هزینه واقعاً چه شکلی است. بیشتر فراخوانیها ارزاناند: گامهای طبقهبندی کوتاه، ساخت آرگومان فراخوانی ابزار، بازرتبهبندی بازیابی، خلاصهسازی پاسخ ابزاری که دور انداخته خواهد شد. دُمی کوچک گران است: برنامهریزی بلندمدت، تعمیر کد در برابر تست شکستخورده، ترکیب چندسندی که مدل باید شواهد متناقض را در بافت نگه دارد. نسبت بین این دو جمعیت، متغیر طراحی است. اگر فراخوانیهای ارزان به لایه گران فرستاده شوند، بودجه بدون هیچ افزایش کیفیت متناظر باد میکند. اگر فراخوانیهای گران به لایه ارزان فرستاده شوند، بودجه سالم به نظر میرسد در حالی که وظایف سخت بیصدا شکست میخورند.
میانگین ترکیبی هر دو شکست را پنهان میکند. میانگین هزینه هر درخواست هیچ چیزی درباره اینکه آیا ناوگان بیش از حد تأمین شده یا نه نمیگوید، زیرا تعداد کمی فراخوانی صحیح بسیار گران و تعداد زیادی فراخوانی غیرضروری بسیار گران همان میانگین را تولید میکنند. آنچه نیاز دارید توزیع هزینه هر وظیفه است: شکل هزینه در وظایف تکمیلشده، تفکیکشده بر اساس کلاس وظیفه. توزیعی با سر نازک و دُم سنگین سیستمی است که کارش را انجام میدهد — کار ارزان روی مدلهای ارزان، کار سخت تشدیدشده. توزیعی بدون هیچ دُمی مشکوک است. معمولاً یعنی وظایف سخت ارزان حل نمیشوند؛ بلکه رها، بریده یا قبل از تکمیل کنار گذاشته میشوند، و منحنی هزینه فقط فراخوانیهایی را میشمارد که برگشتهاند.
این تمایز — تکمیلشده در برابر تلاششده — جایی است که بیشتر داشبوردهای توکن شکست میخورند. آنها توکن به ازای درخواست را گزارش میکنند چون API همان را برمیگرداند. عددی که بودجه شما را اداره میکند توکن به ازای وظیفه تکمیلشده است، و شکاف بین این دو هزینه شکست است.
مسیریابی یک طبقهبند با بودجه تأخیر است
هر درخواست در یک ناوگان خوبساخته از یک پیشطبقهبند ارزان قبل از شروع فراخوانی گران عبور میکند. آن طبقهبند به یک پرسش پاسخ میدهد: این وظیفه به کدام لایه مدل نیاز دارد؟ روی یک مدل کوچک، یک لایه قواعد، یا یک مقایسه تعبیه سبک در برابر مجموعهای برچسبخورده از وظایف گذشته اجرا میشود. کارش این است که تصمیم مسیریابی را به اندازه کافی ارزان بگیرد که خود تصمیم به یک ردیف هزینه تبدیل نشود.

طبقهبند هم بودجه تأخیر دارد و هم بودجه هزینه. اگر پیشطبقهبندی رفتوبرگشتهایی اضافه کند که کاربر حسش کند، اپراتورها آن را غیرفعال میکنند و همه چیز را به طور پیشفرض به مدل بزرگ میفرستند. این رایجترین راهی است که سیاستهای مسیریابی میمیرند: نه از طریق طبقهبندی بد، بلکه از طریق تأخیری که مسیر درست را برای حفظ کردن خیلی کند کرده است.
مسیریابیهای نادرست در دو جهت میآیند و متقارن نیستند.
- مسیریابی نادرست به بالا یک رویداد هزینه است. وظیفهای که مدل کوچک میتوانست انجام دهد به مدل بزرگ میرود. کیفیت خوب است؛ بودجه خطا را جذب میکند. تشخیص گذشتهنگر آنها ارزان است با بازپخش وظیفه در برابر لایه ارزانتر.
- مسیریابی نادرست به پایین یک رویداد کیفیت است. وظیفهای که به مدل بزرگ نیاز داشت از مدل کوچک پاسخ مطمئن، قابل قبول و غلط میگیرد. تشخیص آنها گران است چون شکست بیصداست، و وقتی یک عامل بر اساس خروجی غلط عمل کند تشدید میشوند.
این دو به معیارهای جداگانه نیاز دارند. یک رقم واحد «دقت مسیریابی» باعث میشود ناوگانی که هرگز تشدید نمیکند به خوبی ناوگانی به نظر برسد که درست تشدید میکند. نرخ مسیریابی نادرست به بالا را به عنوان نسبت هزینه و نرخ مسیریابی نادرست به پایین را به عنوان نرخ شکست وظیفه ردیابی کنید، و هرگز آنها را در یک عدد میانگین نگیرید.
خود طبقهبند باید روی همان توزیع وظیفهای ارزیابی شود که عاملها میبینند. این همان بخشی است که فرسوده میشود. طبقهبندی که روی ترافیک سهماهه گذشته آموزش دیده با تغییر بار کاری — ابزارهای جدید، انواع سند جدید، نیات جدید کاربر — منحرف میشود. این انحراف در هزینه کل نامرئی است چون مجموع به دلایل دیگر مدام حرکت میکند. راهحل عملی یک برش نگهداشتهشده از ترافیک واقعی اخیر است که طبق برنامه از طبقهبند بازپخش شود و تصمیم مسیریابی با آنچه لایه گران تولید میکرد مقایسه شود. آن بازپخش تنها معیار صادقانه برای این است که آیا سیاست هنوز برقرار است. کارهای مرتبط در ارزیابی عامل و استقرار آگاه از هزینه همچنان بر تست همتوزیع با داده واقعی به جای نمرات محک تأکید میکنند، که غریزه درستی است — یک محک به شما میگوید طبقهبند میتواند طبقهبندی کند، نه اینکه ترافیک شما را طبقهبندی میکند.
چه چیزی را ابزارگذاری کنیم
ابزارگذاری برای ناوگانی در این مقیاس سه باید غیرقابلمذاکره دارد.

توکنها را به ازای وظیفه تکمیلشده ثبت کنید، نه به ازای درخواست. هر اجرا را با وضعیت تکمیل برچسب بزنید و هزینه را فقط روی اجراهایی تجمیع کنید که به یک حالت پایانی تعریفشده رسیدهاند. اجراهای ناتمام — وقفهها، حلقههای ابزار، برنامههای رهاشده — گرانتریناند، و از میانگینهای هر درخواست ناپدید میشوند چون هر فراخوانی منفرد عادی به نظر میرسید. اجرایی که بافت بزرگی را در دوازده گام سوزانده و سپس شکست خورده، تکگرانترین شیء در سیستم است، و بیشتر داشبوردها نمیتوانند آن را ببینند.
نرخ تشدید را ردیابی کنید. هر چند وقت یک بار یک اجرا در میانه کار از مدل کوچک به بزرگ میرود؟ تشدید همان شیر اطمینانی است که مسیریابی تهاجمی به پایین را قابل دفاع میکند. نرخ تشدید پایین با نرخ بالای مسیریابی نادرست به پایین یعنی شیر گیر کرده. نرخ تشدید بالا یعنی پیشطبقهبند کمبرآورد میکند و ناوگان هزینه دو تلاش را میپردازد جایی که یکی کافی بود. خود نرخ یک سیگنال سلامت مسیریابی است، نه هزینهای برای کمینهسازی.
نرخ اصابت کش را به عنوان ورودی مسیریابی در نظر بگیرید. کش کردن پرامپت معمولاً زیر بهینهسازی زیرساخت بایگانی میشود، جدا از انتخاب مدل. نباید اینطور باشد. اگر یک کلاس وظیفه نرخ اصابت کش بالایی روی پیشوند پایدارش داشته باشد، هزینه مؤثر مدل بزرگ پایین میآید و آستانه مسیریابی باید جابهجا شود. سیاستی که وضعیت کش را نادیده میگیرد دقیقاً روی بارهای کاریای بیشمسیریابی به لایه ارزان میکند که لایه گران از قبل با استفاده مجدد تخفیف خورده است. نرخ اصابت را در تصمیم مسیریابی بگنجانید، نه در گزارش ماهانه.
قاعده
بودجهای که نمیتوانید بر اساس کلاس وظیفه تجزیه کنید، بودجهای است که نمیتوانید در یک بازبینی از آن دفاع کنید. وقتی کسی میپرسد چرا هزینه اینقدر است، «عاملها مشغولاند» پاسخ نیست. «شصت درصد وظایف تکمیلشده کلاس B هستند و روی لایه کوچک با هزینه پایدار اجرا میشوند؛ دُم اجراهای برنامهریزی کلاس D است، و این هم نرخ تشدید و نرخ مسیریابی نادرست به پایین روی آن دُم» پاسخ است.
قاعده عملیاتی کوتاه است: بر اساس کلاس وظیفه مسیریابی کن، با تکمیل دروازهگذاری کن، دُم را ماهانه حسابرسی کن.
- بر اساس کلاس وظیفه مسیریابی کن. کلاسها را صریح تعریف کن، هر کدام را به یک لایه نگاشت کن، و طبقهبند را در برابر ترافیک اخیر ارزیابی نگه دار.
- با تکمیل دروازهگذاری کن. هزینه را فقط روی اجراهایی بشمار که تمام شدهاند. هزینه شکست یک سیگنال مسیریابی است، نه سربار.
- دُم را ماهانه حسابرسی کن. گرانترین وظایف تکمیلشده را در برابر لایه ارزانتر بازپخش کن. هر وظیفهای که از بازپخش جان سالم به در ببرد یک مسیریابی نادرست به بالاست، و مجموع آن اندازه تصحیحی است که در دسترس شماست.
معامله صادقانه این است که این ماشینآلات زمان مهندسی هزینه میکند و یک مؤلفه تأخیرآور جلوی هر فراخوانی اضافه میکند. تیمی که همه چیز را به یک مدل بزرگ میفرستد سریعتر تحویل میدهد و برای بارهای کاری کوچک توجه کمتری خرج میکند. آن معامله جایی حدود نقطهای که هزینه یک اپراتور واحد به شش رقم میرسد دیگر قابل دفاع نیست — نه چون پول در términos مطلق بزرگ است، بلکه چون در آن مقیاس سیستم تنوع وظیفه کافی دارد که یک لایه واحد برای بیشتر آن اثباتاً غلط است. بودجه یک فخرفروشی نیست. یک سیاست است، و سیاستها قابل حسابرسیاند.
