Amazon web services 针对AWS和Azure for pass服务(如服务总线、blob、SQS/SNS等)的应用程序的单一代码库

Amazon web services 针对AWS和Azure for pass服务(如服务总线、blob、SQS/SNS等)的应用程序的单一代码库,amazon-web-services,azure,amazon-s3,cloud,servicebus,Amazon Web Services,Azure,Amazon S3,Cloud,Servicebus,我有多个应用程序部署在Microsoft Azure中。这些应用程序使用Microsoft提供的各种库与Azure Servicebus(主题和队列)、Blob等服务进行交互。新的要求是这些应用程序应在AWS上以及Azure上运行。由于服务总线,blob非常特定于Azure。它们在AWS中不可用。AWS具有等效的服务,如SNS/SQS、S3 bucket等。AWS具有不同的SDK/库,用于与这些服务交互 这是一个问题,因为我必须维护两个不同版本的应用程序,一个用于Azure,另一个用于AWS。这

我有多个应用程序部署在Microsoft Azure中。这些应用程序使用Microsoft提供的各种库与Azure Servicebus(主题和队列)、Blob等服务进行交互。新的要求是这些应用程序应在AWS上以及Azure上运行。由于服务总线,blob非常特定于Azure。它们在AWS中不可用。AWS具有等效的服务,如SNS/SQS、S3 bucket等。AWS具有不同的SDK/库,用于与这些服务交互

这是一个问题,因为我必须维护两个不同版本的应用程序,一个用于Azure,另一个用于AWS。这很难维持,我想避免


是否有任何框架/模式/方法可以将特定于供应商的详细信息抽象为服务总线或blob,并使用单个代码库与AWS和Azure一起工作,尽可能地进行Dockerize并创建一个核心项目,在该项目中安装所有Azure和AWS nuget包,然后创建一个抽象层以在核心中使用方法连接到Azure或AWS服务的项目


您可以使用Azure和AWS的两个包创建此核心层,并根据当前配置(或部署的云)使用Azure包或AWS包中的方法。

如果您希望使用单个代码库以Azure、AWS或任何其他云为目标,有2-3种方法

  • 库,如目标Azure服务总线和RabbitMQ。但它们仅限于消息代理。对于存储,您可能需要找到另一个针对这两种环境的库
  • 更合适的解决方案是,它不仅有助于基于微服务的开发,而且有助于开发与云无关的代码。它有各种构建块,例如和,可以使用单个代码库以Azure、AWS为目标。通过替换适当的组件,您可以在不更改代码的情况下从一个云切换到另一个云
  • 如果由于某种原因,上述解决方案都不适用于您,那么您可能需要实现自己的facade层来针对多个云