وداعًا للخوادم! دليل شامل لبناء تطبيقات Serverless مع AWS Lambda و Node.js

استمع للبودكاست حوار شيق بين لمى وأبو عمر
0:00 / 0:00

مقدمة: يومٌ كدتُ أفقد فيه شعري بسبب سيرفر!

بتذكر مرة، كنت شغال على مشروع تجارة إلكترونية صغير، وكل شوي السيرفر يوقع! تخيل، نص الليل وأنا قاعد بعمل troubleshooting، بصلّي إنه الموقع يرجع يشتغل قبل ما الزباين يهربوا. وقتها، فكرت: “يا ريت في طريقة أريح من وجع الراس هذا كله!”. بعدين، اكتشفت الـ Serverless Functions، ومن يومها حياتي أسهل بكتير. 😉

في هالمقالة، رح آخدك في رحلة خطوة بخطوة، من الصفر، لتبني تطبيقات Serverless باستخدام AWS Lambda و Node.js. سواء كنت مبرمج مبتدئ أو محترف، رح تلاقي هون معلومات مفيدة وعملية.

ما هي الـ Serverless Functions؟ (وليش لازم تهتم!)

الـ Serverless Functions، ببساطة، هي دوال برمجية بتنفذها في السحابة بدون ما تهتم بإدارة الخوادم. يعني، أنت بس بتركز على الكود تبعك، و AWS (أو أي مزود خدمة سحابية ثاني) بيتولى كل شي ثاني: تشغيل الكود، وتوسيع نطاقه، وإدارة البنية التحتية.

ليش الـ Serverless أفضل من الخوادم التقليدية؟

  • توفير التكاليف: بتدفع بس لما الكود تبعك يشتغل. ما في تكاليف للخوادم الخاملة.
  • التوسع التلقائي: الـ Serverless بيتوسع تلقائيًا عشان يستوعب حركة المرور المتزايدة.
  • سرعة التطوير: بتقدر تركز على الكود تبعك بدل ما تضيع وقتك في إدارة الخوادم.
  • سهولة النشر: عملية النشر أبسط وأسرع بكثير من الخوادم التقليدية.

AWS Lambda و Node.js: ثنائي قوي!

AWS Lambda هي خدمة الـ Serverless Functions من Amazon Web Services (AWS). بتسمحلك تشغل الكود تبعك بدون ما تدير أي خوادم. Node.js، من ناحية ثانية، هي بيئة تشغيل JavaScript بتخليك تبني تطبيقات خلفية (Backend) بسرعة وسهولة. مع بعض، Lambda و Node.js بيشكلوا ثنائي قوي جدًا لبناء تطبيقات Serverless.

خطوات بناء أول Serverless Function مع AWS Lambda و Node.js

جاهز؟ يلا نبدأ!

1. تجهيز بيئة التطوير

أول شي، تأكد إنك مثبت Node.js و npm (Node Package Manager) على جهازك. إذا ما كانوا مثبتين، نزّلهم من الموقع الرسمي لـ Node.js.

2. إنشاء مشروع Node.js جديد

افتح الـ terminal أو الـ command prompt، وروح للمجلد اللي بدك تعمل فيه المشروع، وشغل الأمر التالي:


mkdir my-serverless-app
cd my-serverless-app
npm init -y

هذا الأمر بينشئ مجلد جديد اسمه `my-serverless-app`، وبدخلك عليه، وبينشئ ملف `package.json` بشكل تلقائي.

3. كتابة الـ Lambda Function

أنشئ ملف جديد اسمه `index.js`، وحط فيه الكود التالي:


exports.handler = async (event) => {
  const response = {
    statusCode: 200,
    body: JSON.stringify({
      message: 'مرحباً يا عالم من Serverless Functions!',
    }),
  };
  return response;
};

هذا الكود بسيط جدًا. هو عبارة عن دالة بتستقبل `event` كمدخل، وبترجع `response` عبارة عن كود حالة (statusCode) ورسالة (body). الـ `event` بيحتوي على معلومات عن الحدث اللي شغل الـ Lambda Function (مثلاً، طلب HTTP).

4. إنشاء حساب AWS وتكوين الـ IAM Role

إذا ما عندك حساب AWS، أنشئ واحد. بعدين، روح لـ IAM (Identity and Access Management) في الـ AWS Console، وأنشئ Role جديد. هذا الـ Role بيعطي الـ Lambda Function صلاحيات لتنفيذ الكود تبعك والوصول لموارد AWS الأخرى (إذا احتجت).

نصيحة: أعطي الـ Role أقل صلاحيات ممكنة (Least Privilege). يعني، بس الصلاحيات اللي الـ Lambda Function تبعك محتاجها.

5. نشر الـ Lambda Function

في طرق كتير لنشر الـ Lambda Function، منها استخدام الـ AWS Console، أو الـ AWS CLI (Command Line Interface)، أو أدوات مثل Serverless Framework. أنا بفضل Serverless Framework لأنه بسهل عملية النشر والإدارة.

لتستخدم Serverless Framework، أول شي، ثبته عالميًا باستخدام الأمر التالي:


npm install -g serverless

بعدين، أنشئ ملف اسمه `serverless.yml` في نفس المجلد تبع المشروع، وحط فيه الكود التالي:


service: my-serverless-app

provider:
  name: aws
  runtime: nodejs16.x
  region: your-aws-region # استبدل بـ المنطقة تبعك (مثلاً us-east-1)
  iamRoleStatements:
    - Effect: "Allow"
      Action:
        - "logs:CreateLogGroup"
        - "logs:CreateLogStream"
        - "logs:PutLogEvents"
      Resource: "arn:aws:logs:your-aws-region:*:*" # استبدل بـ المنطقة تبعك

functions:
  hello:
    handler: index.handler
    events:
      - http:
          path: /hello
          method: get

هذا الملف بيحدد إعدادات الـ Lambda Function تبعك. غير `your-aws-region` بالمنطقة اللي بدك تنشر فيها الـ Lambda Function.

أخيرًا، شغل الأمر التالي لنشر الـ Lambda Function:


serverless deploy

بعد ما يخلص النشر، Serverless Framework رح يعرضلك الـ endpoint (URL) تبع الـ Lambda Function. افتح الـ URL في المتصفح، وشوف النتيجة!

6. اختبار الـ Lambda Function

بعد ما نشرت الـ Lambda Function، اختبرها. تقدر تختبرها عن طريق الـ AWS Console، أو عن طريق إرسال طلب HTTP للـ endpoint تبعها.

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

  • استخدم Logging: استخدم الـ logging عشان تتبع أداء الـ Lambda Function تبعك وتصلح الأخطاء.
  • قسّم الـ Functions: قسّم الـ Lambda Functions تبعك لوظائف صغيرة ومنفصلة. هذا بيسهل عملية الصيانة والتطوير.
  • استخدم الـ Environment Variables: استخدم الـ environment variables عشان تخزن معلومات حساسة (مثلاً، كلمات المرور) بشكل آمن.
  • راقب الأداء: راقب أداء الـ Lambda Functions تبعك باستخدام AWS CloudWatch.

الخلاصة: مستقبل التطبيقات بين إيديك! 🎉

الـ Serverless Functions بتمثل مستقبل التطبيقات السحابية. بتوفرلك مرونة، وتوفير في التكاليف، وسرعة في التطوير. باستخدام AWS Lambda و Node.js، بتقدر تبني تطبيقات قوية ومرنة بدون ما تهتم بإدارة الخوادم.

نصيحة أخيرة: لا تخاف تجرب! الـ Serverless Functions ممكن تبدو معقدة في البداية، بس بمجرد ما تفهم الأساسيات، رح تكتشف إنها بسيطة جدًا وقوية جدًا. جرّب ابني مشروع صغير، وشوف كيف الـ Serverless ممكن يغير طريقة تفكيرك في تطوير التطبيقات.

أبو عمر

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

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

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

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

آخر المدونات

الشبكات والـ APIs

طلبتُ حقلًا واحدًا، فأرسل لي الـ API قاعدة البيانات بأكملها: كيف أنقذني GraphQL من إهدار الباندويث والبيانات غير اللازمة؟

أشارككم قصة حقيقية من مسيرتي كمطور، حين كاد تطبيق جوال أن يفشل بسبب بطء استجابة الـ API. أستعرض كيف أنقذتني تقنية GraphQL من مشاكل إحضار...

5 مارس، 2026 قراءة المزيد
اختبارات الاداء والجودة

اختبارات التكامل قتلت إنتاجيتي: كيف أنقذني ‘اختبار العقود’ من جحيم انتظار الفرق الأخرى

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

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

سيرتي الذاتية عبرت فلتر الـ ATS لكنها فشلت أمام المدير التقني: كيف أعدت بناءها لتتحدث لغة المهندسين؟

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

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