随着云计算的广泛采用,企业变得比以往更具活力。如今,许多公司的业务正在向云计算迁移。选择云提供商几乎总是确保长期供应商锁定。无论是工程师很难对应用层进行适当的抽象和概括,或者应用程序数据的大小使得迁移变得困难,所以迁移到基于云计算的系统是一项非常具有挑战性的任务。在从本地数据中心上的自托管系统迁移到云中时,应考虑以下挑战。
1. 不当的抽象
在新环境中抽象失败是向云迁移过程中面临的最大挑战之一。通常,应用程序的体系结构取决于其下面的一些本地化API。这在大规模运行的系统中特别常见,因为特定的问题只能在一定的规模中才能看得见。工程团队经常使用一些类似黑客的程序和补丁来修复系统,但是黑客会在系统迁移过程中进行攻击。定期代码审核在一定程度上有助于减轻这些问题。
2. 部署过程中的差异
所有的现代持续集成和持续交付(CI/CD平台都支持多个云提供商,但这还不够。具有复杂设置和启动过程的应用程序通常需要人工干预部署。近几年来,这一点通过使用Puppet,Chef和Ansible等工具在很大程度上可以实现自动化。但是这种自动化通常与供应商特定的API联系在一起,这些API需要配置,监控和拆卸服务器。但是,除非工程团队花时间自己构建,否则这些API不适合小型的本地数据中心。
3. 重新架构
现代应用程序分布在多个不同区域的多个数据中心。这是迁移到基于云计算的部署的主要好处之一。企业正在逐渐从单一的应用程序基础转变为基于微服务的方法。一个本地数据中心迁移到多地点部署需要适当地重新构建应用程序。这意味着除了开发新版本之外,工程团队还必须关心现有的安装情况。迁移系统的关键部分经常会导致停机,新的部署仍然不能保证在首次运行中取得成功。建议在出现问题时对原有部署进行故障切换,以防出错。大型迁移可能需要几个月的时间才能完成,并可能需要额外的员工来完成。
4. 传输大量的数据
想象一下,必须将移动社交应用Instagram的业务从AWS云平台迁移到微软Azure云平台上。传输这些海量的图像本身就是一项艰巨的任务。认为有时最好的措施是物理运送数据,而不是将数据上传到云计算提供商,这种行为并不疯狂。这两种策略都经过多年的分析,行业仍然没有确定哪个策略才是正确的做法。这个问题不是取决于正在迁移的系统的类型,因此不能通过仅仅改变架构来缓解。一些企业从一开始就选择使用云存储,即使涉及到基于本地数据中心的部署。当数据不太活跃或者不需要立即处理时,这种方法特别普遍。Amazon S3存储已经成为许多企业多年来的可靠存储解决方案,并且一直是这一领域的领跑者。
如今的许多企业都喜欢快速收购和出售市场型的初创公司。迁移到云端或从一个提供商转换到另一个提供商是这类业务的非常普遍的任务。通常情况下,需要使用当前的一套应用程序来制作新获得的应用程序。有时,新产品转移到新的云计算提供商或从云端迁移到自我托管的设置,以利用已经购买的合同或硬件,就像Instagram迁移到Facebook的数据中心,这实质上形成了Facebook的私有云平台。
无论是什么原因,迁移到基于云计算的系统是许多组织的必要条件。最好是以一种与供应商无关的方式编写应用程序,并在适当的地方进行适当的抽象,以便缩短可能长达几个月的考验过程。