浅谈云上应用自动化的发展趋势

【译者序】

随着Docker公司那难以抑制的宏图壮志的逐渐显露,其他人关于未来趋势的声音也许值得关注。

午夜一点,你收到了一封系统自动发送的来自“应用移植经理”的邮件,其中讲到量控制程序(它本身也是一个容器化形式的应用)已经自动将你的AWS实例迁移到了你的新的Google实例。此外,你所有容器已经启动并运行,原有和企业数据库的连接也已经完成重建,同时所有的安全和管控服务也已经重置成功。

这一切都是自动发生的,甚至在跨云迁移前你自己都不清楚这样的迁移即将发生,而这是系统分别对在AWS和Google上运行容器化应用的成本差异进行对比之后,自动作出的决定。而后者一旦被证明更具成本效益后,基于预定义规则的跨云自动移植即可开始,所有容器即可跨公有云迁移。当然,同样也可以是跨私有云迁移或者公有云/私有云之前迁移。

当下,这样的场景也许听起来更像是科幻小说,但也许不久我们即将具备这种能力。这种能够对容器进行混合和配对、自动跨云迁移,并针对不同云完成本地化工作的可能性,也许会改变我们对云计算的发展,对公有/私有IAAS和PAAS的一些看法。

发现新价值

在如下这样一个数据中心中,它具有云编排层(cloud-orchestration layer),能够支持容器运行、支持容器在线迁移,并能在容器迁移后监控其状态。使用容器并不算是一件新鲜事,甚至在Docker出现之前人们已经在使用各种容器了。但是,“自动资源调配”和“自动迁移”之前更多仍是停留在概念上,在实际的实践推广过程中仍然面临很多困难。Docker的出现为将概念变为现实提供了更多可能性:

浅谈云上应用自动化的发展趋势

通过容器层的抽象来降低复杂性

容器屏蔽了对底层基础设施服务的依赖,降低了和这些平台打交道的复杂度。容器具有非常明确的定义,即支持应用程序或服务的“小平台”。

通过自动化,最大化容器的可移植性和容器自身的价值。

通过自动化,我们可以通过脚本实现容器的跨云迁移。这意味着需要重新配置容器间的各种通讯,如不同层级间的通讯,同数据服务的通讯。今天,在对应用进行自动化迁移时,效果依然很难尽如人意。事实上,自动化迁移通常需要依赖于很多经常变化的外部条件,一旦不再具备这些条件,迁移就会非常困难。尽管这些问题依然存在,但幸运的是,这些问题并非不可解决的。

提供更好的安全和治理服务

通常在许多情况下,安全和治理服务是基于特定平台并与其绑定,而不是和特定应用程绑定的。通过在容器外围部署安全和治理服务,而不是在容器内部或者应用域(application domain)部署,可以提供更好的移植性,降低迁移操作时的复杂度。

提供更好的分布计算的能力

这主要是因为应用程序容器化之后可以更容易的分到许多不同的域,而这些域中都是各自容器形式存在的应用。这些容器可以以任意数量运行在不同的云平台,特别是那些提供最优性价比的云平台。换句话所,就是容器化的应用在分布部署时可以根据容器对各平台的利用率进行优化。比如说:可以将i/o密集型应用程序更多在部署在裸机上,以提供最佳的性能,将一个计算密集型的应用程序更多部署在可以提供适当的缩放和负载平衡的公有云上,甚至可以将其中一部分有选择地部署在传统的硬件和软件。总之,应用程序可以被分割为优化的组件,而这些组件结合在一起则构成完整的应用程序.

提供基于预定义规则的优化和自管理的自动化服务

对于容器所在的云平台,如果没有一个可以自动应对配置变化的自动化层(auto-magically)这一切都是空谈的。

回到现实

虽然可能有其他更好的方式来利用新兴的云计算平台,并且看起来仍有许多障碍需要克服,但器化仍然可说是分布式应用的重大变革。

虽然目前技术确实可以管理机器实例,甚至基于简单策略和脚本,已经可以实现策略驱动(policy-driven)的自动化跨云的容器迁移,包括自动配置、自动本地化,但当下的自动化和编排技术仍然达不到我们所期望的程度。

此外,Docker推出的时日尚短,关于Docker及其所代表的容器虚拟化的潜力和局限性仍需探索。以之前的容器和分布式推广经验来看,这项技术可以发挥最大价值的途径是提供容器的跨云协调(cloud coordination)。是的,能够成为跨云的标准是一件激动人心事情,但历史告诉我们,供应商和厂商都倾向于在自己的标准和方向上继续前进,以确保自己的市场份额利益。如果出现这种情况,则一切都会变成空谈了。

最后的问题。 虽然我们尽力让事情简化,随着时间的过去,使用容器作为平台的一种抽象意味着应用程序将朝着更加复杂和更分布的方面变化。未来,你有可能发现你的应用程序运行在很多不同的型号和品牌的云平台的成百上千的容器中。如此复杂的情况,可能是脆弱并且难以维护的。

考虑到所有的一切,在云上构建应用仍然可能是一个较好的选择。PaaS和IaaS云仍将提供平台,甚至提供基础的开发能力。然而,随着Docker 商品化的进展,应用也许会基于容器化的平台。如果有较大的厂商希望能够推动容器大规模推广、大规模商用的进程,那将会是有趣的一件事情,因为出于利益的考虑,这也很可能是Docker公司自己的方向。

相关推荐