Développer une application indépendante du cloud

Patricia Arquette
Libérer: 2024-10-10 14:12:30
original
223 Les gens l'ont consulté

Developing cloud agnostic application

Introduction

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.

  • Créez une interface dotée de méthodes abstraites pour effectuer des opérations dans le cloud.
  • Créez des classes spécifiques au fournisseur de cloud qui sont des sous-classes de cette interface et fournissez l'implémentation des méthodes abstraites.
  • Créez une classe/méthode distincte qui renverra l'implémentation du fournisseur de cloud en fonction de certaines conditions. Modèle d'usine
  • La classe appelante utilisera l'objet de la classe/méthode ci-dessus et appellera ses méthodes.

Code

Le code ci-dessous utilise python

Interface avec les méthodes abstraites

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_

Copier après la connexion

Créer une implémentation spécifique au fournisseur de cloud

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_
Copier après la connexion

Créez une méthode pour obtenir l'objet de classe d'implémentation spécifique du fournisseur de cloud - Méthode Factory

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}')
Copier après la connexion

Appelez la méthode factory pour obtenir une instance de l'objet

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)
Copier après la connexion

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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal