لقد أدى ظهور العصر الرقمي إلى تحقيق تقدم تقني يسهّل أسلوب حياة البشر. تم إطلاق العديد من التطبيقات في هذه المرحلة، وهناك العديد من التطبيقات الأخرى في الطريق لتوفير الراحة للعملاء وتعزيز الأعمال. تحتوي التطبيقات المطورة على العديد من الأنماط المعمارية التي تحتوي كل منها على خدمات مدمجة تعتمد على واجهات برمجة التطبيقات. مع هذه العملية المتتالية يصبح إجراء تغييرات في خدمة واحدة في التطبيق مهمة صعبة، لذا تأتي هنا الخدمات المصغرة.
الخدمات المصغرة هي طريقة لتطوير التطبيقات يقوم فيها المطورون بتطوير تطبيق واحد من خلال دمج عدة خدمات فردية صغيرة جداً. وهنا، يمكن نشر كل خدمة بشكل مستقل عن طريق برنامج docker على مجموعة من الأجهزة، مما يساعد المطورين على التركيز على الخدمة التي يزداد الطلب عليها أو تحتاج إلى تحسين.
بصفتي مطورًا، قمت بتطبيق هذه الطريقة وكنت راضيًا جدًا عن النتيجة. أشاركك بعض أسئلة مقابلات الخدمات المصغرة وإجاباتها التي تتوقع الشركة أن تعرفها. يمكن أن تُظهر معرفتك بالأسئلة مهاراتك المهنية في الوظيفة. هذه هي 20 سؤالاً وإجابات لأسئلة مقابلات الخدمات المصغرة التي يطرحها المحاورون بشكل متكرر.
إتقان دورة DevOps في بنغالور مع SPOTO – سجّل الآن لتعزيز حياتك المهنية من خلال التدريب العملي والشهادة المعترف بها في المجال!
بالطبع يمكنك أن تتوقع ما هي الخدمات المصغرة في أسئلة مقابلة الخدمات المصغرة. الخدمات المصغرة هي نمط معماري يساعد المطورين على بناء التطبيقات. ترتبط هذه التطبيقات بشكل فضفاض بخدمات متعددة، ويمكن تطوير كل خدمة ونشرها بشكل مستقل. دعنا نفهم هذا المفهوم بمثال، لنفترض أنك طورت تطبيقًا للتجارة الإلكترونية ووجدت أن قسم قائمة الرغبات يستهلك ذاكرة أكبر. لإصلاح هذه المشكلة، يمكنك العمل فقط على هذا القسم بالتحديد بدلاً من تغطية جميع الخدمات، لذلك يُعرف هذا النمط المعماري باسم الخدمات المصغرة.
يتألف التطبيق من عدة وحدات، بما في ذلك قاعدة البيانات، والتسجيل، ومنطق الأعمال، ويصبح إجراء تحديث بسيط أو توسيع نطاق أي وظيفة مهمة معقدة. لذا، ظهرت الخدمات المصغرة لتحل محل البنية الموجهة للخدمة (SOA)، والتي تمكن المطور من العمل على وظيفة فردية بسلاسة.
كل وظيفة في التطبيق موجودة في حاوية. يقوم Docker كذلك بنشر الحاويات في نظام التشغيل المدعوم، والذي يقوم بتوسيع نطاق الوظائف وإدارتها ويسمح لك بالتفاعل معها. وبالتالي، تكون هذه المهمة مؤتمتة بالكامل، مما يقلل من الوقت والعمل ويعطي أفضل النتائج.
لشرح منهجية العمل خلال أسئلة المقابلة الشخصية للخدمات المصغرة، يمكنك وصف مكونات تصميم بنية الخدمات المصغرة، والتي تشمل المرونة واللامركزية وفصل البيانات وواجهة برمجة التطبيقات والأتمتة. إن تغطية هذه الأقسام ستساعد القائم بإجراء المقابلة على معرفة معرفتك بالخدمات المصغرة.
تتألف الخدمات المصغرة من عدة مكونات، مثل الحاويات، وموازنات التحميل، وقواطع الدائرة، وبوابة واجهة برمجة التطبيقات، والبنية التحتية السحابية، والنشر المستمر، ومراقبة الخدمة، وتنسيق الخدمة، واللامركزية. قد تبحث لجنة الخبراء عن إجابة على هذا السؤال وتتوقع ذلك في أسئلة مقابلات الخدمات المصغرة. لذا كن جاهزًا بالإجابات المذكورة أعلاه، وإن أمكن، اشرح كل مكون من هذه المكونات.
في هذا القسم، أعتقد بقوة أنه يجب عليك تغطية الفوائد الرئيسية للخدمات المصغرة في تطوير التطبيقات ومشاركة بعض الأفكار التي تواجهها الشركات بسبب وجودها.
الإيجابيات
تمكّن الخدمات المصغرة فريق العمل من العمل بشكل مستقل على خدمة تطبيق عالي الطلب. تساعد هذه الميزة الإدارة على تحديد تكلفة توسيع نطاق الخدمة.
تدعم الخدمات المصغرة مفهوم CI/CD، مما يمكّن المطورين من تجربة أفكار جديدة وإزالة الخدمات غير المستخدمة.
توفر الخدمات المصغرة ميزة عزل الأخطاء، والتي تساعد المطورين على إصلاح خطأ في الخدمة دون إيقاف التطبيق. وهذا يعني أن العمل في خدمة معزولة واستكشاف الأخطاء وإصلاحها في مثل هذه الخدمة أسهل من إيجاد المشكلة وإصلاحها في مجموعة كاملة من الخدمات.
يأتي مع مجموعة من مكدسات البرمجة، بما في ذلك اللغات وقواعد البيانات وغيرها الكثير، مما يساعد المطورين على إنشاء وظيفة بناءً على المكدسات، وهو أمر مناسب لمثل هذه الخدمة.
السلبيات
توفر بنية الخدمات المصغرة بيئة متعددة السحابة للخدمات بحيث يمكن للمطور العمل على كل خدمة بشكل مستقل. ولكن، أثناء العملية، يجب أن تتواصل كل خدمة مع واجهة برمجة التطبيقات، وتواجه تهديدات أمنية بسبب عدم وجود طبقة أمان.
تمكّن الخدمات المصغرة من تشغيل الخدمات على مضيفين متعددين، مما يؤدي إلى جمع رسائل السجل. إذا ظهرت مشكلة في أي وظيفة، فمن الصعب جدًا على المطورين العثور على السجلات من هؤلاء المضيفين لإصلاح المشكلة.
في الخدمات المصغرة، يمكن تطوير كل خدمة ونشرها بشكل مستقل، ولكن في المرحلة النهائية، يتم تجميعها في المرحلة النهائية لتكوين تطبيق. هذا يعني أن الخدمات لديها بعض الترابط، وإذا تم إجراء أي تغييرات في إحدى الخدمات، فسيكون من الصعب على المطور تتبع التأثيرات على الخدمات الأخرى.
نعم، لها دور مهم جدًا لأن الخدمات المصغرة هي بنيات سحابية أصلية حيث تقوم Dockers بنشر الحاويات التي تحتوي على وظائف إلى نظام التشغيل المعني (في الغالب Linux). كما أنها تساعد في توسيع نطاق الوظائف لتلبية الطلبات بسرعة. نظرًا لأن Docker خامل ويعمل بشكل منفصل عن قاعدة التعليمات البرمجية الرئيسية، يمكن إطلاق الخدمات المصغرة بسرعة. تعد الأتمتة والتكامل جزءًا من استخدام Docker، مما يجعله ضروريًا للخدمات المصغرة. ومع ذلك، فإن لها أدوارًا واسعة تلعبها في بنية الخدمات المصغرة للتطبيقات.
تتفاعل كل خدمة من الخدمات المصغرة مع بعضها البعض من خلال واجهة برمجة التطبيقات، وهي المصدر الذي يسمح للعملاء بالتفاعل مع الخدمات. ووفقًا لإجراءات عمل الخدمات المصغرة، عندما يتفاعل العميل مع أحد التطبيقات، يتم إرسال الاستفسارات المعنية من قبل واجهة برمجة التطبيقات إلى الخدمات المعنية، وبعد ذلك، تجمع واجهة برمجة التطبيقات جميع الردود من الخدمات وتسلمها إلى العملاء. تلعب بوابة API أيضًا دورًا في المصادقة والتحكم في الوصول لتجنب أي تهديدات.
تعتمد بنية الخدمات المصغرة على قانون كونواي الذي ينص على أن البنية الداخلية للمؤسسة يجب أن تتناسب طرديًا مع بنية البرمجيات. هذا يعني أنه يمكن تعيين بنية الخدمات المصغرة بناءً على خبرة الفريق. على سبيل المثال، إذا كان هناك فريقان تختلف مجالات خبرتهما، فسيتم تصميم بنية الخدمات المصغرة بناءً على خبرة كل فريق حتى يتمكنوا من أداء المهمة بشكل جيد.
يلعب هذان الفريقان دوراً مهماً في الحفاظ على التواصل بين الخدمات. يعد سجل الخدمة بمثابة نقطة انطلاق، حيث تقوم الخدمة المصغرة بتسجيل نفسها من خلال توفير المعلومات الأساسية، مثل واجهة برمجة التطبيقات وموقع الشبكة وغير ذلك. في الوقت نفسه، يدفع اكتشاف الخدمة سجل الخدمة لتحديد موقع الشبكة للاتصال الفعال مع خدمة أخرى.
في بنية الخدمات المصغرة، يتم تقسيم التطبيق إلى خدمات متعددة، ويمكن تطوير كل خدمة ونشرها بشكل مستقل. كل خدمة هي عبارة عن وظيفة موجودة في حاوية ويتم نشرها بشكل إضافي بواسطة وحدة إرساء في مجموعة من الأجهزة. يتم توفير هذه البنية التحتية من قبل مؤسسة أو مزود خدمة سحابية. حقيقة أخرى مثيرة للاهتمام حول الخدمات المصغرة هي عامل التوسع الذي يقوم به المطور يدوياً.
في حالة البنية بدون خادم، يحتاج المطورون فقط إلى كتابة التعليمات البرمجية لإنشاء وظيفة، ويتم تنفيذ بقية المهام من قبل مزود الخدمة السحابية. في هذه البنية، لا يتعين على المطورين تحمل ضغوط البنية التحتية حيث يتم توفير كل شيء من قبل مزود الخدمة السحابية. ومع ذلك، فإنه يحتاج إلى دفع المال بناءً على حالات الوظائف. علاوة على ذلك، تتم عملية التوسع تلقائيًا، ولا يتعين على المطورين القيام بأي شيء. الجزء المثير للاهتمام في البنية بدون خادم هو أن الوظائف يتم تشغيلها بناءً على الأحداث. على سبيل المثال، الأحداث المشغِّلة في Amazon ECS هي Amazon S3 و CloudWatch وغيرها.
فصل مسؤولية الاستعلام عن الأوامر هو نمط بنية برمجية يضمن فصل رموز القراءة والكتابة لتبسيط منطق البيانات. في الخدمات المصغرة، يتعامل الجزء الخاص بكتابة البيانات في CQRS مع الأوامر، ويكون جزء القراءة مسؤولاً عن التعامل مع الاستعلامات. يُستخدم منطق التطبيق للفصل بين الأوامر والاستعلامات في الخدمات المصغرة.
تحتاج كل شركة إلى برمجيات تعطي المستخدمين صورة واضحة عن الأعمال حتى يتمكنوا من بناء الثقة في المنتجات/الخدمات التي تقدمها الشركات. يساعد التصميم المدفوع بالمجال مثل هذه الشركات كثيرًا لأنه يجمع مطورًا وخبيرًا متخصصًا في مجال الأعمال في نفس المنصة لتصميم تطبيق/برنامج يتوافق مع جميع معايير العمل.
الهدف من التصميم القائم على المجال هو إنشاء تطبيق، وبالتالي، تتبع هذه الطريقة بعض المبادئ التي تتماشى مع الخدمات المصغرة. على سبيل المثال، أحد هذه المبادئ هو النص المحدود، حيث يتم تقسيم التطبيق إلى وظائف متعددة، ويتم تطوير كل وظيفة بشكل مستقل. تنطبق نفس الحالة على التطبيقات التي تستخدم بنية الخدمات المصغرة.
النشر الأزرق-الأخضر هو استراتيجية يطبقها المطورون لإعادة تشغيل التطبيق بفعالية دون أي تعطل. وبمعنى أوسع، يقوم المطور بإنشاء بيئتين متطابقتين للتطبيق حيث تشير إحداهما، أي الزرقاء، إلى الإصدار الحالي للتطبيق والأخرى، أي الخضراء، تشير إلى أحدث إصدار، أي النسخة التي هي قيد الاختبار. لذا، فإن عملية النشر هذه تمكّن المطورين من تحويل حركة المرور من اللون الأزرق إلى الأخضر لزيادة توافر التطبيق، وبمجرد أن تصبح البيئة الخضراء جاهزة للمستخدمين، سيتم تحويل حركة المرور بالكامل من اللون الأزرق إلى الأخضر.
التحجيم التلقائي هو عملية تلقائية حيث يتم تلبية الطلب على خدمة معينة للتطبيق، ويتم إرساء وظائف الاحتفاظ بالحاويات بواسطة أداة إرساء ويتم توفير موارد الحوسبة من قبل مزود السحابة بناءً على الطلب. لذا، يتم تنفيذ هذا النوع من التحجيم التلقائي في الخدمات المصغرة لتحسين أداء التطبيق.
AWS Lambda، وAPI Fortress، وPI Fortress، وPrometheus، وDocker، وCubernetes هي أدوات شائعة لبناء البرامج/التطبيقات باستخدام بنية الخدمات المصغرة.
أوصي بأن تبدأ بشرح المعاملات الموزعة قبل الإجابة عن هذه الأنواع من أسئلة مقابلات الخدمات المصغرة. في الخدمات المصغرة، المعاملات الموزعة هي نوع من المعاملات التي تحتوي على قاعدة بيانات منفصلة وتنتشر عبر شبكات مختلفة.
يدير نمط تصميم الملحمة هذه المعاملات الموزعة. فهو يعزل المعاملة المعروفة باسم الملحمة، وبعد ذلك، يأتي دور تنسيق الملحمة Saga Orchestration، مما يؤدي إلى تشغيل الملحمة لتؤدي في الخدمات المصغرة. تتم مراقبة أداء هذه الساغا، وإذا كان أداء جميع المعاملات الموزعة جيدًا، فإن Saga Orchestration سيضع علامة على اكتمالها بنجاح.
Saga و CQRS هما نمطان مختلفان من أنماط التصميم المستخدمة في الخدمات المصغرة. في النمط الأول، يكون SAGA مسؤولاً عن إدارة المعاملات الموزعة، بينما يفصل CQRS البيانات بناءً على الأمر والاستعلام.
يشيع استخدام نمط الحاجز في تصميم التطبيقات. يعمل هذا النمط على تعزيز مرونة النظام من خلال تمكين المطورين من عزل خدمة غير وظيفية عن مجموعة الخدمات بحيث يمكن لبقية الخدمات أن تعمل بسلاسة. سُمي هذا النمط تيمناً بالمقصورات المانعة للماء المستخدمة في السفن.
تُستخدم ثلاثة أنواع من بنيات الخدمات المصغرة على نطاق واسع في إنشاء التطبيقات: الخدمات المصغرة الخاصة بالمجال والتكامل ووحدة العمل.
يعد إطار عمل الخدمات المصغرة أداة مهمة للغاية تتكون من أدوات وهياكل تساعد المطورين على بناء تطبيق. لذا، فإن أطر عمل الخدمات المصغرة الأكثر شيوعًا هي:
Express.js
ميكرونوت
Eclipse MicroProfile
FastAPI
لاغوم
سبرينغ بوت
إنه أحد أبرز أسئلة المقابلة الشخصية للخدمات المصغرة التي يطرحها المحاور. للإجابة على هذا السؤال، يجب أن تبدأ ببنية الخدمات المصغرة وتحديد 3C المستخدمة على نطاق واسع بين المطورين: التركيب والتعاون والربط. تشير المكونة إلى درجة حرية الوحدات أثناء النشر، وهي مستقلة تمامًا، في حين أن Collaborate تشير إلى مزامنة الخدمات وتضمن عملها معًا. أما الأخيرة، أي الاتصال، فتضمن اتصال الخدمات بواجهة برمجة التطبيقات.
اقرأ أيضًا: ما هي بنية الخدمات المصغرة؟
ستساعدك أسئلة وإجابات مقابلة الخدمات المصغرة المذكورة أعلاه في العثور على وظيفة مطور أو وظيفة DevOps بسهولة. أثناء ذكر أسئلة مقابلات الخدمات المصغرة، حاولت أن أسكب جميع الأسئلة ذات الصلة التي تم طرحها في المقابلات. ومع ذلك ، يجب عليك أيضًا التركيز على أساسيات بنية الخدمات المصغرة وكيف حلت محل نمط بنية البرمجيات المتجانسة.
سيساعدك فهم مفهوم الخدمات المصغرة وأنماط التصميم وأطر العمل على تكييف بيئة التطوير الجديدة هذه. ومع ذلك، قد تحتاج إلى التعمق أكثر في هذا الجزء. في هذه الحالة، يجب عليك اختيار شهادة DevOps، وستمنحك هذه الشهادة معرفة متعمقة بمبادئ Agile، وغير ذلك مما سيساعدك على تطوير برمجيات عالية الجودة باستخدام بنية الخدمات المصغرة بفعالية.