Heim  >  Artikel  >  Backend-Entwicklung  >  Entwicklung einer cloudunabhängigen Anwendung

Entwicklung einer cloudunabhängigen Anwendung

Patricia Arquette
Patricia ArquetteOriginal
2024-10-10 14:12:30112Durchsuche

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 Ansatz teilen, der verfolgt wurde.

  • 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 cloud_provider-Variable 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.

Das obige ist der detaillierte Inhalt vonEntwicklung einer cloudunabhängigen Anwendung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn