„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Entwicklung einer cloudunabhängigen Anwendung

Entwicklung einer cloudunabhängigen Anwendung

Veröffentlicht am 06.11.2024
Durchsuche:630

Developing cloud agnostic application

Einführung

Vor Kurzem habe ich begonnen, an einem persönlichen Projekt zu arbeiten, bei dem ich eine Anwendung erstellen möchte, die Cloud-agnostisch ist – d. h. sie kann bei jedem Cloud-Anbieter mit minimalen/keinen Codeänderungen bereitgestellt werden. Die Hauptanforderung besteht darin, die Geschäftslogik von der spezifischen Logik des Cloud-Anbieters zu trennen.

In diesem Beitrag möchte ich den verfolgten Ansatz mitteilen.

  • Erstellen Sie eine Schnittstelle mit abstrakten Methoden zum Ausführen von Vorgängen in der Cloud.
  • Erstellen Sie cloudanbieterspezifische Klassen, die Unterklassen dieser Schnittstelle sind und eine Implementierung für die abstrakten Methoden bereitstellen.
  • Erstellen Sie eine separate Klasse/Methode, die die Cloud-Anbieter-Implementierung basierend auf einer bestimmten Bedingung zurückgibt. Werksmuster
  • Die aufrufende Klasse verwendet das Objekt aus der oben genannten Klasse/Methode und ruft deren Methoden auf.

Code

Der folgende Code verwendet Python

Schnittstelle mit abstrakten Methoden

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_

Erstellen Sie eine spezifische Implementierung für den Cloud-Anbieter

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_

Erstellen Sie eine Methode, um das spezifische Implementierungsklassenobjekt des Cloud-Anbieters abzurufen – Factory-Methode

Diese Methode benötigt eine Cloud-Provider-Variable, die von der aufrufenden Methode übergeben wird

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}')

Rufen Sie die Factory-Methode auf, um eine Instanz des Objekts abzurufen

Die Variable

cloud_provider wird aus einer als Eingabe übergebenen Umgebungsvariablen gelesen. Dadurch wird sichergestellt, dass die gleiche Logik bei verschiedenen Cloud-Anbietern einwandfrei funktioniert.

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

Bitte zögern Sie nicht, mit Vorschlägen oder Feedback zu kommentieren.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/grkashyap/developing-cloud-agnostic-application-part-1-4ff8?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3