クラウドに依存しないアプリケーションの開発

Patricia Arquette
リリース: 2024-10-10 14:12:30
オリジナル
222 人が閲覧しました

Developing cloud agnostic application

導入

最近、私はクラウドに依存しないアプリケーションを構築したい個人プロジェクトに取り組み始めました。つまり、コードの変更を最小限またはまったく行わずに、どのクラウドプロバイダーにもデプロイできます。主な要件は、ビジネス ロジックとクラウド プロバイダー固有のロジックを分離することです。

この投稿では、実行されたアプローチを共有したいと思います。

  • クラウドで操作を実行するための抽象メソッドを持つインターフェイスを作成します。
  • このインターフェースのサブクラスであるクラウドプロバイダー固有のクラスを作成し、抽象メソッドの実装を提供します。
  • 何らかの条件に基づいてクラウド プロバイダーの実装を返す別のクラス/メソッドを作成します。 ファクトリーパターン
  • 呼び出しクラスは、上記のクラス/メソッドのオブジェクトを使用し、そのメソッドを呼び出します。

コード

以下のコードでは 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 サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート