كانت خوادمنا مكلفة ونائمة: كيف أنقذتنا ‘الحوسبة بدون خوادم’ (Serverless) من جحيم الفواتير المنتفخة؟

أذكرها وكأنها البارحة، كنا في فريق صغير نعمل على مشروع ناشئ واعد. الحماس يملأ قلوبنا والطموح يصل عنان السماء. قضينا شهوراً في بناء التطبيق، وعندما حان وقت الإطلاق، قمنا بما يفعله الجميع: حجزنا خادماً سحابياً (Cloud Server) بمواصفات “محترمة” حتى “يستحمل الضغط” المتوقع.

مر الشهر الأول، والثاني، والثالث… والتطبيق يعمل بشكل جيد، لكن الضغط الذي توقعناه لم يأتِ بالكثافة التي حسبنا حسابها. ومع نهاية كل شهر، كانت تصلنا الفاتورة من مزود الخدمة السحابية، فاتورة كانت “بتوجّع القلب” حرفياً. كنا ندفع مئات الدولارات شهرياً مقابل خادم يعمل بـ 5% من طاقته في معظم الأوقات، مثل سيارة سباق تمشي في شارع مزدحم. كانت خوادمنا نائمة، لكن عدّاد الفواتير كان مستيقظاً ونشيطاً جداً! شعور بالإحباط والهدر كان يسيطر علينا، وكأننا نصب الماء في قربة مثقوبة. إلى أن سمعنا عن مصطلح بدأ يتردد في الأوساط التقنية بقوة: Serverless.

ما هي قصة “الحوسبة بدون خوادم” (Serverless)؟

أول ما تسمع كلمة “Serverless”، قد تظن أنها تعني أننا لم نعد بحاجة لخوادم. هذا فهم خاطئ وشائع. الخوادم ما زالت موجودة وبقوة، لكن الفرق الجوهري هو: أنت لم تعد مسؤولاً عن إدارتها.

دعوني أبسّطها. في النموذج التقليدي:

  • أنت تختار الخادم (المعالج، الذاكرة، مساحة التخزين).
  • أنت تثبّت نظام التشغيل والتحديثات الأمنية.
  • أنت تضبط إعدادات الشبكة وتوازن الأحمال (Load Balancing).
  • أنت تدفع مقابل كل هذا، سواء كان هناك مستخدمون على تطبيقك أم لا. 24 ساعة في اليوم، 7 أيام في الأسبوع.

أما في عالم الـ Serverless، فالقصة مختلفة تماماً. أنت كمبرمج، كل ما عليك فعله هو كتابة “دالة” (Function) تؤدي مهمة محددة. ثم ترفع هذه الدالة للمنصة السحابية (مثل AWS Lambda, Google Cloud Functions, Azure Functions). المنصة هي التي تتكفل بكل شيء آخر.

ببساطة، الـ Serverless ينقلك من دور “مدير مبنى” يهتم بالبنية التحتية والصيانة، إلى دور “ساكن” يستمتع بالخدمات دون القلق حول تفاصيلها المعقدة.

كيف تعمل هذه التقنية السحرية؟

الفكرة الأساسية في الـ Serverless، وتحديداً في نموذج “الدوال كخدمة” (Function as a Service – FaaS)، هي أنها تعمل بناءً على “الأحداث” (Events). الحدث يمكن أن يكون أي شيء:

  • طلب HTTP من مستخدم (API call).
  • رفع صورة جديدة إلى خدمة تخزين (مثل Amazon S3).
  • إضافة سجل جديد في قاعدة البيانات.
  • رسالة جديدة في طابور مهام (Queue).

عندما يحدث هذا “الحدث”، تقوم المنصة السحابية تلقائياً بتشغيل دالتك (الكود الخاص بك). تنفذ الدالة المهمة المطلوبة، ثم “تعود للنوم”. أنت تدفع فقط مقابل تلك المليثواني (milliseconds) التي كانت فيها دالتك تعمل. إذا لم يكن هناك أي أحداث، لا يتم تشغيل أي شيء، وبالتالي… أنت لا تدفع أي شيء! وهذا يا جماعة كان “الاكتشاف العظيم” بالنسبة لفريقنا.

اللحظة التي تغير فيها كل شيء

بالعودة لقصتنا، كان لدينا جزء في التطبيق مسؤول عن معالجة الصور التي يرفعها المستخدمون (تغيير الحجم، إضافة علامة مائية، إلخ). كانت هذه العملية تستهلك موارد كبيرة من الخادم عند حدوثها، لكنها كانت نادرة في معظم الأوقات.

هنا كانت “الفرصة الذهبية”. قررنا أن نفصل هذه الوظيفة عن تطبيقنا الرئيسي ونحولها إلى دالة Serverless على AWS Lambda. أصبحت العملية كالتالي:

  1. المستخدم يرفع صورة عبر تطبيقنا.
  2. التطبيق يقوم بحفظ الصورة مباشرة في خدمة التخزين S3.
  3. عملية الحفظ هذه هي “الحدث” الذي يقوم تلقائياً بتشغيل دالة Lambda.
  4. الدالة تأخذ الصورة، تعالجها، ثم تحفظ النسخة الجديدة في مكان آخر على S3.

النتيجة؟ كانت “صدمة حلوة”! انخفضت تكاليف الخادم الرئيسي بشكل كبير لأننا لم نعد بحاجة لتلك المواصفات العالية طوال الوقت. وتكاليف تشغيل دالة Lambda كانت بضعة دولارات فقط شهرياً، مقارنة بمئات الدولارات التي كنا نهدرها. هذا هو معنى أن يكون شغلك “مرتب” ومدروس.

مثال عملي: دالة Serverless بسيطة بلغة Python

لتقريب الصورة أكثر، دعونا نرى كيف تبدو دالة Lambda بسيطة بلغة Python. هذه الدالة تستقبل طلب HTTP يحتوي على اسم، وترجع رسالة ترحيب.


import json

def lambda_handler(event, context):
    # نستخرج الاسم من الطلب القادم
    # We extract the name from the incoming request
    try:
        # نبحث عن الاسم في جسم الطلب (body)
        body = json.loads(event['body'])
        name = body['name']
    except:
        # إذا لم نجد الاسم، نستخدم قيمة افتراضية
        name = 'يا صديقي'

    # نُعدّ الرسالة والرد
    message = f"أهلاً وسهلاً بك يا {name} في عالم الـ Serverless!"
    
    # نرجع الرد بصيغة يفهمها API Gateway
    return {
        'statusCode': 200,
        'headers': {
            'Content-Type': 'application/json'
        },
        'body': json.dumps({'message': message})
    }

هذا كل شيء! لا يوجد إعداد لخوادم الويب (like Flask or Django)، لا يوجد قلق بشأن التحديثات الأمنية لنظام التشغيل. مجرد كود برمجي نقي يركز على منطق العمل (Business Logic).

نصائح عملية من خبرة أبو عمر

بعد سنوات من العمل مع بنية الـ Serverless، إليكم بعض النصائح التي أتمنى لو عرفتها في البداية:

ابدأ صغيراً ومحدداً

لا تحاول تحويل تطبيقك الضخم بأكمله إلى Serverless دفعة واحدة. ابدأ بوظيفة صغيرة، معزولة، وغير حرجة. معالجة الصور، إرسال رسائل البريد الإلكتروني، أو مهمة مجدولة (Cron Job) هي نقاط بداية ممتازة.

افهم “البداية الباردة” (Cold Start)

عندما لا يتم استدعاء دالتك لفترة، تقوم المنصة بإيقافها تماماً لتوفير الموارد. عند استدعاءها مجدداً، تحتاج لوقت قصير جداً (من أجزاء من الثانية إلى بضع ثوانٍ) لـ “الإحماء”. هذا ما يسمى بالـ Cold Start. كن على دراية به، خاصة في التطبيقات التي تتطلب استجابة فورية. هناك تقنيات لتقليل أثرها مثل (Provisioned Concurrency).

استخدم أطر العمل (Frameworks)

إدارة عشرات الدوال يدوياً عبر واجهة المنصة السحابية يمكن أن يصبح كابوساً. استخدم أطر عمل مثل Serverless Framework أو AWS SAM. هذه الأدوات تسمح لك بتعريف بنيتك التحتية بأكملها (الدوال، الصلاحيات، الأحداث) في ملف واحد، مما يجعل عملية النشر والتطوير أسهل بمليون مرة.

المراقبة ليست كما تعودت عليها

مراقبة نظام موزع مكون من دوال كثيرة يختلف عن مراقبة خادم واحد. تعلم استخدام أدوات المراقبة والتتبع (Monitoring and Tracing) التي توفرها المنصات السحابية (مثل AWS CloudWatch و X-Ray) لفهم أداء دوالك وتصحيح الأخطاء.

الخلاصة: هل الـ Serverless هو الحل لكل شيء؟

بالتأكيد لا. الـ Serverless ليس “رصاصة فضية” تحل جميع المشاكل. للتطبيقات التي تتطلب اتصالات طويلة الأمد (مثل WebSockets) أو مهام حسابية ثقيلة وطويلة جداً، قد لا يكون الخيار الأمثل. لكن بالنسبة لغالبية التطبيقات الحديثة، خاصة تلك التي تعتمد على الواجهات البرمجية (APIs) والخدمات المصغرة (Microservices) أو التي لديها أنماط استخدام متقلبة، فإن الـ Serverless يقدم نموذجاً قوياً وفعالاً من حيث التكلفة.

بالنسبة لنا، لم تكن مجرد تقنية جديدة، بل كانت نقلة نوعية في التفكير. حررتنا من قيود إدارة الخوادم، وخفضت فواتيرنا بشكل دراماتيكي، وسمحت لنا بالتركيز على بناء منتج يحبه المستخدمون. حولتنا من “حراس خوادم” قلقين إلى “مبدعين” حقيقيين.

فإذا كنت تعاني من فواتير منتفخة وخوادم نائمة، فربما حان الوقت لتجرب هذا العالم الجديد. يلا يا جماعة، شدوا حيلكم، المستقبل فيه الكثير من الـ Serverless! 😉

أبو عمر

سجل دخولك لعمل نقاش تفاعلي

كافة المحادثات خاصة ولا يتم عرضها على الموقع نهائياً

آراء من النقاشات

لا توجد آراء منشورة بعد. كن أول من يشارك رأيه!

آخر المدونات

التكنلوجيا المالية Fintech

بياناتنا المالية كانت سجينة: كيف حررتنا “المصرفية المفتوحة” من صوامع البنوك المنعزلة؟

لسنوات، كانت بياناتنا المالية رهينة البنوك، محبوسة في صوامع رقمية. في هذه المقالة، أسرد لكم من تجربتي كمبرمج كيف كسرت "المصرفية المفتوحة" هذه القيود عبر...

18 مايو، 2026 قراءة المزيد
ادارة الفرق والتنمية البشرية

مراجعة الكود كانت حقل ألغام: كيف حوّلنا الصراع إلى تعاون بـ “المراجعات القائمة على التعاطف”؟

بصفتي أبو عمر، أروي لكم كيف كانت مراجعات الكود في فريقي مصدرًا للتوتر والصراعات الشخصية. في هذه المقالة، أشارككم تجربتنا في تبني "المراجعات القائمة على...

18 مايو، 2026 قراءة المزيد
البودكاست