تصميم تطبيق يستند إلى Microservices
عند تصميم تطبيق باستخدام بنية الخدمات المتناهية الصغر، فكر في الالتزام بأفضل ممارسات الخدمات المتناهية الصغر ومنهجية 12 عاملاً لتطوير التطبيقات. حدد نمطًا مناسبًا لتنقيح البيانات وفهم قيمة تشغيل الخدمات المتناهية الصغر في الحاويات المنسقة.
تعلم أفضل الممارسات لتصميم الخدمات الصغيرة
باتباع أفضل الممارسات عند تصميم الخدمات المتناهية الصغر، يمكنك التأكد من سهولة توسيع التطبيق وتوزيعه وصيانته. لاحظ أن أفضل الممارسات التي نوقشت هنا قد لا تكون ذات صلة بتطبيقك.
يجب أن تقوم كل خدمة صغيرة بتنفيذ جزء واحد من وظيفة التطبيق. ويجب على أفرقة التنمية أن تحدد حدود ومسؤوليات كل خدمة صغيرة. ويتمثل أحد النهوج في تحديد خدمة صغيرة لكل مهمة مطلوبة بشكل متكرر في التطبيق. ويتمثل النهج البديل في تقسيم الوظائف حسب مهام الأعمال ثم تحديد خدمة صغيرة لكل منطقة.
ضع في اعتبارك المتطلبات التالية في تصميمك:
- الخدمات المتناهية الصغر: يجب أن ترجع الخدمات المتناهية الصغر استجابة إلى العملاء الطالبين، حتى عندما تفشل الخدمة.
- التوافق للخلف: عند إضافة وظيفة خدمة صغيرة أو تحديثها، يجب ألا تؤثر التغييرات في أساليب ومعاملات API على العملاء. يجب أن تظل واجهة برمجة تطبيقات REST متوافقة مع الخلفية.
- الاتصال المرن: يمكن لكل خدمة متناهية الصغر تحديد البروتوكول الذي يجب استخدامه للاتصال بين العملاء وبوابة API والاتصال بين الخدمات المتناهية الصغر.
- الفكرة: إذا قام عميل باستدعاء خدمة صغيرة عدة مرات، فيجب أن ينتج نفس النتيجة.
- التشغيل الفعال: يجب أن ييسر التصميم سهولة المراقبة واستكشاف الأخطاء وإصلاحها. يُستخدم نظام الأرشيف بشكل شائع لتنفيذ هذا المتطلب
فهم منهجية 12 عامل لتطوير التطبيقات
منهجية 12 عامل لتطوير التطبيقات هي مجموعة من القواعد والمبادئ التوجيهية لتطوير البرمجيات كخدمة (SaaS)، والتطبيقات المحلية للسحابة.
ينبغي أن تتقيد الخدمات البالغة الصغر بالمبادئ التوجيهية التالية:
- التعليمة البرمجية: تحتاج كل خدمة صغيرة إلى رمز واحد يتم تتبعه في مراقبة التغييرات. يجب ألا تشترك الخدمات المتناهية الصغر في رموز.
- التبعيات: يجب أن تقوم كل خدمة صغيرة بتعريف التبعيات الخاصة بها وعزلها وحذفها بشكل صريح.
- التكوين: قد يتغير تكوين التطبيق (على سبيل المثال الصلاحيات) بين عمليات النشر. تخزين بيانات التكوين هذه خارج الخدمة المتناهية الصغر، بحيث تستخدم الخدمة المتناهية الصغر التكوين المناسب الخاص ببيئة النشر.
- خدمات الدعم: يجب أن يستهلك العملاء الخدمات المتناهية الصغر من خلال عناوين URL على الشبكة، ويجب ألا تميز الخدمات المتناهية الصغر بين الخدمات المحلية وخدمات الأطراف الثالثة.
- الإنشاء والإصدار والتشغيل: التعامل مع كل مرحلة في تطوير التطبيق وعملية النشر كخطوة مميزة. في مرحلة الإنشاء، تتم ترجمة التعليمة البرمجية إلى حزمة قابلة للتنفيذ (إنشاء). في مرحلة الإصدار، يجمع البناء مع التكوين الحالي للنشر (التطوير أو الاختبار أو الترحيل أو الإنتاج). في وقت التشغيل، يتم تشغيل التطبيق في بيئة التنفيذ مقابل الإصدار المحدد.
- العمليات: الخدمات المتناهية الصغر عديمة الجنسية وتتبع نموذج "لا شيء مشترك". الحالة موجودة فقط في ذاكرة مخبئية خارجية أو مخزن بيانات.
- ربط المنفذ: تعمل الخدمة المتناهية الصغر في حاوية وتعرض كل واجهاتها عبر المنافذ التي تستمع للطلبات.
- التزامن: يتم توسيع نطاق عملية الخدمات المتناهية الصغر لمعالجة الطلب الأعلى عن طريق إضافة نسخ قيد التشغيل من الخدمة المتناهية الصغر. يمكن لمحرك تنظيم الحاويات المساعدة في هذه العملية.
- قابلية التصرف: يمكن بدء عمليات الخدمات المتناهية الصغر أو إيقافها على الفور عند الضرورة.
- التنمية وتكافؤ الإنتاج: الحفاظ على تشابه بيئتي التنمية والإنتاج قدر الإمكان.
- السجلات: تتم معالجة السجلات كتدفقات أحداث. تقوم الخدمة المتناهية الصغر بكتابة السجلات في تدفق الأحداث الخاص بها، وهو أمر زمني وغير مؤجل مؤقتًا. يجب ألا تتعامل الخدمة المتناهية الصغر مطلقًا مع توجيه تدفق المخرجات الخاص بها أو تخزينه، ويجب ألا تدير ملفات السجل.
- عمليات الإشراف: يجب تشغيل مهام الصيانة والمهام الإدارية كعمليات لمرة واحدة (على سبيل المثال، عمليات ترحيل قاعدة البيانات) في بيئة مماثلة للخدمات المتناهية الصغر.
تحديد نمط تحويل البيانات
النمط الموصى به لتنفيذ الثبات لخدمة صغيرة هو استخدام قاعدة بيانات واحدة. بالنسبة لكل خدمة صغيرة، قم بالاحتفاظ بالبيانات الثابتة الخاصة، وإنشاء قاعدة البيانات كجزء من تنفيذ الخدمات الصغيرة.
وفي هذا النمط، يمكن الوصول إلى البيانات الثابتة الخاصة من خلال واجهة برمجة تطبيقات الخدمات المتناهية الصغر فقط.
يوضح الشكل التوضيحي التالي التصميم الثابت للخدمات الصغيرة.

وصف الشكل التوضيحي microservices_persistence.png
- الجداول الخاصة: تمتلك كل خدمة مجموعة من الجداول.
- المخطط: تمتلك كل خدمة مخطط قاعدة بيانات خاص.
- قاعدة البيانات: تمتلك كل خدمة خادم قاعدة بيانات، كما هو موضح في الشكل التوضيحي.
يتمثل أحد أنماط مقاومة الثبات للخدمات المتناهية الصغر في مشاركة مخطط قاعدة بيانات واحد عبر خدمات متناهية الصغر متعددة. يمكنك تنفيذ معاملات ذرية ومتسقة ومعزولة ودائمة لتحقيق اتساق البيانات. الميزة مع هذا النمط المضاد هي أنه يستخدم قاعدة بيانات بسيطة. وتتمثل العيوب في أن الخدمات المتناهية الصغر قد تتداخل فيما بينها أثناء الوصول إلى قاعدة البيانات، وأن دورات التطوير قد تتباطأ لأن مطوري مختلف الخدمات المتناهية الصغر يحتاجون إلى تنسيق تغييرات المخطط، مما يزيد أيضا من التبعيات فيما بين الخدمات.
يمكن للخدمات المتناهية الصغر الاتصال بطبعة Oracle Database قيد التشغيل على Oracle Cloud Infrastructure. تدعم قاعدة بيانات Oracle متعددة العملاء قواعد بيانات متعددة قابلة للتركيب (PDB) داخل حاوية. هذا هو الخيار الأفضل لطبقة الثبات للخدمات المتناهية الصغر، وعزل السياق المحدود للبيانات والأمان والتوافر العالي. وفي العديد من الحالات، يمكن استخدام عدد أقل من قواعد البيانات القابلة للتركيب مع العزلة على مستوى المخطط.
فهم قيمة نشر الخدمات المتناهية الصغر في الحاويات
بعد بناء الخدمة المتناهية الصغر الخاصة بك، يجب حاويتها. لا تؤثر الخدمة المتناهية الصغر الجاري تشغيلها في الحاوية الخاصة بها على الخدمات المتناهية الصغر المنشورة في الحاويات الأخرى.
الحاوية هي وحدة برمجيات موحدة تستخدم لتطوير التطبيقات وشحنها ونشرها.
تتم إدارة الحاويات باستخدام محرك حاوية، مثل Docker. يوفر محرك الحاوية الأدوات اللازمة لتجميع كل تبعيات التطبيق كحاوية.
يمكنك استخدام محرك Docker لتكوين تطبيقات Microservices ونشرها وتشغيلها في الحاويات. تتميز الخدمات المتناهية الصغر التي تعمل في حاويات Docker بالخصائص التالية:
- المعيار: الخدمات المتناهية الصغر قابلة للنقل. ويمكنهم العمل في أي مكان.
- الوزن الخفيف: يشترك Docker في نواة نظام التشغيل (OS)، ولا يتطلب نظام التشغيل لكل طبعة، ويعمل كعملية خفيفة الوزن.
- آمن: تعمل كل حاوية كعملية معزولة. وبالتالي فإن الخدمات المتناهية الصغر مأمونة.
تتضمن عملية حاوية خدمة صغيرة تكوين Dockerfile، وإنشاء صورة حاوية تتضمن تبعياتها والتكوين البيئي، وتوزيع الصورة على محرك Docker، وتحميل الصورة إلى سجل حاويات للتخزين والاسترجاع.

وصف الشكل التوضيحي docker_container_process.png
تعرف على كيفية تنظيم الخدمات المتناهية الصغر باستخدام Kubernetes
يجب أن تكون الخدمات المتناهية الصغر التي تعمل في الحاويات قادرة على التفاعل والتكامل لتوفير وظائف التطبيق المطلوبة. ويمكن تحقيق هذا التكامل من خلال تنظيم الحاويات.
يتيح لك تنظيم الحاويات إمكانية بدء الحاويات وإيقافها وتجميعها في مجموعات. كما أنه يمكّن من زيادة التوافر والتوسع. Kubernetes هو أحد منصات تنظيم الحاويات التي يمكنك استخدامها لإدارة الحاويات.
بعد حاوية الخدمات المتناهية الصغر، يمكنك توزيعها على Oracle Cloud Infrastructure Container Engine for Kubernetes.
قبل توزيع تطبيق الخدمات المتناهية الصغر في حاويات على السحابة، يجب توزيعه واختباره في محرك Kubernetes محلي، على النحو التالي:
- قم بتكوين تطبيق Microservices.
- إنشاء صور Docker، لحاوية الخدمات المتناهية الصغر.
- قم بتشغيل الخدمات المتناهية الصغر في محرك Docker المحلي.
- قم بإرسال صور الحاوية إلى سجل حاويات.
- نشر الخدمات المتناهية الصغر وتشغيلها في محرك Kubernetes محلي، مثل Minikube.
بعد اختبار التطبيق في مشغل Kubernetes محلي، قم بتوزيعه في Oracle Cloud Infrastructure Container Engine for Kubernetes على النحو التالي:
- تكوين مجموعة.
- تنزيل ملف
kubeconfig. - تثبيت أداة
kubectlعلى جهاز محلي. - قم بإعداد ملف
deployment.yaml. - نشر الخدمة المتناهية الصغر في المجموعة.
- اختبار الخدمة الصغرى.
يوضح الشكل التالي عملية توزيع تطبيق خدمات مصغرة في حاوية على Oracle Cloud Infrastructure Container Engine for Kubernetes.

وصف الشكل التوضيحي oke_deployment_process.png