最近、私はクラウドに依存しないアプリケーションを構築したい個人プロジェクトに取り組み始めました。つまり、コードの変更を最小限またはまったく行わずに、どのクラウドプロバイダーにもデプロイできます。主な要件は、ビジネス ロジックとクラウド プロバイダー固有のロジックを分離することです。
この投稿では、実行されたアプローチを共有したいと思います。
以下のコードは 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)
ご提案やフィードバックがございましたら、お気軽にコメントしてください。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3