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

تطوير تطبيق سحابي محايد

تم النشر بتاريخ 2024-11-06
تصفح:980

Developing cloud agnostic application

مقدمة

بدأت مؤخرًا العمل على مشروع شخصي حيث أرغب في إنشاء تطبيق لا يعتمد على السحابة - أي يمكن نشره على أي مزود سحابي مع الحد الأدنى من التغييرات في التعليمات البرمجية أو بدون تغييرات. الشرط الأساسي هو فصل منطق الأعمال عن المنطق الخاص بموفر السحابة.

في هذا المنشور، أريد أن أشارك النهج الذي تم اتباعه.

  • إنشاء واجهة تحتوي على طرق مجردة لتنفيذ العمليات في السحابة.
  • إنشاء فئات محددة لموفر الخدمة السحابية وهي فئات فرعية لهذه الواجهة وتوفير التنفيذ للطرق المجردة.
  • قم بإنشاء فئة/طريقة منفصلة والتي ستعيد تنفيذ موفر السحابة بناءً على بعض الشروط. نمط المصنع
  • ستستخدم فئة الاستدعاء الكائن من الفئة/الطريقة أعلاه وتستدعي أساليبها.

شفرة

الرمز أدناه يستخدم لغة بايثون

واجهة مع أساليب مجردة

from abc import ABC, abstractmethod

class IObjectStorage(ABC):

    @abstractmethod
    def upload_object_to_bucket(self, file_name, file_content):
        _raise an error that method is not implemented_

إنشاء تطبيق خاص بموفر السحابة

class AWSObjectStorageConnector(IObjectStorage):

    def __init__(self, bucket_name):
       _Initialize a s3 client using boto3 and initialize a variable using bucket name_

    def upload_object_to_bucket(self, file_name, file_content):
        _Implement the logic to upload the file to AWS S3 bucket_

قم بإنشاء طريقة للحصول على كائن فئة تنفيذ موفر السحابة المحدد - طريقة المصنع

تأخذ هذه الطريقة متغير موفر السحابة الذي سيتم تمريره من طريقة الاستدعاء

def get_object_storage(cloud_provider, bucket_name) -> IObjectStorage:

    if cloud_provider == 'aws':
        return AWSObjectStorageConnector(bucket_name=bucket_name)
    else:
        raise ValueError(f'Unsupported cloud provider: {cloud_provider}')

اتصل بطريقة المصنع للحصول على مثيل للكائن

ستتم قراءة متغير cloud_provider من متغير بيئة تم تمريره كمدخل. وهذا يضمن أن المنطق نفسه يعمل بشكل جيد مع موفري الخدمات السحابية المختلفين.

object_storage_connector = get_object_storage(cloud_provider=provider, bucket_name=bucket_name)

لا تتردد في التعليق بأي اقتراحات أو تعليقات.

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/grkashyap/developing-cloud-agnostic-application-part-1-4ff8?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3