Rigel
تطبيق فيديو بالذكاء الاصطناعي
دوال Lambda خلف API Gateway؛ إرسال الإشعارات والرسائل البريدية عبر SQS مع طوابير للرسائل الفاشلة، والملفات في S3، ومفتاح OpenAI في Secrets Manager، والتنبيهات في CloudWatch. وكل ذلك في قالب SAM واحد.
اعرض المنتججميعها منشورة؛ صفحات المتاجر والتفاصيل في صفحة المنتجات.
تطبيق فيديو بالذكاء الاصطناعي
دوال Lambda خلف API Gateway؛ إرسال الإشعارات والرسائل البريدية عبر SQS مع طوابير للرسائل الفاشلة، والملفات في S3، ومفتاح OpenAI في Secrets Manager، والتنبيهات في CloudWatch. وكل ذلك في قالب SAM واحد.
اعرض المنتجمدرب ميزانية بالذكاء الاصطناعي
API Gateway وLambda؛ تُحفظ إيصالات المصروفات في S3 وتُفتح عبر روابط موقّعة محدودة المدة، وتُرسل رسائل إعادة تعيين كلمة المرور عبر SES، وتصل webhooks ربط الحسابات البنكية إلى دالة مستقلة.
اعرض المنتجلا يوجد في الواجهة الخلفية بلا خوادم (serverless) خادم يعمل طوال الوقت. يعيش الكود كدوال على AWS Lambda ولا يعمل إلا عند وصول طلب أو رسالة في طابور أو حلول موعد مهمة مجدولة. ومع ازدياد الطلبات يشغّل AWS نسخاً جديدة من الدالة نفسها؛ أما نظام التشغيل والسعة وتوزيع الحمل فمسؤولية AWS. ويبقى عملنا أن نُعدّ الدوال والطوابير بينها والصلاحيات والمراقبة إعداداً صحيحاً.
| AWS Lambda (مع SAM) | خادمك الخاص (مع Docker وCoolify) | |
|---|---|---|
| عند غياب الحركة | لا تعمل الدوال؛ ويُحتسب سعر Lambda بعدد الطلبات ومدة التشغيل | الخادم يعمل دائماً وسعره لا يتغير |
| الذروات المفاجئة | يشغّل AWS نسخاً جديدة؛ ويحدد السقفَ حصةُ التشغيل المتزامن في الحساب وقاعدةُ البيانات | محدود بقدرة الخادم؛ وتوسيعه يحتاج إلى تخطيط مسبق |
| المهام الطويلة والاتصالات المفتوحة | يُقسَّم العمل إلى طابور أو دالة منفصلة | تحمله عملية تعمل باستمرار مباشرة |
| الصيانة | نظام التشغيل على AWS؛ ونحن نرفع إصدار Node.js في القالب | تحديثات نظام التشغيل والأقراص والنسخ الاحتياطي مسؤوليتك أو مسؤولية فريق الصيانة |
| مثالنا | Rigel وLydiaVault | Hippotenus وLogaritim وpepechura.com |
تعمل الواجهتان الخلفيتان للتطبيقين اللذين طوّرناهما لـ Kata Technology على AWS بلا خوادم. وقاعدة البيانات في كليهما MongoDB، أما بقية الأجزاء فخدمات من AWS:
نقاط نهاية API وwebhooks وعمّال الطوابير والمهام المجدولة. وفي Rigel تعمل المهام الثقيلة مثل دمج الفيديو في دوال منفصلة مزوّدة بطبقة ffmpeg وذاكرة أكبر.
بوابة REST API. تتحقق دالة تفويض (Lambda authorizer) من JWT الخاص بالمستخدم قبل أن يصل الطلب إلى الدالة. في Rigel وLydiaVault، وتُقدَّم واجهة Rigel البرمجية من نطاقها الخاص.
طوابير إرسال الإشعارات والرسائل البريدية في Rigel؛ وخلف كل طابور طابور للرسائل الفاشلة (DLQ) يجمع الرسائل التي تعذّرت معالجتها.
الصور المرفوعة والفيديوهات المُنتَجة في Rigel، وإيصالات المصروفات في LydiaVault. تُفتح الصور والإيصالات عبر روابط موقّعة محدودة المدة، وتُقدَّم فيديوهات Rigel عبر CloudFront.
يقرأ Rigel منه مفتاح OpenAI ومفتاح توقيع JWT وحساب خدمة Firebase، وتبقى القيمة في الذاكرة ما دامت نسخة الدالة تعمل.
رموز التحقق عند التسجيل ورسائل الحملات في Rigel، ورسائل إعادة تعيين كلمة المرور في LydiaVault.
السجلات، ومقاييس مستخرجة من السجلات، والتنبيهات، ولوحات المتابعة. ويتتبع X-Ray استدعاءات الدوال في التطبيقين.
ذاكرة تخزين مؤقت لصفحة الاستكشاف في Rigel؛ ويحذف DynamoDB السجلات تلقائياً عند انتهاء صلاحيتها.
في Lambda تفتح كل نسخة من الدالة اتصالها الخاص بقاعدة البيانات. لذلك نحتفظ باتصال MongoDB خارج الطلب، على مستوى الوحدة: تعيد الطلبات اللاحقة التي تصل إلى النسخة نفسها استخدام الاتصال القائم، ونُبقي مجمّع الاتصالات صغيراً عن قصد. وفي Rigel يُفحص الاتصال قبل استخدامه، فإذا كان قد انقطع يُغلق ويُفتح اتصال جديد.
لا تُرسل حملات الإشعارات والبريد التي تُعدّ في لوحة إدارة Rigel داخل طلب اللوحة نفسه، بل يتوزع الإرسال على دوال تفصل بينها طوابير SQS:
دوال Rigel وواجهته البرمجية وطوابيره وطوابير الرسائل الفاشلة ومهامه المجدولة وجدول DynamoDB والتنبيهات ولوحات المتابعة والنطاق المخصص كلها معرّفة في قالب AWS SAM واحد. وفي LydiaVault أيضاً تُعرَّف الدوال والواجهة البرمجية ودالة التفويض في القالب بالطريقة نفسها. ويعيش القالب في المستودع نفسه مع الكود، فيُظهر سجل الـ commits متى ولماذا أُضيف طابور أو تنبيه.
| الموضوع | كيف يعمل في Rigel | ما الذي يضيفه |
|---|---|---|
| البيئات | stacks منفصلة لـ staging وproduction من القالب نفسه، وإعدادات كل بيئة في ملف samconfig | تُبنى البيئتان من تعريف واحد، وتُفعَّل التنبيهات ولوحات المتابعة بشروط في production فقط |
| التحزيم | يحزم sam build كل دالة على حدة وبصيغة مصغّرة عبر esbuild | تحمل كل دالة كودها فقط |
| النشر | يعرض sam deploy مجموعة تغييرات CloudFormation ويطلب الموافقة قبل تطبيقها | يُرى مسبقاً ما الذي سيُضاف أو يتغير أو يُحذف |
| التطوير المحلي | يمكن تشغيل الواجهة البرمجية على حاسوب المطوّر عبر sam local | يمكن تجربة التغيير قبل أن يصل إلى AWS |
| الفحوص | مع كل push وpull request إلى فرعي main وdevelop يشغّل GitHub Actions فحص lint وفحص الأنواع واختبارات الوحدات | يظهر مبكراً الكود الذي لا يُترجَم أو يكسر اختباراً |
والمراقبة جزء من القالب أيضاً. يكتب Rigel سجلاته بصيغة JSON منظّمة، وتحوّل مرشحات المقاييس في CloudWatch أسطراً معينة من السجلات، مثل حالات فشل إنتاج الفيديو وأخطاء الدفع في RevenueCat، إلى مقاييس. وعندما يتجاوز مقياس حدّه يُطلق تنبيهاً يمر عبر SNS إلى دالة Lambda ومنها إلى Slack. كما تُرسل أسطر السجلات ذات مستوى الخطأ من الدوال الحرجة إلى Slack كذلك. وفي Rigel يضم X-Ray إلى التتبع أيضاً استدعاءات HTTP الصادرة إلى الخدمات الخارجية.
نتحدث عن الأعمال التي يجب أن تتم فوراً وتلك التي يمكن أن تجري في الخلفية، وعن الوضع الحالي لحساب AWS لديك.
نكتب الدوال والطوابير والمهام المجدولة وتخزين البيانات والملفات والمراقبة، مع معايير القبول.
كل أسبوع تصدر نسخة عاملة إلى بيئة staging، ويمكنك تجربة نقاط النهاية من التطبيق نفسه أو من عميل API.
يختبر مهندس ضمان جودة أول النسخة على staging قبل انتقالها إلى production، وعند الانتقال تُراجَع مجموعة التغييرات ويُوافَق عليها.
نصلح مجاناً الأخطاء التي تُكتشف في هذه الفترة، وبعدها يمكنك الاستمرار بصيانة شهرية.
تجد المدد ونطاقات الميزانية في صفحات خدماتنا وصفحة الأسعار، ولا تتضمن هذه الصفحة أي رقم يختلف عنها.
جزئياً، ونقول ذلك بوضوح منذ البداية. قواعد العمل موجودة في كود TypeScript عادي، وقاعدة البيانات MongoDB، ولا يرتبط أي منهما بـ AWS. أما SQS وSES وSecrets Manager وقالب SAM فخاصة بـ AWS، والانتقال إلى بيئة أخرى يعني إعداد بدائلها. في المقابل، واجهة S3 معيار شائع: يحفظ Hippotenus ملفاته في خدمة تخزين أخرى متوافقة مع S3 باستخدام AWS SDK نفسه.
يحدث تأخير قصير عند تشغيل نسخة الدالة لأول مرة. ولتقليصه نحزم كل دالة على حدة وبصيغة مصغّرة عبر esbuild، ونُبقي اتصال قاعدة البيانات، وفي Rigel القيم المقروءة من Secrets Manager، في الذاكرة ما دامت النسخة تعمل. وهكذا لا يتحمل هذه الكلفة إلا أول طلب يصل إلى النسخة. وإذا كان كل طلب في عملك شديد الحساسية للتأخير، نتناول ذلك على حدة في المكالمة التعريفية.
ليس في Rigel ولا LydiaVault: كلاهما يعمل على Lambda دون إدارة خوادم أو حاويات، وقاعدتا بياناتهما MongoDB. وفي المشاريع التي تحتاج إلى حاوية تعمل باستمرار، كما في Hippotenus وLogaritim، نستخدم خادمنا الخاص مع Docker وCoolify.
نعم. لأن البنية التحتية معرّفة في القالب، يمكن نشر القالب نفسه في حسابك، ونُعدّ staging وproduction كـ stacks منفصلة. أما الموارد التي تُنشأ خارج القالب، مثل S3 bucket وشهادة النطاق، فتُمرَّر إليه كمعاملات، فيبقى واضحاً مصدر كل مورد.
ترخيص دائم لاستخدام البرنامج، ووثائقه. وإذا أردت نقل الكود المصدري إليك مع قالب SAM فذلك مقابل رسوم إضافية تُكتب بشكل منفصل في العرض.
في مكالمة تعريفية مجانية مدتها 30 دقيقة نحدد معاً أي أجزاء تطبيقك تناسب Lambda، وأيها يناسب طابوراً أو خادمك الخاص.