"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Desarrollo de aplicaciones independientes de la nube

Desarrollo de aplicaciones independientes de la nube

Publicado el 2024-11-06
Navegar:691

Developing cloud agnostic application

Introducción

Recientemente, comencé a trabajar en un proyecto personal en el que quiero crear una aplicación que sea independiente de la nube, es decir, que se pueda implementar en cualquier proveedor de nube con cambios mínimos o sin cambios en el código. El requisito principal es separar la lógica empresarial de la lógica específica del proveedor de la nube.

En esta publicación, quiero compartir el enfoque que se siguió.

  • Crear una interfaz que tenga métodos abstractos para realizar operaciones en la nube.
  • Cree clases específicas del proveedor de la nube que sean subclases de esta interfaz y proporcionen implementación para los métodos abstractos.
  • Cree una clase/método independiente que devolverá la implementación del proveedor de la nube en función de alguna condición. Patrón de fábrica
  • La clase que llama utilizará el objeto de la clase/método anterior y llamará a sus métodos.

Código

El siguiente código utiliza Python

Interfaz con métodos abstractos.

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_

Crear una implementación específica del proveedor de la nube

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_

Cree un método para obtener el objeto de clase de implementación del proveedor de nube específico: Método de fábrica

Este método toma una variable de proveedor de nube que se pasará desde el método de llamada

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

Llame al método de fábrica para obtener una instancia del objeto.

la variable cloud_provider se leerá desde una variable de entorno pasada como entrada. Esto garantiza que la misma lógica funcione bien con diferentes proveedores de nube.

object_storage_connector = get_object_storage(cloud_provider=provider, bucket_name=bucket_name)

No dudes en comentar cualquier sugerencia o comentario.

Declaración de liberación Este artículo se reproduce en: https://dev.to/grkashyap/develocingcloud-agnostic-application-part-1-4ff8?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarlo.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3