최근에 저는 클라우드에 구애받지 않는 애플리케이션을 구축하려는 개인 프로젝트 작업을 시작했습니다. 즉, 코드 변경을 최소화하거나 전혀 변경하지 않고 모든 클라우드 공급자에 배포할 수 있습니다. 주요 요구 사항은 비즈니스 로직을 클라우드 공급자별 로직과 분리하는 것입니다.
이번 게시물에서는 그에 따른 접근 방식을 공유하고 싶습니다.
아래 코드는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!