最近、私はクラウドに依存しないアプリケーションを構築したい個人プロジェクトに取り組み始めました。つまり、コードの変更を最小限またはまったく行わずに、どのクラウドプロバイダーにもデプロイできます。主な要件は、ビジネス ロジックとクラウド プロバイダー固有のロジックを分離することです。
この投稿では、実行されたアプローチを共有したいと思います。
以下のコードでは 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 中国語 Web サイトの他の関連記事を参照してください。