وداعًا للخوادم! دليل شامل لبناء تطبيقات 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 ممكن يغير طريقة تفكيرك في تطوير التطبيقات.

أبو عمر

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

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

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

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

آخر المدونات

ادارة الفرق والتنمية البشرية

من جحيم الاعتماد على شخص واحد إلى ذاكرة فريق جماعية: قصة نجاحنا مع سجلات قرارات الهندسة (ADRs)

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

15 أبريل، 2026 قراءة المزيد
أتمتة العمليات

فريقنا كان يغرق في النقرات: كيف أنقذتنا ‘أتمتة العمليات الروبوتية’ (RPA) من جحيم المهام اليدوية؟

أشارككم قصة حقيقية من قلب الميدان، كيف تحول فريقنا من الإرهاق في المهام المتكررة إلى الإبداع والإنتاجية بفضل أتمتة العمليات الروبوتية (RPA). مقالة عملية للمبرمجين...

15 أبريل، 2026 قراءة المزيد
ذكاء اصطناعي

نماذجنا اللغوية كانت تهلوس: كيف أنقذنا ‘الاسترجاع المعزز للتوليد’ (RAG) من جحيم الإجابات الخاطئة؟

أشارككم قصة حقيقية من أرض الميدان عن "هلوسة" نماذج الذكاء الاصطناعي وكيف أصبحت تقنية الاسترجاع المعزز للتوليد (RAG) طوق النجاة. هذا دليل عملي، من مبرمج...

15 أبريل، 2026 قراءة المزيد
خوارزميات

حساباتنا كانت تعيد اختراع العجلة: كيف أنقذتنا البرمجة الديناميكية من جحيم التكرار؟

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

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

ميزانيتنا كانت تتبخر: كيف أنقذتنا ‘نماذج الإحالة المبنية على البيانات’ من جحيم تخمين عائد الاستثمار؟

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

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