Membangunkan aplikasi agnostik awan

Patricia Arquette
Lepaskan: 2024-10-10 14:12:30
asal
223 orang telah melayarinya

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_

Salin selepas log masuk

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_
Salin selepas log masuk

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}')
Salin selepas log masuk

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)
Salin selepas log masuk

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!

sumber:dev.to
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan