أساسيات الحوسبة السحابية
الحوسبة بلا خوادم (Serverless)
ماذا تعني "بلا خوادم" فعلياً، وكيف تتوسّع دالة من الصفر إلى آلاف الطلبات وتعود، وحساب التكلفة الحقيقي خلفها، وأين تقف حدودها.
- اشرح معنى الحوسبة بلا خوادم وصحّح الفهم الخاطئ الشائع بأنها تعني غياب الخوادم فعلياً
- صف دورة حياة الدالة بلا خوادم القائمة على الأحداث، بما يشمل البدء البارد والبدء الدافئ
- احسب أيهما أرخص لحمل عمل معيّن: دالة بلا خوادم أم جهاز يعمل باستمرار، بالاعتماد على حجم الطلبات ومدتها
- حدد قيود مدة التنفيذ والحالة التي تستبعد الحوسبة بلا خوادم لحمل عمل معيّن
- قارن الدوال بلا خوادم بالحاويات والأجهزة الافتراضية على طيف التحكم مقابل الراحة
الطيف السابق لم يُرِك هذا الجزء
وضع درس خدمات الحوسبة الدوال بلا خوادم عند أقصى يمين طيف التحكم مقابل الراحة: يدير المزوّد كل شيء إلا كودك، وتبدأ الدالة خلال أجزاء من الثانية. يكفي ذلك المخطط لتحديد موقع الحوسبة بلا خوادم بالنسبة للأجهزة الافتراضية والحاويات، لكنه لا يستطيع أن يُرِيك ماذا يعني فعلياً "يدير المزوّد كل شيء"، ولا أين تقف حدود تلك الراحة. كلاهما يهمّك الآن، بما أنك من سيقرر هل ينتمي حمل عمل معيّن إلى دالة بلا خوادم أصلاً.
"بلا خوادم" اسم تسويقي، لا وصف حرفي
"بلا خوادم" اسم الصناعة لهذا النموذج، لا وصف حرفي لما يحدث. تُشغّل AWS دالتك داخل جهاز افتراضي دقيق معزول، على أسطولها الخاص من الخوادم الفعلية، باستخدام تقنية فرملة تُدعى Firecracker فوق Nitro System؛ تفعل Azure وGoogle Cloud الشيء المكافئ على عتادها الخاص. ما تزيله "بلا خوادم" ليس الخادم، بل عملك أنت: اختيار حجم الخادم وتحديثه وتوسيعه. قارن ذلك بـ IaaS، حيث تختار نوع النسخة بنفسك، أو حتى PaaS، حيث تختار على الأقل بيئة تشغيل وسياسة توسّع. لا تمنحك الدالة بلا خوادم أياً من هذين المقبضين: تزوّد دالة، وتربطها بمحفّز، ويقرر المزوّد كم نسخة يشغّل منها، وأين، وكم تعيش كل واحدة.
دورة الحياة القائمة على الأحداث: خمول، استدعاء، تنفيذ، خمول مجدداً
تخيّل دالة تولّد صورة مصغّرة كلما رفع عميل صورة إلى سلة تخزين. معظم اليوم، لا تعمل أي نسخة من تلك الدالة في أي مكان، ولا تكلّف شيئاً. لحظة وصول صورة إلى السلة، يُطلق الحدث استدعاءً: تجد المنصة بيئة تنفيذ أو تُنشئها، تشغّل معالجك ضد الحدث، وتُعيد نتيجة. حين يتوقف تدفق الرفع لفترة، تسترد المنصة تلك البيئة، وتعود الدالة إلى الصفر.
البدء البارد والبدء الدافئ
ذلك الفارق بين "تجد" و"تُنشئ" له اسم. إن كانت بيئة تنفيذ من استدعاء سابق ما زالت موجودة، تُعيد المنصة استخدامها، بدء دافئ، فيعمل معالجك خلال لحظات. إن لم تكن، بعد فترة خمول أو دفعة طلبات جديدة، يجب على المنصة أولاً تهيئة بيئة جديدة، وتحميل بيئة التشغيل، واستيراد التبعيات، قبل أن يعمل معالجك أصلاً، بدء بارد. ذلك العمل التحضيري ليس مجانياً، لا وقتاً ولا مالاً: تحتسب فوترة AWS Lambda الحالية مرحلة تهيئة البدء البارد كمدة مفوترة، تماماً كالمعالج نفسه. دالة تُستدعى باستمرار نادراً ما تدفع ضريبة البدء البارد، لأن بيئاتها تبقى دافئة؛ دالة تُستدعى على دفعات متقطعة تدفعها عند أول طلب من كل دفعة.
حساب "ادفع فقط مقابل ما يعمل"
يفرض تسعير AWS Lambda القياسي $0.20 لكل مليون طلب، بالإضافة إلى $0.0000166667 لكل غيغابايت-ثانية من زمن التنفيذ، مع طبقة مجانية قدرها مليون طلب و400,000 غيغابايت-ثانية كل شهر، إلى الأبد.
خذ دالة مضبوطة على 512 ميغابايت من الذاكرة (0.5 غيغابايت)، تعمل 400 مللي ثانية (0.4 ثانية)، وتُستدعى 100,000 مرة شهرياً، تصغير صور تطبيق مشاركة صور صغير، مثلاً. يستهلك هذا الحمل 100,000 × 0.5 × 0.4 = 20,000 غيغابايت-ثانية و100,000 طلب، وكلاهما داخل الطبقة المجانية براحة. الفاتورة: $0.
الآن وسّع الدالة نفسها إلى 5 ملايين استدعاء شهرياً، تطبيق أكثر ازدحاماً، أو التطبيق نفسه بعد أن كبر. هذا 5,000,000 × 0.5 × 0.4 = 1,000,000 غيغابايت-ثانية، منها 600,000 مفوترة بعد الطبقة المجانية، بالإضافة إلى 4,000,000 طلب مفوتر. تكلفة المدة نحو 600,000 × $0.0000166667، أي قرابة $10.00، وتضيف الطلبات $0.80 أخرى (4 × $0.20)، أي فاتورة تقارب $10.80 شهرياً. قارن ذلك بجهاز t3.micro من درس خدمات الحوسبة، نحو $7.59 شهرياً يعمل باستمرار سواء أنجز عملاً أم لا. عند حجم منخفض ومتقطع، تفوز الحوسبة بلا خوادم بوضوح، إنها مجانية. عند حجم مرتفع وثابت، يمكن لجهاز دائم التشغيل أن يتفوق عليها، وهذا قبل حتى أن تسأل هل يستطيع جهاز t3.micro واحد أصلاً تحمّل 5 ملايين طلب دون أن ينهار.
أين تتوقف الدالة بلا خوادم عن الملاءمة
حدّان يهمّان بقدر حساب التكلفة. أولاً، مدة التنفيذ: تضع دوال AWS Lambda سقفاً قدره 15 دقيقة للاستدعاء الواحد؛ مهمة ترميز فيديو تستغرق ساعتين لا تناسب ببساطة دالة عادية، مهما بدا حساب التسعير مغرياً. ثانياً، الحالة: يمكن إعادة استخدام بيئة التنفيذ بين استدعاءين، لكن لا شيء يضمن ذلك، فلا يمكن لدالة الاعتماد على بقاء بيانات في الذاكرة أو اتصال مفتوح من استدعاء إلى التالي. حمل يحتاج تجمّع اتصالات قاعدة بيانات طويل الأمد، أو مهمة دفعية تمتد ساعات، أو حالة مضمونة في الذاكرة، ينتمي إلى حاوية أو جهاز افتراضي بدلاً من ذلك.
مفاتيح الاختبار: التقاط الملاءمة في سيناريو
| يقول السيناريو... | يشير إلى |
|---|---|
| "يعمل فقط عند التحفيز"، "قائم على الأحداث"، "لا خوادم لإدارتها" | دالة بلا خوادم |
| "الزيارات غير متوقعة"، "خامل معظم اليوم" | دالة بلا خوادم |
| "يحتاج اتصالاً دائماً"، "يعمل باستمرار لساعات" | حاوية أو جهاز افتراضي |
| "حجم مرتفع وثابت على مدار الساعة" | حاوية أو جهاز افتراضي (نقطة التعادل تميل نحو التشغيل الدائم) |
إلى أين يقودك هذا
لا تزيل الحوسبة بلا خوادم الخوادم، بل تزيل عنك عبء إدارتها، وتفوترك فقط مقابل المللي ثانية التي يعمل فيها كودك فعلاً. تلك المقايضة تُثمر عند حجم منخفض أو متقطع، وقد تخسر أمام جهاز دائم التشغيل عند حجم مرتفع وثابت، ولهذا بالضبط تصبح عبارة "الحوسبة بلا خوادم أرخص دائماً" فخاً لا قاعدة. يترك الدرس التالي سؤال من يدير الخادم خلفه، ويطرح سؤالاً مختلفاً: كيف ينبغي تقسيم التطبيق نفسه إلى أجزاء، وكيف تعمل هذه الأجزاء بالطريقة نفسها في كل مكان. هذا ما تجيب عنه الحاويات والخدمات المصغّرة.
