Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Membangunkan aplikasi agnostik awan

Membangunkan aplikasi agnostik awan

Patricia Arquette
Patricia Arquetteasal
2024-10-10 14:12:30112semak imbas

Developing cloud agnostic application

pengenalan

Baru-baru ini, saya mula mengerjakan projek peribadi di mana saya ingin membina aplikasi yang bersifat agnostik awan - iaitu ia boleh digunakan pada mana-mana pembekal awan dengan perubahan kod yang minimum/tiada. Keperluan utama adalah untuk memisahkan logik perniagaan dengan logik khusus penyedia awan.

Dalam siaran ini, saya ingin berkongsi pendekatan yang diikuti.

  • Buat antara muka yang mempunyai kaedah abstrak untuk melaksanakan operasi dalam awan.
  • Buat kelas khusus penyedia awan yang merupakan subkelas antara muka ini dan sediakan pelaksanaan untuk kaedah abstrak.
  • Buat kelas/kaedah berasingan yang akan mengembalikan pelaksanaan pembekal awan berdasarkan beberapa syarat. Corak Kilang
  • Kelas panggilan akan menggunakan objek daripada kelas/kaedah di atas dan memanggil kaedahnya.

Kod

Kod di bawah menggunakan python

Antara muka dengan kaedah abstrak

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_

Buat pelaksanaan khusus penyedia awan

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_

Cipta kaedah untuk mendapatkan objek kelas pelaksanaan pembekal awan spesifik - Kaedah kilang

Kaedah ini mengambil pembolehubah penyedia awan yang akan diluluskan daripada kaedah panggilan

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

Panggil kaedah kilang untuk mendapatkan contoh objek

pembolehubah cloud_provider akan dibaca daripada pembolehubah persekitaran yang diluluskan sebagai input. Ini memastikan logik yang sama berfungsi dengan baik dengan penyedia awan yang berbeza.

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

Sila berasa bebas untuk mengulas dengan sebarang cadangan atau maklum balas.

Atas ialah kandungan terperinci Membangunkan aplikasi agnostik awan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn