构建多云应用程序:平衡选择自由与复杂性的实践指南
一、构建多云应用程序前需考虑的因素
敏感信息隔离:不要在源代码中包含密码和 API 密钥等敏感信息,降低数据泄露风险。
单一入口点设计:为应用程序提供单一入口点,通过循环域名系统记录在云计算提供商之间分配负载,最大限度降低故障点风险。
自动化简化复杂性:尽可能实现自动化,减少人工操作带来的复杂性和错误概率。
合理利用本机工具:不要完全排除本机工具。云计算供应商可能提供真正独特、有价值的服务,有时避免使用特定工具的成本可能高于供应商锁定的风险。
二、规划可迁移性:时机与方法的权衡
三、克服平台差异:同质化与抽象化策略
限制扩展范围:仅在一个云平台中扩展特定功能,减少跨平台适配成本。
并行部署:在不同云平台中运行并行部署,共享事务和其他任务。这种方式需要在重复的应用程序组件之间使用负载均衡器,但无需特殊部署技术,仅需在云平台之间转移工作负载。
抽象化组件:当应用程序组件需要跨云平台扩展或故障转移时,IT 团队可使用基于适配器设计模式的私有中间件,将不同云平台提供商的 API 整合为单个 API,供开发人员统一使用。若提供商服务存在差异,可创建更高级别的抽象,将组织的 API 映射到每个云中的特定功能。
四、简化持续集成和持续交付(CI/CD)管道
利用安全文件传输协议:大多数云计算供应商支持安全文件传输协议,尽管容易出错,但开发人员可通过它交换、更新或删除端点,同时保持部署的一致性。
容器化集中构建:使用容器集中应用程序构建,避免在多个环境中部署整个应用程序代码。应用程序映像可保存到所有云都能访问的容器存储库,开发人员可使用特定提供商的编排工具启动映像。
应对云原生服务依赖:如果企业仍想使用部分云原生服务,可采用一些技巧解决依赖性问题(尽管可能降低可迁移性并增加复杂性)。例如,若只有一个提供商拥有上传内容交付网络(CDN)资产的工具,可每次通过该云平台将内容上传到 CDN,即使目标是另一个云平台。