"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > क्लाउड अज्ञेयवादी अनुप्रयोग का विकास करना

क्लाउड अज्ञेयवादी अनुप्रयोग का विकास करना

2024-11-06 को प्रकाशित
ब्राउज़ करें:624

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-loud-agnostic-application-part-1-4ff8?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3