تطبيقاتنا كانت خاملة وندفع ثمنها: كيف أنقذتنا البنية غير الخادومية (Serverless) من جحيم الموارد المهدرة؟

يا جماعة الخير، خلوني أحكيلكم قصة صارت معي قبل كم سنة. كنا شغالين على مشروع ناشئ، تطبيق لمشاركة الفعاليات والمناسبات الاجتماعية. الفكرة كانت بسيطة وحلوة، والشباب متحمسين. جينا لمرحلة البنية التحتية، وعلى طول، زي ما تعلمنا، استأجرنا خادم افتراضي (Virtual Server) من أحد مزودي الخدمات السحابية الكبار.

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

المشكلة إنه الفاتورة الشهرية ما كانت تنام! كانت تجينا كاملة، سواء استخدمنا 100% من موارد الخادم أو 1% بس. كنت كل آخر شهر أمسك الفاتورة وأحكي لحالي: “يا زلمة، إحنا بندفع حق سيارة مرسيدس واقفة بالكراج 25 يوم بالشهر وبنستخدمها 5 أيام بس!”. شعور بالإحباط وهدر المصاري كان قاتل، خصوصاً لشركة ناشئة كل قرش بفرق معها. كنا في جحيم الموارد المهدرة، إلى أن سمعنا بمصطلح غيّر كل شيء: البنية غير الخادومية (Serverless).


ما هي البنية غير الخادومية (Serverless)؟ وهل هي حقاً “بلا خوادم”؟

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

تخيل معي هذا المثال البسيط: بدك تاكل بيتزا.

  • الطريقة التقليدية (مثل الخوادم العادية): أنت تبني مطبخ كامل في بيتك، تشتري فرن، عجّانة، ثلاجة، وتوّظف طباخ. سواء أكلت بيتزا كل يوم أو مرة بالشهر، أنت دافع تكاليف المطبخ والطباخ كاملة.
  • طريقة الـ Serverless: أنت تطلب البيتزا من مطعم دليفري. تدفع فقط ثمن البيتزا التي أكلتها. لا تفكر في إيجار المطعم، ولا راتب الطباخ، ولا فاتورة الكهرباء تبعت الفرن.

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

كيف أنقذتنا “السيرفرلس” من جحيم الفواتير؟

لما انتقلنا لتطبيقنا من الخادم التقليدي إلى بنية Serverless، التغيير كان جذرياً. خلوني ألخصلكم الفوائد اللي لمسناها بشكل مباشر:

1. الدفع مقابل الاستخدام الفعلي (Pay-per-use)

هذه كانت أكبر نقلة نوعية. فاتورتنا الشهرية انخفضت بنسبة تقارب 80-90%. صرنا ندفع فقط عندما يقوم مستخدم فعلياً بإنشاء مناسبة أو تصفح الفعاليات. في أوقات الخمول، مثل منتصف الليل في أيام الأسبوع، كانت التكلفة تقترب من الصفر. معظم المنصات السحابية تقدم أيضاً “طبقة مجانية” (Free Tier) سخية جداً، تسمح لك بتشغيل مليون طلب شهرياً مجاناً. هذا يعني أن الكثير من المشاريع الصغيرة أو الجانبية يمكن أن تعمل مجاناً تماماً.

2. التوسع التلقائي (Automatic Scaling)

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

3. التركيز على الكود، لا على البنية التحتية

“خلّينا نركز في الكود وبس!”

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


مثال عملي: من خادم Express.js إلى دالة AWS Lambda

حتى تكون الصورة أوضح، دعونا نرى مثالاً بسيطاً جداً: واجهة برمجية (API) صغيرة تعيد رسالة ترحيب. سنرى كيف نكتبها بالطريقة التقليدية وباستخدام Serverless.

الطريقة التقليدية: خادم Express.js على سيرفر EC2

في هذه الطريقة، أنت بحاجة لكتابة خادم كامل وتشغيله على مدار الساعة.


// index.js
const express = require('express');
const app = express();
const port = 3000;

// Endpoint to say hello
app.get('/hello', (req, res) => {
  res.json({ message: 'أهلاً وسهلاً من خادم Express!' });
});

app.listen(port, () => {
  console.log(`الخادم يعمل على المنفذ ${port}`);
});

هذا الكود يجب أن يبقى يعمل 24/7 على خادم استأجرته، وتدفع ثمنه سواء كان هناك من يزور الرابط /hello أم لا.

طريقة Serverless: دالة AWS Lambda

هنا، أنت تكتب فقط الدالة التي ستنفذ عند استدعاء الـ Endpoint. لا يوجد app.listen ولا إدارة للمنافذ.


// handler.js

// The handler function
exports.sayHello = async (event) => {
  // الكود هنا لا يعمل إلا عند الطلب
  console.log("تم استدعاء الدالة!");

  // The response we want to send back
  const response = {
    statusCode: 200,
    headers: {
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      message: 'أهلاً وسهلاً من دالة Lambda غير الخادومية!',
    }),
  };

  return response;
};

لاحظ الفرق؟ الكود أبسط بكثير ومركز على المهمة فقط. أنت تقوم بربط هذه الدالة مع خدمة مثل Amazon API Gateway، والتي تعطيك رابطاً عاماً. عند زيارة هذا الرابط، تقوم API Gateway باستدعاء دالة Lambda، تنفيذ الكود، وإرجاع النتيجة. إذا لم يزر أحد الرابط لمدة ساعة، فإن الكود لا يعمل أبداً، وأنت لا تدفع شيئاً.


نصائح من “أبو عمر”: متى تستخدم Serverless ومتى تبتعد عنها؟

رغم كل حبي لهذه التقنية، هي ليست الحل السحري لكل المشاكل. من خبرتي، هذه بعض الحالات التي تتألق فيها الـ Serverless، وبعض الحالات التي يجب أن تفكر فيها مرتين.

حالات الاستخدام المثالية لـ Serverless:

  • الواجهات البرمجية (APIs): خصوصاً تلك التي تعاني من تذبذب في حركة المرور مثل تطبيقنا.
  • مهام المعالجة في الخلفية (Background Jobs): مثلاً، عندما يرفع مستخدم صورة، يمكن لدالة Lambda أن تعمل تلقائياً لتغيير حجمها وإضافة علامة مائية.
  • أتمتة مهام البنية التحتية: تشغيل سكربتات دورية لعمل نسخ احتياطي أو تنظيف قواعد البيانات.
  • الروبوتات (Chatbots) وتطبيقات إنترنت الأشياء (IoT): هذه التطبيقات غالباً ما تكون مدفوعة بالأحداث (event-driven)، وهو ما تتفوق فيه بنية Serverless.

متى يجب أن تفكر مرتين؟ (محاذير مهمة)

  • مشكلة البدء البارد (Cold Start): إذا لم يتم استدعاء دالتك لفترة (مثلاً 15 دقيقة)، فإن المنصة “تجمّدها” لتوفير الموارد. أول طلب يأتي بعد هذه الفترة سيستغرق وقتاً أطول قليلاً (من بضع مئات من الميلي ثانية إلى ثوانٍ) لأن المنصة تحتاج “لإيقاظ” الدالة. هذا قد يكون مشكلة في التطبيقات شديدة الحساسية لزمن الاستجابة. (نصيحة: يمكن التخفيف من هذه المشكلة باستخدام ميزات مثل “Provisioned Concurrency” التي تبقي عدداً من الدوال “جاهزة” دائماً، ولكنها تكلف أكثر).
  • المهام طويلة الأمد: دوال الـ Serverless لها حد أقصى لزمن التنفيذ (مثلاً 15 دقيقة في AWS Lambda). إذا كانت لديك مهمة تحتاج لساعات لتنفيذها (مثل تدريب نموذج تعلم آلة ضخم)، فـ Serverless ليست الخيار المناسب لها.
  • التقيّد بالمزوّد (Vendor Lock-in): عندما تبني نظامك بالكامل على خدمات Serverless من مزوّد معين (مثل AWS)، يصبح من الصعب جداً الانتقال إلى مزوّد آخر لاحقاً. (نصيحة: استخدام أطر عمل مثل Serverless Framework يمكن أن يقلل من هذا التقييد إلى حد ما).

الخلاصة: هل السيرفرلس هي المستقبل؟ 🚀

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

هل هي الحل لكل شيء؟ بالطبع لا. ولكنها أداة قوية جداً يجب أن تكون في جعبة كل مطور ومسؤول تقني اليوم.

نصيحتي الأخيرة لك: لا تخف من تجربتها. ابدأ بمشروع جانبي صغير أو بميزة واحدة داخل تطبيقك الحالي. قم ببناء واجهة برمجية بسيطة باستخدام AWS Lambda و API Gateway. جرّبها يا صاحبي، وقارن التكلفة والجهد بنفسك. أنا أضمن لك أنك ستنبهر بالنتائج، وربما ستنقذ نفسك أيضاً من جحيم كنت تظن أنه لا مفر منه.

أبو عمر

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

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

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

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

آخر المدونات

الحوسبة السحابية

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

أشارككم قصة حقيقية من تجربتي كمطور، كيف كنا ندفع مئات الدولارات على خوادم شبه نائمة، وكيف كانت معمارية "الحوسبة بدون خوادم" (Serverless) طوق النجاة الذي...

14 مايو، 2026 قراءة المزيد
التوظيف وبناء الهوية التقنية

كانت إجاباتي في المقابلات عشوائية: كيف أنقذتني منهجية STAR من جحيم أسئلة “حدثنا عن موقف…”؟

هل تجد نفسك تائهًا ومشتتًا عند الإجابة على أسئلة المقابلات السلوكية؟ في هذه المقالة، أشاركك تجربتي الشخصية مع منهجية STAR، الأداة التي حولت إجاباتي الفوضوية...

14 مايو، 2026 قراءة المزيد
التوسع والأداء العالي والأحمال

كيف أنقذ ‘موازن الحمل’ خادمنا الوحيد من الانهيار؟ قصة من قلب المعركة

هل يواجه تطبيقك بطئًا وتوقفًا مفاجئًا مع زيادة عدد المستخدمين؟ في هذه المقالة، أشارككم قصتي مع انهيار خادمنا الوحيد وكيف كان 'موازن الحمل' (Load Balancer)...

14 مايو، 2026 قراءة المزيد
التكنلوجيا المالية Fintech

من كشط الشاشة إلى الخدمات المصرفية المفتوحة: كيف أنقذت واجهات الـ API تطبيقاتنا المالية؟

أشارككم قصة من قلب المعركة التقنية، كيف انتقلنا في عالم التكنولوجيا المالية من جحيم "كشط الشاشة" الهش والمليء بالمخاطر، إلى نعيم واجهات الخدمات المصرفية المفتوحة...

14 مايو، 2026 قراءة المزيد
البنية التحتية وإدارة السيرفرات

وداعاً لـ `kubectl apply -f`: كيف حولنا إدارة Kubernetes إلى عملية آلية وموثوقة مع GitOps؟

في هذه المقالة، يشارككم أبو عمر، مطور برمجيات فلسطيني، قصة حقيقية حول مخاطر الإدارة اليدوية لـ Kubernetes وكيف أنقذنا مبدأ GitOps من كوارث محتملة. سنتعمق...

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

كانت الأفكار تموت في صمت: كيف أنقذتنا ‘السلامة النفسية’ من جحيم الخوف من الفشل؟

في عالم البرمجة حيث الخطأ الواحد قد يكلف الكثير، يصبح الخوف من الفشل سجناً للإبداع. من خلال قصة شخصية، نستكشف مفهوم "السلامة النفسية" وكيف يمكن...

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