يا جماعة الخير، يسعد مساكم. اسمي أبو عمر، مبرمج فلسطيني قضيت سنين طويلة من عمري بين الأكواد والسيرفرات. اليوم بدي أحكيلكم قصة صارت معي، قصة عن حماس كبير تحول لإحباط، وكيف لقيت الحل في مكان ما كنت متوقعه بالمرة.
قبل فترة، كنت شغال على مشروع جانبي، أداة ذكاء اصطناعي بسيطة بتحلل مشاعر المستخدمين في التعليقات على منصات التواصل. كنت متحمس جداً، سهرت ليالي وأنا أكتب الكود وأدرب النموذج. لما صار المشروع جاهز، قررت أرفعه على الإنترنت. وبكل ثقة، رحت استأجرت سيرفر افتراضي (VPS) من أحد المزودين المشهورين. سيرفر محترم، مواصفاته منيحة، وقلت لحالي “هيك الشغل الصح”.
في الأسابيع الأولى، كان كل شي تمام. الأداة شغالة، والناس بتستخدمها بشكل متقطع، خصوصاً في أوقات المساء وعطلة نهاية الأسبوع. كنت مبسوط وأنا أراقب الأرقام. لكن الفرحة ما اكتملت. آخر الشهر، وصلتني الفاتورة. فتحتها وأنا كلي ثقة، وتفاجأت! رقم كبير، أكبر بكثير من اللي كنت متوقعه. قعدت أحلل بالموضوع، واكتشفت المصيبة: أنا كنت بدفع على السيرفر 24 ساعة في اليوم، 7 أيام في الأسبوع، سواء كان عليه مستخدم واحد أو ألف مستخدم، أو حتى وهو “صافن” ما بعمل إشي بالمرة! السيرفر كان يلتهم ميزانيتي وهو خامل معظم الوقت. حسيت حالي زي اللي فاتح محل وبدفع إيجاره كامل، مع إنه الزباين ما بيجوا إلا ساعة وحدة في اليوم. هون بلش بحثي عن حل، وهون كانت بداية معرفتي بعالم الـ Serverless.
ما هي “الحوسبة بدون خوادم” (Serverless)؟ ولماذا هي “كذبة” جميلة؟
لما تسمع مصطلح “Serverless” أو “بدون خوادم”، أول إشي بيخطر ببالك إنه ما في سيرفرات بالموضوع. هاي يا جماعة “كذبة” بيضاء وجميلة. الخوادم موجودة طبعاً، ما في حوسبة بدون حديد وبرمجيات، لكن الجمال في الموضوع هو أنك أنت كمبرمج ما إلك علاقة فيها بالمرة.
تخيل معي هالمثال: بدك تاكل بيتزا.
- الطريقة التقليدية (السيرفرات المدارة ذاتياً): لازم تبني مطبخ كامل، تشتري فرن، تجيب طحين ومكونات، وتوظف شيف، وتدفع راتبه سواء خبز بيتزا أو قعد طول اليوم صافن. هذا هو حال استئجار سيرفر (VPS/EC2).
- طريقة الحوسبة بدون خوادم (Serverless): أنت ببساطة بتتصل على مطعم البيتزا، بتطلب البيتزا اللي بدك إياها، وبتدفع حقها بس. ما إلك علاقة بالفرن ولا بالشيف ولا بإيجار المحل.
هذا هو جوهر الـ Serverless. أنت بتكتب الكود تبعك (بنسميه “دالة” أو Function)، وبترفعه على منصة سحابية مثل AWS Lambda أو Google Cloud Functions أو Azure Functions. المنصة هاي هي اللي بتتولى كل شي: بتشغل الكود تبعك لما حدا يطلبه، وبتطفي كل شي لما الطلب ينتهي. وأنت؟ أنت بتدفع فقط على عدد أجزاء الثانية اللي اشتغل فيها الكود تبعك. ولا قرش زيادة!
كيف غيرت “الحوسبة بدون خوادم” قواعد اللعبة؟
بالنسبة لي، ولآلاف المطورين حول العالم، الـ Serverless ما كانت مجرد تقنية جديدة، بل كانت نقلة نوعية في طريقة تفكيرنا وبنائنا للتطبيقات. وهاي أهم الأسباب:
وداعاً للتكاليف الخاملة (Pay-per-use)
هاي هي الميزة القاتلة. بدل ما تدفع 50$ أو 100$ شهرياً على سيرفر شغال 24/7، صرت تدفع على قد الاستخدام الفعلي. معظم المنصات السحابية الكبرى بتعطيك “طبقة مجانية” (Free Tier) سخية جداً. مثلاً، AWS Lambda بتعطيك مليون طلب (request) مجاني كل شهر، و 400,000 جيجابايت-ثانية من وقت المعالجة. هذا يعني إنه مشروعي الجانبي، اللي كان يكلفني عشرات الدولارات، صار يكلفني فعلياً صفر! لأنه استخدامه ما تعدى الطبقة المجانية.
التوسع التلقائي (Automatic Scaling) بدون صداع
في عالم السيرفرات التقليدية، إذا فجأة زاد الضغط على موقعك، ممكن السيرفر “يوقع” ويتوقف عن العمل. عشان تحل هاي المشكلة، لازم تجهز نظام معقد من موازنات التحميل (Load Balancers) ومجموعات التوسع التلقائي (Auto-scaling Groups). شغلانة بتاخد وقت وجهد وفلوس.
مع الـ Serverless، كل هذا بصير بشكل تلقائي وسحري. لو وصلك طلب واحد، المنصة بتشغل نسخة وحدة من الكود تبعك. لو وصلك 10,000 طلب في نفس الثانية، المنصة تلقائياً بتشغل 10,000 نسخة متوازية من الكود تبعك عشان تخدم كل الطلبات بدون أي تأخير. وبعد ما يخلص الضغط، كل شي بيرجع للصفر. لا صداع ولا إدارة ولا إعدادات معقدة.
التركيز على الكود، وليس على البنية التحتية
نصيحة من أبو عمر: وقتك كمبرمج هو أثمن أصولك. أي تقنية بتخليك تركز على كتابة كود يحل مشكلة حقيقية بدل ما تضيع وقتك في إدارة السيرفرات وتحديثاتها، هي تقنية تستحق الاستثمار فيها.
قبل الـ Serverless، كنت أقضي ساعات طويلة في تحديث نظام التشغيل، تركيب التحديثات الأمنية (Patches)، ضبط إعدادات الجدار الناري (Firewall)، ومراقبة أداء السيرفر. مع الـ Serverless، كل هاي الهموم راحت. صرت أفتح محرر الأكواد، أكتب المنطق البرمجي اللي بدي إياه، وبكبسة زر أرفعه على السحابة. والباقي؟ “مش شغلتي”. هذا وفر علي وقت ذهبي استثمرته في تطوير ميزات جديدة في تطبيقي.
مثال عملي: بناء واجهة برمجية (API) بسيطة باستخدام AWS Lambda
عشان الصورة تكون أوضح، خلينا نبني API بسيط جداً باستخدام AWS Lambda و Python. هاد الـ API رح يستقبل اسم كـ parameter ويرجع رسالة ترحيب.
الخطوة 1: كتابة الدالة (The Lambda Function)
الكود بسيط ومباشر. كل اللي بنحتاجه هو دالة اسمها lambda_handler. هاي الدالة بتستقبل متغيرين: event (اللي فيه كل معلومات الطلب اللي وصل) و context (اللي فيه معلومات عن بيئة التشغيل).
import json
def lambda_handler(event, context):
# بنستخرج الاسم من الـ query parameters في الرابط
# لو ما لقينا اسم، بنستخدم قيمة افتراضية
try:
# event['queryStringParameters'] ممكن يكون None إذا ما في باراميترز
name = event.get('queryStringParameters', {}).get('name', 'يا صديقي')
except:
name = 'يا صديقي'
message = f"أهلاً وسهلاً فيك يا {name}، من سيرفر أبو عمر الـ Serverless!"
# بنرجع استجابة بصيغة JSON متوافقة مع API Gateway
return {
'statusCode': 200,
'headers': {
'Content-Type': 'application/json; charset=utf-8'
},
'body': json.dumps({'message': message}, ensure_ascii=False)
}
هذا الكود البسيط هو كل تطبيقك. لا إعدادات سيرفر، لا Nginx، لا Apache. مجرد منطق برمجي صافي.
الخطوة 2: ربط الدالة بـ Amazon API Gateway
بعد ما نرفع هذا الكود على AWS Lambda، بنحتاج طريقة عشان نخليه متاح على الإنترنت كرابط (URL) نقدر نطلبه. هون بيجي دور خدمة اسمها Amazon API Gateway. تخيلها زي السكرتير اللي بستقبل “المكالمات” (طلبات HTTP) وبحولها “للموظف” المناسب (دالة Lambda تبعتنا).
بخطوات بسيطة على واجهة AWS، بتقدر تنشئ نقطة نهاية (Endpoint) جديدة وتربطها بالدالة اللي عملناها. النتيجة رح تكون رابط زي هيك: https://xyz123.execute-api.us-east-1.amazonaws.com/prod/greet
النتيجة: API يعمل بتكلفة شبه صفرية!
الآن، لو طلبت الرابط وأضفت عليه ?name=أبو عمر، رح تجيك رسالة الترحيب. هذا الـ API جاهز يستقبل ملايين الطلبات شهرياً ضمن الطبقة المجانية، وقادر على التوسع بشكل تلقائي ليخدم آلاف المستخدمين في نفس اللحظة، وكل هذا بدون ما أمتلك أو أدير أي سيرفر.
نصائح من خبرة أبو عمر: متى تستخدم Serverless ومتى تبتعد عنها؟
زي أي تقنية، الـ Serverless مش حل سحري لكل المشاكل. مهم جداً تعرف متى تستخدمها ومتى تكون الخيارات التقليدية أفضل.
متى تكون Serverless خياراً ممتازاً؟ ✅
- الواجهات البرمجية (APIs) والـ Microservices: مثالية جداً لبناء خدمات صغيرة ومستقلة.
- المهام ذات الاستخدام المتقطع: مثل معالجة الصور عند رفعها، إرسال إيميلات ترحيبية، تحليل بيانات بشكل دوري. ليش تدفع لسيرفر كامل عشان مهمة بتشتغل 5 ثواني كل ساعة؟
- المهام المجدولة (Cron Jobs): بديل رائع وموفر جداً للـ Cron Jobs التقليدية.
- الواجهات الخلفية لتطبيقات الويب والموبايل (Backends): خصوصاً للمشاريع الناشئة اللي حجم استخدامها غير متوقع.
- تطبيقات إنترنت الأشياء (IoT): ممتازة لمعالجة البيانات اللي بتوصل من عدد هائل من الأجهزة بشكل متقطع.
متى يجب التفكير مرتين؟ ⚠️
- المهام طويلة الأمد (Long-running tasks): معظم منصات الـ FaaS عندها حد أقصى لوقت تشغيل الدالة (مثلاً 15 دقيقة في AWS Lambda). إذا عندك مهمة بتحتاج ساعات لتشتغل (مثل تدريب نماذج تعلم الآلة الكبيرة)، فالـ Serverless قد لا تكون الخيار الأنسب.
- التطبيقات الحساسة جداً لزمن الاستجابة (Latency-sensitive): في إشي اسمه “البداية الباردة” (Cold Start). لما الدالة تكون خاملة لفترة ويجيها أول طلب، بتحتاج لوقت إضافي (من مئات أجزاء الثانية إلى ثوانٍ قليلة) عشان “تصحى” وتبدأ تشتغل. هذا التأخير ممكن يكون مشكلة في بعض التطبيقات مثل الألعاب الأونلاين عالية السرعة. (طبعاً في حلول لهالمشكلة مثل Provisioned Concurrency بس بتزيد التكلفة).
- التطبيقات التي تحتاج اتصال دائم (Stateful / WebSockets): طبيعة الـ Serverless هي “عديمة الحالة” (Stateless). كل طلب هو كيان مستقل. إذا تطبيقك بيعتمد على اتصالات WebSocket مفتوحة أو بيحتاج يحافظ على حالة معينة في الذاكرة بين الطلبات، فالعمل مع Serverless رح يكون أصعب (وإن كان ممكناً باستخدام خدمات أخرى مثل قواعد البيانات).
الخلاصة: هل الحوسبة بدون خوادم هي المستقبل؟
بالنسبة لي، الجواب نعم، هي جزء كبير ومهم من المستقبل. هي مش بديل لكل شي، فالسيرفرات التقليدية رح يظل إلها مكانها. لكنها أداة قوية جداً غيرت طريقة تفكيرنا في بناء التطبيقات وتكاليفها.
الانتقال من سيرفر تقليدي كان يلتهم ميزانيتي إلى بنية تحتية بدون خوادم تكلفني صفر دولار شهرياً لمشروعي الجانبي كان بمثابة وحي. أعطاني حرية التجربة والابتكار بدون الخوف من الفواتير الشهرية. سمحلي أركز على اللي بحبه: كتابة الكود وحل المشاكل.
نصيحتي الأخيرة إلك: لا تخاف تجرب. ابدأ بمشروع صغير، API بسيط، أو مهمة مجدولة. استخدم الطبقة المجانية اللي بتقدمها المنصات السحابية. جربها لمشروعك الجانبي القادم، وشوف الفرق بنفسك. ما رح تخسر إشي، بالعكس، ممكن توفر كثير فلوس ووقت وجهد. 😉