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.
Der folgende Code verwendet Python
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_
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}')
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!