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

أبو عمر

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

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

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

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

آخر المدونات

برمجة وقواعد بيانات

تحديثات قاعدة البيانات بدون توقف: كيف أنقذنا نمط التوسيع والتعاقد (Expand/Contract) من جحيم التوقفات المجدولة؟

هل سئمت من إيقاف الخدمة مع كل تحديث لهيكلة قاعدة البيانات؟ أشارككم قصة حقيقية وكيف أنقذنا نمط التوسيع والتعاقد (Expand/Contract) من ليالي النشر الطويلة والمُجهدة،...

4 يونيو، 2026 قراءة المزيد
الشبكات والـ APIs

كانت إعادة المحاولة كارثة: كيف أنقذتنا مفاتيح عدم تكرار العمليات (Idempotency Keys) من جحيم الفواتير المزدوجة؟

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

4 يونيو، 2026 قراءة المزيد
الحوسبة السحابية

من التوقف التام إلى النجاة: كيف أنقذتنا استراتيجية “الضوء المرشد” (Pilot Light) يوم انقطعت السحابة؟

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

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

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

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

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

من الانتظار لأيام إلى الدفع في ثوانٍ: كيف أنقذتنا شبكات الدفع الفوري من جحيم التحويلات البنكية؟

أسرد لكم من واقع تجربتي كـ "أبو عمر"، كيف عانينا من بطء وتكلفة التحويلات البنكية الدولية، وكيف جاءت شبكات الدفع الفوري ومعيار ISO 20022 لتكون...

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

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

في هذه المقالة، أشارككم قصة حقيقية من قلب المعركة التقنية مع "خوادم ندفات الثلج" الفوضوية. سنغوص في مفهوم "الكود كبنية تحتية" (IaC) وكيف أن أدوات...

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

كانت تغطية الاختبارات 100% لكن الأخطاء تتسرب: كيف أنقذنا “الاختبار الطفري” من جحيم الثقة الزائفة؟

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

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