最近,我開始從事一個個人項目,我想建立一個與雲端無關的應用程式 - 即它可以部署在任何雲端提供者上,只需最少/無需更改程式碼。主要要求是將業務邏輯與雲端提供者特定邏輯分開。
在這篇文章中,我想分享所遵循的方法。
下面的程式碼使用Python
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_
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_
此方法採用將從呼叫方法傳遞的雲端提供者變數
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}')
cloud_provider 變數將從作為輸入傳遞的環境變數中讀取。這確保了相同的邏輯可以在不同的雲端提供者中正常運作。
object_storage_connector = get_object_storage(cloud_provider=provider, bucket_name=bucket_name)
如有任何建議或回饋,請隨時發表評論。
以上是開發與雲端無關的應用程式的詳細內容。更多資訊請關注PHP中文網其他相關文章!