نقاط ضعف كفاءة التكلفة في AWS واستراتيجيات الخروج من مورد معين
حساب نقطة تعادل التكلفة بين Lambda و Fargate
اختيار البنية التحتية ليس مسألة تفوق تقني، بل هو مجال للحسابات الرياضية لملفات تعريف حركة المرور. ومن الأمثلة البارزة على ذلك حالة فريق Amazon Prime Video، الذي قام بتوزيع خدمات مراقبة جودة الفيديو على عدد كبير من وظائف AWS Lambda و Step Functions، مما أدى إلى "انفجار" في التكاليف. ومع زيادة حركة المرور، تضاعفت تكاليف تغيير الحالة بشكل خطي، فقاموا بدمج المنطق في عملية داخل الذاكرة (in-memory) لعقدة حوسبة واحدة وانتقلوا إلى بيئة حاويات Amazon ECS. وكانت النتيجة خفض إجمالي تكاليف البنية التحتية بنسبة 90%.
إن نقطة تعادل التكلفة بين وظائف السيرفرلس (Serverless) وبيئة تشغيل الحاويات واضحة. إذا افترضنا أن متوسط زمن استجابة AWS Lambda هو 118 مللي ثانية، وتخصيص الذاكرة هو 1 جيجابايت، وأن حاوية AWS Fargate البديلة تعمل باستمرار بـ 2 مهام (مواصفات 2 vCPU و 4 جيجابايت RAM) لضمان الحد الأدنى من التوفر، فإن نقطة تعادل التكلفة بين الخدمتين تتلاقى عند حوالي 96 مليون طلب شهرياً. تحت هذا الحد، يكون نظام الدفع حسب الاستخدام الخاص بالسيرفرلس أكثر فائدة، ولكن بمجرد تجاوز هذا الخط، تصبح كفاءة تكلفة بيئة تشغيل حاويات Fargate، التي تعمل بتخصيص الموارد مسبقاً كتكاليف ثابتة، أعلى.
في البنى التي تعمل بشكل دائم، يجب تضمين تكاليف الشبكة التي تشكل 30% من الفاتورة في الحسابات للحصول على نقطة تعادل دقيقة، مثل رسوم NAT Gateway عند عزل الحاويات في شبكة فرعية خاصة (0.045 دولار في الساعة، أو 32.40 دولار شهرياً لمنطقة توفر واحدة)، ورسوم خدمة Application Load Balancer الأساسية (16.20 دولار شهرياً)، وتكلفة تخصيص عنوان IP عام ثابت (3.60 دولار شهرياً لكل مهمة).
معادلة الحساب لتحديد جدوى نقل البنية التحتية عبر جداول البيانات هي كما يلي:
- في جدول بيانات Google، قم بإنشاء أعمدة للمتغيرات: إجمالي عدد طلبات API شهرياً (R)، متوسط زمن التنفيذ لكل طلب API (D)، حجم الذاكرة الافتراضية المخصصة للسيرفرلس (M)، تكلفة تشغيل vCPU في الساعة، وتكاليف صيانة البنية التحتية الثابتة (مجموع أحمال التوازن، بوابات NAT، إلخ).
- أدخل المعادلة التالية في خلية حساب تكلفة AWS Lambda:
=( (R / 1000000) * سعر الطلب الأساسي ) + ( R * D * (M / 1024) * معدل الفوترة لكل جيجابايت-ثانية )
- أدخل المعادلة التالية في خلية حساب تكلفة AWS Fargate:
=( عدد الحاويات الدائمة * ( (عدد vCPU * سعر vCPU في الساعة) + (حجم الذاكرة بالجيجابايت * سعر الذاكرة في الساعة) ) * 720 ) + تكاليف صيانة البنية التحتية الثابتة
- إذا أظهرت نتائج المحاكاة أن حركة المرور الشهرية تتجاوز 96 مليون، فقم بتنفيذ نقل البنية التحتية إلى بيئة الحاويات. يمكنك خفض تكاليف صيانة البنية التحتية السحابية بنسبة 20% شهرياً.
تقليل وقت الترحيل من خلال تجريد الكود
إذا قمت بربط منطق العمل (Business Logic) بشكل وثيق بمكتبات SDK الخاصة بسحابة معينة أو بواجهات برمجية خاصة ببيئة تشغيل معينة، فإن التطبيق يصبح رهينة لتلك المنصة. من الأخطاء الشائعة حقن حزمة خادم الويب Express.js داخل بيئة تشغيل AWS Lambda وتغليفها بمكتبة محول (مثل @codegenie/serverless-express) للربط بأحداث API Gateway Proxy. هذا الهيكل يهدر موارد وحدة المعالجة المركزية (CPU) في جهاز FaaS الافتراضي بسبب إجبار كل طلب على محاكاة تدفق المقبس الافتراضي (socket stream) وعمليات تحويل المخزن المؤقت (buffer conversion). علاوة على ذلك، فإنه يزيد من حجم نشر node_modules، مما يسبب وقت بدء تشغيل بارد (cold start) ويمنع الانتقال من المنصة بشكل أساسي.
لتجاوز مخاطر الارتباط هذه وتقليل فترة الانتقال إلى سحابة أخرى بنسبة 80%، يجب اعتماد "العمارة السداسية