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

أبو عمر

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

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

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

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

آخر المدونات

تجربة المستخدم والابداع البصري

من الكنباية في بالي إلى الكنباية في صالوني: رحلتي مع الواجهات الفضائية والواقع المعزز

أشارككم خبرتي كمبرمج فلسطيني في عالم الواجهات الفضائية (Spatial UX) والواقع المعزز. نستكشف معًا كيف تحولت الشاشات المسطحة إلى تجارب ثلاثية الأبعاد غامرة، ونتناول التحديات...

14 يناير، 2026 قراءة المزيد
تجربة المستخدم والابداع البصري

التصميم التوقعي والواجهات غير المرئية: كيف تجعل تطبيقاتك تقرأ أفكار المستخدمين؟

من منظور مطور برمجيات، أغوص في عالم التصميم التوقعي والواجهات غير المرئية (Zero UI). نستكشف كيف يمكن للتطبيقات أن تتنبأ باحتياجاتك قبل أن تطلبها، مع...

13 يناير، 2026 قراءة المزيد
من لمسة يد إلى همسة صوت: كيف تبني الواجهات متعددة الأنماط جيلاً جديداً من التجارب الرقمية
تجربة المستخدم والابداع البصري

من لمسة يد إلى همسة صوت: كيف تبني الواجهات متعددة الأنماط جيلاً جديداً من التجارب الرقمية

بدلاً من الاعتماد على الشاشات والنقر فقط، المستخدمون اليوم يتوقون لتفاعل طبيعي وسلس مع التكنولوجيا. في هذه المقالة، نستكشف عالم الواجهات متعددة الأنماط (Multimodal Interfaces)...

13 يناير، 2026 قراءة المزيد
تجربة المستخدم والابداع البصري

واجهتك تعرفك أكثر منك: كيف يصنع الذكاء الاصطناعي تجربة مستخدم فريدة لكل شخص؟

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

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

الذكاء الاصطناعي الصوتي في البنوك: من طوابير الانتظار إلى معاملات فورية بصوتك

وكلاء الصوت الذكية يمثلون ثورة في كيفية تفاعل العملاء مع البنوك، محولين المعاملات المعقدة إلى محادثات طبيعية. في هذه المقالة، نستكشف كيف يغير الذكاء الاصطناعي...

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

المالية المفتوحة: كيف تستعيد ملكية بياناتك المالية وتصنع مستقبلك؟

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

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