تطوير الواجهات الخلفية باستخدام Node.js

واجهات API دائمة التشغيل مع NestJS، ودوال بلا خوادم على AWS Lambda: كُتب الجانب الخادمي من منتجاتنا المنشورة بلغة TypeScript.

نطوّر واجهات خلفية بـ Node.js باستخدام NestJS وExpress وAWS Lambda. تعمل بها واجهة Hippotenus البرمجية وخوادم Rigel وLydiaVault.

آخر تحديث:

ما بنيناه بهذه التقنية

جميعها منشورة؛ صفحات المتاجر والتفاصيل في صفحة المنتجات.

Hippotenus

منصة للمؤسسات التعليمية

NestJS وPrisma مع PostgreSQL؛ المراسلة والإشعارات عبر Socket.IO، والتقارير الأسبوعية ومزامنة التقويم في طوابير Redis، والمدفوعات عبر iyzico.

اعرض المنتج

Rigel

تطبيق فيديو بالذكاء الاصطناعي

دوال TypeScript على AWS Lambda مع MongoDB؛ تُرسل الإشعارات والرسائل البريدية عبر طوابير SQS مع طوابير للرسائل الفاشلة.

اعرض المنتج

LydiaVault

مدرب ميزانية بالذكاء الاصطناعي

دوال TypeScript على AWS Lambda مع MongoDB؛ ربط الحسابات البنكية ومساعد الميزانية العامل بـ OpenAI موجودان على هذا الخادم.

اعرض المنتج

SoruVerse

تطبيق أسئلة ومجتمع جامعي

Express على Firebase Cloud Functions؛ تُرفع الملفات إلى Cloudflare R2 عبر روابط موقّعة محدودة المدة.

اعرض المنتج

أين يتميّز Node.js

يشغّل Node.js لغتي JavaScript وTypeScript على الخادم. تكمن قوته في إدارة عدد كبير من الاتصالات في وقت واحد دون أن يتوقف: فبينما ينتظر رد قاعدة البيانات أو مزود الدفع أو خدمة البريد، يواصل معالجة الطلبات الأخرى. لذلك هو خيار طبيعي لواجهات API والمراسلة الفورية وخدمات التكامل التي تتحدث مع أنظمة أخرى. ولأننا نكتب جانب الويب والجوال بـ TypeScript أيضاً، يتحدث الخادم اللغة نفسها التي يتحدث بها عملاؤه.

حيث يناسب Node.js

  • تحتاج إلى REST API تتصل بها لوحة ويب وتطبيق جوال معاً
  • ستكون هناك مراسلة أو إشعارات حية أو شاشات تتحدث لحظياً
  • تحتاج إلى تكامل مع خدمات خارجية كثيرة مثل الدفع والرسائل القصيرة والتقويم والبريد
  • تريد أن يدير فريق واحد الواجهة الأمامية والخلفية بلغة واحدة

حيث نقترح لغة أخرى

  • جوهر العمل معالجة بيانات كثيفة أو تحليل مستندات أو حوسبة علمية (نقترح Python هنا)
  • البنية التحتية لشركتك وفريقها قائمان على .NET
  • يجب إجراء حسابات طويلة تستهلك المعالج داخل الطلب نفسه

NestJS أم دوال بلا خوادم

نستخدم Node.js بطريقتين. في منصة مثل Hippotenus، كثيرة الوحدات ودائمة التشغيل وتحتفظ باتصالات حية، نكتب واجهة API واحدة باستخدام NestJS. أما في Rigel وLydiaVault فكل نقطة نهاية دالة مستقلة على AWS Lambda، والبنية التحتية معرّفة ككود في قالب AWS SAM. وفي SoruVerse توجد مهام الخادم القليلة التي يحتاجها تطبيق الجوال في تطبيق Express صغير على Firebase Cloud Functions.

NestJS APIAWS Lambda (SAM)Firebase Cloud Functions
طريقة التشغيلخادم واحد يعمل باستمراردوال تعمل عند وصول الطلبدوال مرتبطة بأحداث Firebase والطلبات
الاتصال اللحظيمباشرة عبر Socket.IOعبر الطوابير والجدولةعبر مشغّلات Firestore
يناسبالمنصات متعددة الوحدات وAPI مشتركة للوحة والجوالالواجهات الخلفية لتطبيقات الجوال والحركة المتذبذبةمهام خادم تُضاف إلى تطبيقات تستخدم Firebase
مثالناHippotenusRigel وLydiaVaultSoruVerse

ما داخل واجهة Hippotenus البرمجية

خادم Hippotenus تطبيق NestJS يتولى كل شيء من متابعة الطلاب إلى المدفوعات. في منصة تعليمية يجري كثير من العمل خارج الطلب، لذلك أولينا عناية خاصة للمهام الخلفية والاتصالات الحية:

  • تعمل المراسلة على قناة Socket.IO مستقلة: يصل إرسال الرسائل ومؤشر «يكتب الآن» وإشعار القراءة فوراً، ويُتحقق من الاتصال بمفتاح JWT نفسه المستخدم في جانب HTTP.
  • تُعالج رسائل التقارير الأسبوعية ومزامنة Google Calendar وإشعارات الجوال في طوابير Bull على Redis، فلا ينتظرها طلب المستخدم.
  • تُعدّ المهام المجدولة التقارير الأسبوعية، وتحدّث برامج الدراسة، وتُخفي هوية البيانات الشخصية للمستخدمين الذين حذفوا حساباتهم بعد فترة انتظار.
  • كُتبت طبقة وسيطة تضيف معرّف المؤسسة إلى استعلامات Prisma لإبقاء بيانات كل مؤسسة منفصلة عن غيرها.
  • تُحصّل المدفوعات والاشتراكات عبر iyzico؛ ولأن مزود الدفع يقف خلف واجهة برمجية، لا تعتمد قواعد العمل عليه.
  • يوجد شكل استجابات API وأنواع المصادقة في حزم TypeScript مشتركة، ويستخدمها تطبيق الجوال الذي نطوّره.

بنينا بنية مشابهة في مشروع لأحد العملاء: في نظام لإدارة التعلّم مكتوب بـ NestJS وMongoDB تعمل الاختبارات الحية ولوحات المشاريع على قنوات منفصلة لخادم Socket.IO واحد، وتصل الإشعارات إلى المتصفح عبر web push.

ما نستخدمه بجانب Node.js

NestJS

يأتي بالوحدات وحقن التبعيات والتحكم في الصلاحيات والتحقق من المدخلات جاهزة. كتبنا به واجهة Hippotenus البرمجية وخادم مشروع لأحد العملاء.

Prisma

وصول آمن الأنواع إلى قاعدة البيانات وعمليات migration لتغييرات المخطط. نستخدمه مع PostgreSQL في Hippotenus.

Socket.IO

للمراسلة الفورية والإشعارات الحية والشاشات المشتركة. نستخدمه في Hippotenus وفي مشروع لأحد العملاء.

Redis وBull

لتشغيل أعمال مثل البريد ومزامنة التقويم والإشعارات في طابور خارج الطلب. نستخدمهما في Hippotenus.

AWS Lambda وSAM

دوال بلا خوادم وطوابير SQS ومهام مجدولة، كلها معرّفة في قالب واحد. نستخدمهما في Rigel وLydiaVault.

Swagger / OpenAPI

تُوثّق كل نقطة نهاية في API ويمكن تجربتها من المتصفح. نستخدمه في واجهة Hippotenus البرمجية.

كيف يسير مشروع Node.js

  1. 01

    مكالمة تعريفية مجانية

    30 دقيقة

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

  2. 02

    نطاق مكتوب وعرض سعر

    نكتب نموذج البيانات ونقاط النهاية والتكاملات والاختيار بين NestJS والبنية بلا خوادم.

  3. 03

    إصدارات أسبوعية

    نسلّم كل أسبوع نسخة تعمل، ويمكنك تجربة نقاط النهاية بنفسك من خلال توثيق API.

  4. 04

    الاختبار والإطلاق

    يختبر مهندس ضمان جودة أول النسخة قبل الإطلاق، ثم ننقل الخادم إلى بيئة التشغيل.

  5. 05

    الثلاثون يوماً بعد الإطلاق

    30 يوماً

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

ننشر المدد ونطاقات الميزانية في صفحتي تطوير تطبيقات الويب والأسعار، وتعتمد هذه الصفحة على الأرقام نفسها.

أسئلة شائعة عن Node.js

لماذا NestJS؟ ألا يكفي Express؟

يعمل NestJS أصلاً فوق Express، ويضيف إليه بنية الوحدات والتحكم في الصلاحيات والتحقق من المدخلات وتوثيق API. في منصة كثيرة الوحدات يحافظ هذا النظام على وضوح الكود. أما لخدمة صغيرة من بضع نقاط نهاية فيكفي Express وحده، كما في SoruVerse.

هل يتحمّل Node.js أعباء العمل الثقيلة؟

هو فعّال جداً في الأعمال التي يغلب عليها الانتظار، مثل استدعاءات قاعدة البيانات والخدمات الخارجية. لا نُجري داخل الطلب المهام الطويلة أو التي تجعل المستخدم ينتظر: في Hippotenus تذهب إلى طابور Redis، وفي Rigel يمر إرسال الإشعارات والرسائل البريدية عبر SQS. وفي المشاريع التي تتمحور حول معالجة المستندات والبيانات نفضّل Python.

هل تقدّمون توثيقاً لـ API؟

نعم. كما في واجهة Hippotenus البرمجية، تُوثّق كل نقطة نهاية باستخدام OpenAPI ويمكن تجربتها من المتصفح، وهذا التوثيق يكفي لربط فريق أو نظام آخر.

ماذا يبقى لديّ في نهاية المشروع؟

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

خدمات ذات صلة

تطوير تطبيقات الويبتطوير برمجيات مخصصةتكامل ERP وCRMتطوير MVP
تواصل معنا

لنتحدث عن واجهتك الخلفية بـ Node.js

في مكالمة تعريفية مجانية مدتها 30 دقيقة نحدد معاً نطاق الخادم والاختيار بين NestJS والبنية بلا خوادم.