إما أن تكون مهمتك صغيرة ، أو يمكنك تقسيمها إلى مهام أصغر. والمهمة الصغيرة مناسبة تمامًا لخدمة مصغرة.

تصميم البرمجيات هو مرحلة أساسية في تطوير البرمجيات. يمكن أن يؤثر نهج التصميم على المشروع بأكمله وكيفية التعامل مع المتطلبات المختلفة.

غالبًا ما استخدم المطورون بنية متجانسة ، حيث قاموا بتجميع جميع مكونات البرامج في وحدة واحدة. ومع ذلك ، يمكن أن يثبت أن هذا النهج غير فعال ، خاصة بالنسبة للتطبيقات الأكبر.

تهدف الخدمات المصغرة إلى معالجة هذه القيود. الخدمة المصغرة عبارة عن تطبيق معياري صغير يؤدي وظائف محددة. بخلاف التطبيقات المتجانسة ، تسمح الخدمات المصغرة بالنشر والقياس بشكل مستقل. نتيجة لذلك ، فهي أكثر مرونة وأسهل في الصيانة.

هندسة الخدمات المصغرة

إن بنية الخدمات المصغرة عبارة عن نهج تصميم برمجي يقسم تطبيقًا كبيرًا إلى خدمات مستقلة ، مع تصميم كل خدمة لتلبية متطلبات عمل محددة.

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

في النظام الموزع ، تقوم عُقد الخادم بنشر تطبيقات الخدمات المصغرة وتنفيذها بشكل منفصل العمليات - التواصل مع بعضها البعض باستخدام بروتوكولات الاتصال مثل HTTP أو عبر وسطاء الرسائل مثل RabbitMQ.

instagram viewer

بشكل أساسي ، يمكّن هذا النهج المعماري الخدمات من الحفاظ على استقلاليتها عن بعضها البعض أثناء العمل بفعالية داخل نظام البرنامج.

في هذا البرنامج التعليمي ، سنوجهك خلال تنفيذ خدمة مصغرة بسيطة للمستخدم تدير بيانات المستخدم باستخدام Flask و PostgreSQL

قم بإعداد قاعدة بيانات PostgreSQL

للبدء ، قم بتثبيت PostgreSQL. إذا لم يكن PostgreSQL مثبتًا لديك ، فيمكنك معرفة ذلك كيفية تثبيت PostgreSQL على نظام Windows أو كيفية تثبيت PostgreSQL على macOS.

بدلاً من ذلك ، يمكنك تكوين ملف قاعدة بيانات PostgreSQL البعيدة مثال.

سيستخدم هذا الدليل طبقة Render المجانية لإعداد قاعدة بيانات PostgreSQL. اتبع هذه لإنشاء مثيل قاعدة بيانات PostgreSQL على Render:

  1. رئيس لأكثر من موقع رندر، قم بالتسجيل للحصول على حساب ، وتسجيل الدخول إلى لوحة القيادة صفحة.
  2. في صفحة لوحة المعلومات الخاصة بك ، من قائمة الخدمات المعروضة ، حدد خدمة PostgreSQL.
  3. في صفحة إعدادات قاعدة البيانات ، املأ التفاصيل المطلوبة وتأكد من تحديد ملف الطبقة المجانية، وأخيرًا انقر فوق إنشاء قاعدة بيانات.

يمكنك العثور على رمز هذا المشروع في هذا مستودع جيثب.

قم بإنشاء Flask Microservice

  1. في جهازك الطرفي ، أنشئ دليلًا جديدًا وقم بالتغيير فيه:
    mkdir flask-microservice
    cd flask-microservice
  2. بعد ذلك ، قم بتثبيت فيرتالينف، لإنشاء بيئة تطوير افتراضية معزولة.
    نقطة تثبيت virtualenv
  3. قم بإنشاء بيئة افتراضية في مشروعك:
    Virtualenv venv
  4. أخيرًا ، قم بتنشيط البيئة الافتراضية.
    # شبابيك: 
    . \ venv \ Scripts \ تفعيل
    # يونكس أو ماك:
    مصدر venv / بن / تفعيل

قم بتثبيت الحزم المطلوبة

  1. إنشاء ملف المتطلبات. txt ملف في الدليل الجذر وأضف هذه الحزم:
    قارورة
    psycopg2- ثنائي
    sqlalchemy
  2. بعد ذلك ، قم بتثبيت الحزم.
    Pip install- متطلبات rtxt

قم بإنشاء Flask Server

في الدليل الجذر ، أنشئ ملفًا جديدًا: service.py، والرمز التالي:

  1. قم بإجراء عمليات الاستيراد التالية:
    من قارورة يستورد قارورة ، طلب ، jsonify
    من sqlalchemy يستورد create_engine ، عمود ، عدد صحيح ، سلسلة
    من sqlalchemy.orm يستورد صانع الجلسة
    من sqlalchemy.ext.declarative يستورد قاعدة_صريحة
    يستورد psycopg2
  2. قم بإنشاء مثيل Flask وقم بتكوين اتصال قاعدة البيانات.
    التطبيق = قارورة (__name__)

    المحرك = create_engine ("postgresql + psycopg2: // flask_service_fe0v_user: 4785MhjfkdjfhjfjyUx67O2Nuzjchb2MQIP@dpg-chffjfjdkgfk54d6mb7860-a.oregon-postgres.render.com/flask_service")

    انسخ ال عنوان URL لقاعدة البيانات الخارجية في صفحة إعدادات قاعدة بيانات Render. سنستخدم ملف SQLAlchemy create_engine طريقة و سايكوبج 2 لتكوين اتصال قاعدة البيانات. تأكد من تحديث واستبدال عنوان URL لقاعدة البيانات في الكود أعلاه بعنوان URL الخاص بمثيل PostgreSQL الخاص بك والذي يطابق التنسيق المحدد أعلاه. إذا كان تنسيق عنوان URL غير صحيح ، فإن الرمز سيظهر خطأ.
  3. تكوين نموذج SQLAlchemy لقاعدة البيانات.
    القاعدة = قاعدة تعريفية ()
    فصلمستخدم(قاعدة):
    __tablename__ = "المستخدمون"
    معرف = العمود (عدد صحيح ، مفتاح أساسي =حقيقي)
    الاسم = العمود (سلسلة (50))
    Base.metadata.create_all (محرك)
    مطبعة("تم إنشاء مستخدمو الجدول بنجاح.")
    Session = Sessionmaker (المحرك)
    يحدد الكود نموذج بيانات لجدول المستخدمين. بعد تحديد النموذج ، يقوم بإنشاء الجدول باستخدام SQL الخيمياء create_all الطريقة التي تأخذ قاعدة البيانات كائن محرك الاتصال كمعامل. أخيرًا ، يقوم بإنشاء مثيل لملف صانع الجلسة باستخدام نفس كائن المحرك لتمكين التفاعلات مع قاعدة البيانات.
  4. أخيرًا ، حدد مسارات API للخدمة المصغرة.
    @ app.route ("/ api / user"، طرق = ["POST"])
    defcreate_user():
    data = request.get_json ()
    الاسم = البيانات ["اسم"]
    يحاول:
    جلسة = جلسة ()
    new_user = مستخدم (الاسم = الاسم)
    session.add (مستخدم جديد)
    session.commit ()
    يعود {"بطاقة تعريف": new_user.id، "اسم": اسم مستخدم جديد، "رسالة": و "المستخدم {اسم} مخلوق."}, 201
    يستثني استثناء مثل هـ:
    مطبعة(و "الخطأ"{هـ}' حصل.")
    يعود {"خطأ": "حدث خطأ أثناء إنشاء المستخدم."}, 500
    @ app.route ("/ api / user"، طرق = ["GET"])
    defget_all_users():
    يحاول:
    جلسة = جلسة ()
    users = session.query (مستخدم) .all ()
    لو المستخدمون:
    النتيجة = []
    ل مستخدم في المستخدمون:
    result.append ({"بطاقة تعريف": معرف المستخدم، "اسم": اسم المستخدم})
    يعود jsonify (نتيجة)
    آخر:
    يعود jsonify ({"خطأ": و "لم يتم العثور على المستخدمين."}), 404
    يستثني استثناء مثل هـ:
    مطبعة(و "الخطأ"{هـ}' حصل.")
    يعود {"خطأ": "حدث خطأ أثناء إحضار كافة المستخدمين."}, 500
    لو __name__ == "__رئيسي__":
    app.run (تصحيح =حقيقي، المضيف ="0.0.0.0")

اختبر الخدمة المصغرة

يوضح الكود أعلاه خدمة مصغرة بسيطة لبيانات المستخدم تضيف البيانات وتجلبها من قاعدة بيانات PostgreSQL. من الناحية المثالية ، تعكس الخدمات المصغرة بنية REST API نظرًا لأنها تتيح نهجًا مرنًا لبناء خدمات الويب - تتناسب هذه البنية جيدًا مع نمط تصميم الخدمات المصغرة.

ومع ذلك ، من المهم ملاحظة أن الخدمات المصغرة يمكنها استخدام أنواع أخرى من أساليب التصميم وبروتوكولات الاتصال أيضًا ، اعتمادًا على الاحتياجات المحددة للنظام.

لاختبار الخدمة ، قم بتدوير خادم التطوير وتوجه إلى Postman لتقديم طلبات HTTP إلى نقاط النهاية المحددة.

flask - تشغيل خدمة التطبيق

في Postman ، قم بإجراء طلب POST لإضافة بيانات المستخدم.

تحويل الخدمات المصغرة إلى حاويات باستخدام Docker

يقوم Docker بتجميع التطبيقات وتبعياتها في حاويات. يبسط هذا الأسلوب تطوير ونشر وإدارة الخدمات المصغرة في بيئة الإنتاج حيث يمكن أن تعمل كل خدمة بشكل مستقل وتتواصل مع الخدمات الأخرى باستخدام الاتصال المكون بروتوكول.

قبل أن تبدأ ، تحتاج أولاً إلى تثبيت Docker باتباع الخطوات الموجودة في ملف موقع Docker. بعد ذلك ، أنشئ صورة Docker من Dockerfile تحتوي على الإرشادات اللازمة لإعداد التبعيات المطلوبة لتشغيل التطبيق في حاوية.

  1. أنشئ Dockerfile في الدليل الجذر لمجلد مشروعك وأضف هذه التعليمات:
    من الثعبان:3.9-البين
    عمل /app
    ينسخ المتطلبات. txt ./
    يجري Pip install- متطلبات rtxt
    ينسخ. .
    يفضح5000
    CMD ["الثعبان", "./service.py"]
  2. تشغيل ، الأمر أدناه لبناء صورة Docker.
     بناء عامل ميناء -t flask-microservice.
  3. أخيرًا ، قم بتشغيل حاوية Docker.
    docker run -p 5000: 5000 flask-microservice

سيؤدي هذا إلى بدء تشغيل حاوية Docker لتشغيل Flask microservice وتعريض المنفذ 5000 الموجود في الحاوية إليه المنفذ 8000 على الجهاز المضيف ، مما يسمح لك بإجراء طلبات HTTP من متصفح الويب الخاص بك أو Postman باستخدام URL http://localhost: 5000.

اعتماد بنية الخدمات المصغرة

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

في حين أن هذه البنية لها فوائد محتملة ، فهي ليست مناسبة لجميع حالات الاستخدام. في أي حال ، يجب أن تؤثر متطلبات العمل المحددة للمشروع بشكل أساسي على نهج التصميم المعتمد.