مرحبًا بكم في اليوم الخامس من 12 يومًا من DigitalOcean! بالأمس، قمت بإعداد خدمة تذكير عيد الميلاد لتعمل على وظائف DigitalOcean، مما يعني أنها الآن بدون خادم وجاهزة للعمل في السحابة. 🎉 اليوم، ستأخذها خطوة أخرى من خلال أتمتتها لتعمل وفق جدولها الخاص – دون الحاجة إلى إدخال يدوي.
بنهاية هذا الدليل، ستعمل خدمتك (أو أي وظيفة أخرى تعمل عليها) تلقائيًا في وقت محدد كل يوم. هذا يعني أنه لا داعي لتذكر تشغيلها بنفسك – إنها تعمل ببساطة.
لماذا الأتمتة؟
كان نشر وظيفتك إلى السحابة انتصارًا كبيرًا بالأمس، لكن الحاجة إلى تشغيلها يدويًا تفسد الغرض من الأتمتة. تركيز اليوم هو على جدولة الخدمة لتعمل تلقائيًا – مثل الساعة – حتى تتمكن من ضبطها ونسيانها. تحتوي وظائف DigitalOcean على جدولة مدمجة باستخدام المحفزات لهذا الغرض بالذات، ولديك طريقتان لإعدادها.
🚀 ما ستتعلمه
بنهاية اليوم، ستعرف كيفية:
- إعداد مشغل يومي لتشغيل دالتك تلقائيًا.
- تعلم طريقتين للقيام بذلك – من خلال لوحة تحكم DigitalOcean أو باستخدام
doctl
CLI وproject.yml
. - اختبر الإعداد للتأكد من أنه يعمل.
🛠 ما ستحتاجه
قبل البدء، تأكد من أنك تمتلك ما يلي:
- دالة تم نشرها بالفعل على DigitalOcean (على سبيل المثال، خدمة تذكير بعيد الميلاد من اليوم 4: بناء خدمة تذكير بعيد الميلاد) لتقوم بأتمتتها باستخدام المشغلات.
- إذا كنت تستخدم واجهة سطر الأوامر
doctl
، ستحتاج إلى ملفproject.yml
لوظيفتك. يمكنك الاطلاع على اليوم الرابع للحصول على تعليمات حول تثبيت وإعداد واجهة سطر الأوامرdoctl
، وإنشاء ملفproject.yml
.
🧑🍳 وصفة لليوم الخامس: أتمتة الوظائف باستخدام المحفزات
الخطوة 1: إعداد محفز لوظيفتك
تمنحك DigitalOcean خيارين لإعداد المحفزات:
- الخيار 1: استخدم لوحة التحكم للإعداد السريع والسهل.
- الخيار 2: استخدم واجهة سطر الأوامر
doctl
للحصول على تحكم أكثر قوة وبرمجياً.
تحذير: تذكر أن الزنادات التي تم إنشاؤها في لوحة التحكم تفقد إذا قمت بإعادة نشر الوظيفة باستخدام واجهة سطر الأوامر. إذا كنت ستقوم بإعادة النشر بشكل متكرر، استخدم الخيار 2 لإضافة الزنادات مباشرة إلى ملف project.yml
.
الخيار 1: استخدام لوحة التحكم لإنشاء زناد
أسهل طريقة لإعداد زناد هي من خلال لوحة التحكم في DigitalOcean. إنها سريعة، ولا تتطلب إعدادًا، ومثالية لتكوينات بسيطة لمرة واحدة.
- انتقل إلى صفحة الوظائف الرئيسية في لوحة تحكم DigitalOcean.
- ابحث عن وظيفتك (على سبيل المثال،
reminders/birthdays
) وانقر على علامة التبويب الزنادات.
- انقر على إنشاء زناد، وأضف اسماً للزناد الخاص بك. يمكن أن يكون أي وصف، مثل
daily-birthday-trigger
. يجب أن يحتوي الاسم على أحرف أبجدية رقمية فقط، وشرطات، ونقاط. - أضف تعبير cron لتحديد الجدول الزمني. على سبيل المثال،
0 9 * * *
يعني أن الوظيفة ستعمل كل يوم في الساعة 9:00 صباحًا.
ملاحظة: إذا كنت غير متأكد من كيفية عمل cron؟ قم بزيارة crontab.guru للحصول على دليل مفيد.
- احفظ الزناد.
بمجرد إنشاء الزناد الخاص بك، من الجيد اختباره للتأكد من أن كل شيء يعمل كما هو متوقع. انتقل إلى القسم اختبار التلقائي أدناه لمعرفة كيفية القيام بذلك.
تحذير: بينما تكون لوحة التحكم بسيطة وفعالة، فإن أي مشغلات تقوم بإنشائها هنا ستتم كتابة فوقها أو حذفها إذا قمت بإعادة نشر الوظيفة باستخدام واجهة سطر الأوامر (CLI). للتحديثات المتكررة أو النشر البرمجي، انتقل إلى الخيار 2.
الخيار 2: استخدام واجهة سطر الأوامر doctl
مع project.yml
يمكنك أيضًا إنشاء مشغلات عن طريق إضافتها مباشرة إلى ملفك project.yml. هذه الطريقة أكثر موثوقية للتجديدات المتكررة لأنها تضمن أن مشغلاتك مضمنة دائمًا في تكوين الوظيفة. على عكس خيار لوحة التحكم الموصوف سابقًا، تمنع هذه الطريقة المشغلات من الكتابة فوقها أو فقدانها أثناء إعادة النشر.
إليك كيف يمكنك إعداد ذلك:
-
افتح ملف
project.yml
الخاص بك من اليوم الرابع: نشر إشعارات عيد الميلاد باستخدام وظائف DigitalOcean. قد يبدو شيء مثل هذا: -
أضف قسم
triggers
إلى تكوين وظيفتك لتحديد الجدول الزمني: -
ملف
project.yml
المحدث النهائي:هذا يخبر DigitalOcean بتشغيل وظيفة
birthdays
كل يوم في الساعة 9:00 صباحًا.-
triggers
القسم: يحدد الاسم والنوع والجدول الزمني للمشغل. يمكنك تسمية المشغل الخاص بك بأي شيء وصفي، مثلdaily-birthday-trigger
. -
cron
: يحدد الوقت الذي ستعمل فيه الوظيفة يوميًا بتوقيت UTC. على سبيل المثال، تعبير الكرون0 9 * * *
يحدد تشغيل الوظيفة كل يوم في الساعة 9:00 صباحًا.
-
-
احفظ الملف ونشره عن طريق تشغيل الأمر التالي من الدليل الذي يحتوي على مجلد
my-birthday-reminder-service
:مهم: تأكد من تشغيل الأمر من الدليل الأب، وليس داخل مجلد
my-birthday-reminder-service
. تشغيله من الموقع الخاطئ يمكن أن يؤدي إلى خطأ مثل هذا: -
بمجرد أن يتم النشر بنجاح، سترى رسالة تأكيد مشابهة لهذه:
-
انتقل إلى لوحة التحكم الخاصة بك للتحقق مما إذا تم إنشاء المشغل تحت قسم الوظائف.
نصيحة محترف: لاختبار المشغل الخاص بك، قم بتعيين التعبير cron مؤقتًا إلى بضع دقائق من الآن (على سبيل المثال، 28 9 * * *
إذا كانت الساعة 9:25 صباحًا). بعد التأكد من أنه يعمل، قم بتحديثه مرة أخرى إلى الجدول الزمني المقصود وأعِد نشره.
الخطوة 2: اختبار التلقائي
لنختبر المشغلات الخاصة بك للتأكد من أنها تعمل. بدلاً من الانتظار حتى يتم تنفيذها وفقًا لجدولها الزمني المعتاد، يمكنك تعيينها مؤقتًا لتشغيلها بضع دقائق من الآن. إليك كيفية فعل ذلك:
-
قم بتعيين التعبير cron الخاص بالمشغل إلى بضع دقائق من الوقت الحالي (بتوقيت UTC). على سبيل المثال، إذا كانت الساعة 9:25 صباحًا بتوقيت UTC، فقم بتعيين التعبير cron إلى
28 9 * * *
حتى تعمل الوظيفة في الساعة 9:28 صباحًا بتوقيت UTC.ملاحظة: غير متأكد كيفية تحويل الوقت المحلي إلى UTC؟ يمكن أن تساعد الأدوات مثل محول التوقيت.
-
احفظ المشغل المحدث (إذا كنت تستخدم لوحة التحكم) أو أعد نشر ملف
project.yml
المحدث الخاص بك (إذا كنت تستخدم واجهة سطر الأوامر): -
انتظر حتى يتم تنفيذ المشغل، ثم تحقق من سجلات التفعيل لتأكيد أن الوظيفة قد تم تشغيلها بنجاح:
ملاحظة: تسجل سجلات التفعيل تفاصيل حول متى تم تنفيذ الوظيفة الخاصة بك، بما في ذلك ما إذا كانت قد نجحت في التشغيل أو واجهت أخطاء. إنها وسيلة مفيدة للتحقق من أن الزناد قد تم تفعيله في الوقت المحدد.
ستعيد هذه الأمر تفاصيل عن أحدث تفعيل لوظيفتك. على سبيل المثال، قد ترى شيئًا مثل هذا:
هذا يؤكد أن الزناد قد تم تفعيله وأن الوظيفة قد تم تفعيلها بنجاح! 🎉
ملاحظة: بمجرد التحقق من أن كل شيء يعمل، قم بتحديث تعبير الكرون إلى الجدول الزمني المطلوب (على سبيل المثال، 0 9 * * *
ل9:00 صباحًا بتوقيت غرينتش يوميًا) واحفظ أو أعد نشر.
ملاحظة سريعة حول السجلات
بينما يعد الأمر سجلات التفعيل
وسيلة رائعة للتحقق من عمليات التشغيل الأخيرة، في بعض الأحيان ستحتاج إلى سجلات أكثر تفصيلاً لاستكشاف الأخطاء أو التحقيق في مشكلات مع وظيفتك. توفر DigitalOcean أيضًا خيارات لإعادة توجيه هذه السجلات إلى خدمات تسجيل خارجية، مما يسهل المراقبة وحل المشاكل في تطبيقك مع مرور الوقت.
في اليوم السادس، ستتعلم كيفية عرض السجلات مباشرة، تفسيرها بشكل فعال، وإعداد تحويل السجلات إلى خدمات خارجية مثل Logtail أو Papertrail. ستساعدك هذه الأدوات على البقاء على اطلاع بأداء وظائفك بسهولة.
🎁 الخاتمة
إليك ما أنجزته اليوم:
- لقد قمت بأتمتة خدمة تذكير عيد الميلاد الخاصة بك (أو أي وظيفة أخرى) لتعمل يوميًا.
- لقد تعلمت طريقتين لإعداد المحفزات—من خلال لوحة التحكم ومع
doctl
CLI. - لقد اختبرت إعدادك للتأكد من أنه يعمل كما هو متوقع.
إليك الدروس السابقة من هذه السلسلة:
- اليوم 1: إعداد قاعدة بيانات PostgreSQL لتذكيرات عيد الميلاد
- اليوم 2: الاتصال بقاعدة بيانات PostgreSQL الخاصة بك باستخدام بايثون
- اليوم 3: التحقق من تواريخ الميلاد وإرسال إشعارات SMS
- اليوم الرابع: نشر إشعارات عيد الميلاد إلى الوظائف
التالي: الآن بعد أن تعمل خدمتك بشكل مستقل، الخطوة التالية هي مراقبتها بفعالية. في البرنامج التعليمي التالي، ستتعلم كيفية عرض سجلات وظائفك وإرسالها إلى خدمات خارجية لتبسيط التتبع وحل المشكلات. أراك حينئذ!
Source:
https://www.digitalocean.com/community/tutorials/automating-birthday-reminders-with-triggers