Récemment, j'ai commencé à travailler sur un projet personnel dans lequel je souhaite créer une application indépendante du cloud, c'est-à-dire qu'elle peut être déployée sur n'importe quel fournisseur de cloud avec un minimum ou aucune modification de code. La principale exigence est de séparer la logique métier de la logique spécifique au fournisseur de cloud.
Dans cet article, je souhaite partager l'approche qui a été suivie.
Le code ci-dessous utilise 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_
Cette méthode prend une variable de fournisseur de cloud qui sera transmise par la méthode appelante
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}')
La variable cloud_provider sera lue à partir d'une variable d'environnement passée en entrée. Cela garantit que la même logique fonctionne correctement avec différents fournisseurs de cloud.
object_storage_connector = get_object_storage(cloud_provider=provider, bucket_name=bucket_name)
N'hésitez pas à commenter avec des suggestions ou des commentaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!