تعتبر مشكلات بدء التشغيل البارد مهمة لأنها تحدث بالضبط عندما يتوقع المستخدم أن يشعر النظام بالفورية.
الخطأ الشائع هو التفكير في فترة بدء التشغيل البارد باعتبارها ضريبة غامضة على السحابة لا يمكنك التأثير عليها. في الواقع، الجزء الأكبر الذي يمكنك التحكم فيه غالبًا ما يكون مسار تهيئة دالتك الخاصة.
أين يذهب الوقت عادةً
يمكن أن يتضمن بدء التشغيل البارد:
- تشغيل وقت التنفيذ
- تحميل حزمة الكود
- تحليل التبعيات
- التهيئة العالمية
- إعداد قاعدة البيانات أو SDK
هذا يعني أن الحزم الكبيرة والتهيئة المتعجلة عادة ما تكون أول الأماكن التي يجب النظر إليها.
نموذج أفضل
اجعل النطاق العالمي خفيفًا:
import { S3Client } from "@aws-sdk/client-s3";
const s3 = new S3Client({});
export async function handler(event: unknown) {
return { ok: true };
}
ونقل الأعمال الثقيلة التي تحدث بشكل نادر حقًا إلى عمق مسار التنفيذ:
export async function handler(event: { mode: string }) {
if (event.mode === "pdf") {
const { renderPdf } = await import("./pdf.js");
return renderPdf(event);
}
return { ok: true };
}
هذا لا يجعل كل طلب أسرع. إنه يجعل المسار الشائع أقل تكلفة للبدء.
المساومات
يمكن أن تقلل التوازي المخصص أو المُحمى مسبقًا من ألم بدء التشغيل البارد، لكنها تغير أيضًا التكلفة. تعتمد الإجابة الصحيحة على ما إذا كانت الوظيفة موجهة للمستخدم، وما إذا كان المرور متقطعًا، وما إذا كانت الفترة الزمنية مهمة بما يكفي لتبرير الإنفاق.
القراءة الإضافية