通常有两种力量推动围绕多云的讨论:自由选择组织所需的云计算工具和平台,以及这些选择带来的复杂性。
这并不总是那么容易,但组织有多种方法可以构建IT架构,提供跨环境的一致性并避免供应商锁定。企业需要遵循获取有关如何构建多云应用程序并了解何时不值得这样做的建议。
在构建多云应用程序之前考虑这些因素
无论是发生中断、价格变化、与供应商的关系破裂,还是其他原因,很多企业都希望构建自己的应用程序,以便在认为合适的时间和地点移动代码。
但是,编写与云计算无关的代码不仅仅涉及避免使用特定于平台的工具。以下是构建可在多个云平台上使用的应用程序时需要记住的四个因素:
1.不要在源代码中包含密码和API密钥等敏感信息。
2.为应用程序提供单一入口点。要***限度地降低故障点风险,使用循环域名系统记录在云计算提供商之间分配负载。
3.尽可能自动化以最小化复杂性。
4.不要完全排除本机工具。云计算供应商可能拥有真正独特、有价值的服务,或者避免使用特定工具的成本可能高于供应商锁定的风险。
考虑何时以及如何规划可迁移性
组织优化其特定云平台的工作负载越多,以后移动这些应用程序就越困难。如果IT团队想要获得可迁移性,他们需要了解使用的服务的含义以及如何将应用程序锚定到给定平台。
例如,云计算提供商推动与其竞争对手进行功能奇偶校验,但这并不一定能够更轻松地在云平台之间迁移工作负载。即使两个提供商具有可比较的服务,它们也通过不同的API提供。开发人员需要重写组件才能在其他云平台上工作。
尽管如此,迁移性并不是***的。事实上,从长远来看,即使成本较高,找到适合工作负载的合适平台也会更具成本效益。如果企业拥有深度互联的应用程序,***将它们托管在自己的数据中心内,以限制流量费用、集成和安全问题。
克服平台差异
部署多云战略的组织需要弥补应用程序部署在不同云中的执行方式不同的事实。企业可以通过限制扩展到一个云平台,在不同的云平台中运行并行部署或抽象某些组件来实现这一目标。
如果组织使用诸如Apache Meos或Kubernetes之类的软件将部署同质化,以抽象应用程序平面或使用诸如Ansible、Chef或Puppet之类的DevOps工具,则会采用规模和重新部署方法。
运行并行部署与扩展和重新部署方法类似,但事务和其他任务是共享的。这将需要在重复的应用程序组件之间使用负载均衡器,但不需要特殊的部署技术,因为只有工作在云平台之间移动。
当应用程序组件需要跨云平台进行扩展或故障转移时,IT团队可以使用基于适配器设计模式的某种私有中间件。这会将不同的云平台提供程序API拉入单个API,然后开发人员可以使用它。如果提供商的服务不同,则创建更高级别的抽象,以将组织的API映射到每个云中的特定功能。
简化持续集成和持续交付(CI/CD)管道
与云计算提供商无关的持续集成和持续交付(CI/CD)管道可以简化多云应用程序的部署过程,如果IT团队选择采用这种方式,则可以选择多种方案。
大多数云计算供应商都支持安全文件传输协议。虽然它容易出错,但开发人员可以使用它来交换、更新或删除端点,同时保持部署的性质。
IT团队还可以使用容器来集中应用程序构建,并避免在多个环境中部署整个应用程序代码。应用程序映像可以保存到任何云都可以访问的容器存储库中,开发人员可以使用给定提供程序的编排工具来启动应用程序映像。
如果企业仍然想要使用一些云原生服务,还有其他一些技巧可以解决依赖性分发,尽管它们可能会降低可迁移性并增加复杂性。例如,如果只有一个提供商拥有上传内容交付网络资产的工具,请确保每次使用该云平台将内容上传到该CDN,即使目标是另一个云平台。
无论采用哪种方法,企业还必须确定将在每个环境中运行的部署后任务,以便平衡云中的负载。同样,更多的云平台会增加复杂性,因此请注意应用程序依赖的托管功能以及需要额外管道自制的方式。