"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Développer une application indépendante du cloud

Développer une application indépendante du cloud

Publié le 2024-11-06
Parcourir:657

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 assurent 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_

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_

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

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)

N'hésitez pas à commenter avec des suggestions ou des commentaires.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/grkashyap/developing-cloud-agnostic-application-part-1-4ff8?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3