技术开发 频道

说到难做到,应用程序容器化实例解读

  【IT168 评论】IT圈一向是“长江后浪推前浪,前浪拍在沙滩上”,三年前,身在IT圈你不知道容器可能是人之常情,但是现在你还是不知道容器可能就是人神共愤了吧。

  短短的三年时间,容器技术就完成了从原力诞生到自带主角光环的转变,随着容器技术的不断成熟,该市场也涌现出了很多公司,如云栈科技、云雀科技、数人科技等等,这些供应商和服务提供商都强调将应用程序和工作负载迁移到云会有很多好处,首当其冲的就是低成本和高灵活性。

说到难做到,应用程序容器化实例解读

  容器的出现,让企业旧代码迁移到云中在理论上变得可行,但是真正要上云时,遗留应用程序的“提升和转移”策略可行性还是有待商榷的,其在很大程度上还是处于早期实验阶段。

  LinkedIn和康奈尔大学都在使用容器将应用程序迁移上云,今天我们就来看看他们有哪些应用程序迁移策略,希望能够给有这方面需求的企业一点启示。

  容器和云

  很多企业都在尝试通过容器将传统应用程序迁移上云,但是我们发现他们中很大一部分的升级和转移策略不是很完备的,甚至有些很浓重的临时性的色彩。

  Gartner云应用平台研究总监Traverse Clayton表示,借助容器将传统应用程序迁移上云这种情况并不常见,所以我们不建议使用容器作为传统的应用程序和工作负载的容器,无论企业是要本地使用还是打算借助它迁移上云。

  Traverse Clayton表示如果不能彻底容器化遗留应用程序,而是选择保守容器化,那么这样产生的容器化应用程序可能是臃肿的,并且作为容器不能最优化运行。保守容器化也不是毫无优点的,它允许应用程序运行在新一代容器化基础设施上,并允许企业获取Docker的其他优势,如它们能够加快开发迭代,容器可以延长企业应用程序的生命周期。

  虽然研究公司没有看到大量的应用程序向容器移动,但是还是有一些业务驱动的程序在这样做了,例如一方面,企业正在从当前的虚拟化技术转向应用程序的容器化。另一方面,开发团队推动容器标准化作为应用程序整个生命周期中实际部署的单元。

  应用程序的容器化带来的好处是成本优化。Clayton表示: 容器化应用程序将增加您在服务器上的密度,促成成本节省,目前网络规模较大的公司和云服务提供商已经证明这项战略是有效的,但是现在没有任何量化的证据证明它同样适合于传统IT企业。

  目前主流云服务提供商提供容器即服务(CaaS),开发和运营团队能够利用容器的规模,但不需要管理底层容器编排和管理基础设施的开销。另一个是PaaS供应商让客户能够在其平台上将容器作为标准部署单位运行。

  Clayton认为大多数客户在PaaS上交付应用程序都希望利用云特性,并最大限度地利用其在IaaS上的投资,所以在这种环境中运行容器的能力是极具诱惑力的,因为它减少了开发团队和运营团队之间的摩擦。此外,网络、存储和安全层面上的创新,为开发团队提供了大量的插件,有助于遗留应用程序平滑的向容器过渡。

  LinkedIn和康奈尔大学正在推进使用容器将应用和工作负载迁移到云端,我们看看他们是怎么做的。

  LinkedIn

  LinkedIn容器化应用程序的经验简直是教科书式的。LinkedIn的工程主管Steve Ihde表示企业社交媒体提供商的网站主要由数百家公司多年来创建的基于Java的微服务提供服务。

  Ihde补充道,每个微服务都有很多实例,当我们将它们移动到私有云时,我们将它们从需要人工来决定如何将每个作业放在服务器上的环境以及服务器可以处理多少负载的环境中,移动到自动化系统放置作业、并确保作业最大程度不浪费服务器资源的环境中。

  LinkedIn依赖的是Docker开源贡献的标准化容器执行引擎 runC,该解决方案是开放容器格式标准(OCF, Open Container Format)的一种具体实现,主要处理每个主机上设置容器的所有细节。

  Ihde表示LinkedIn为了更广泛和方便的使用系统,对系统的大多数其他方面都开发了自己的解决方案,如拓扑管理、如何在主机上放置作业、服务配置和映像管理,LinkedIn将之称为LPS,即LinkedIn平台即服务。

  在过去几年中,LinkedIn一直在探索如何从更小的硬件占用中获取更多资源,同时通过使其软件堆栈更加面向应用程序来提高生产率。Ihde表示LinkedIn将赌注放在大规模抽象部署,资源配置和依赖关系管理,并希望通过这种方式大幅提高软件工程师和SRE团队成员的工作效率和生产力。

  LinkedIn的基础和数据团队为公司内部其他成员创建产品和服务提供了平台。 Ihde表示:我们的目标是让这些后端系统对在其上工作的人是不可见的,同时不会增加复杂性或影响性能。

  LinkedIn已经看到日常任务的生产力正在经历“戏剧性”的改进,例如通过部署更多的实例来扩大微服务,Ihde表示我们可以在服务器减少一半的情况下,通过部署相同数量的微服务实例来提高我们的硬件利用率。

  通过容器将应用程序迁移上云最大的挑战之一就是满足用户的期望。Ihde表示LinkedIn发现系统用户、内部开发人员和SRE团队成员都对其有非常高的期望。在各个领域提供完美的工作隔离现在还难以做到,但是如果我们告诉用户我们可以提供隔离,那么他们肯定会期待是完美的隔离,这和社会主义初级阶段的主要矛盾还是有些许相似,日益增长的用户期望和落后的科技技术之间的矛盾。

  康奈尔大学

  从2013年9月以来,该康奈尔大学一直在使用Docker来集中化工作负载,他们也在积极努力将IT基础架构迁移到云。

  云架构师Shawn Bower表示康奈尔的本地基础设施也经历所有的经典问题,例如定期故障,耗时修复和相关成本。在Docker 1.3发布之前,没有exec命令,这意味着要想对正在运行的容器进行操作必须通过ssh或者nsenter来实现,而exec命令很好地解决在运行时对容器进行控制的问题。Bower表示我们一开始构建系统的目标就是摆脱SSH,而Docker正好为这一目标提供了努力的方向和基础。

  迁移到Docker是康奈尔大学云迁移工作的一部分。Bower表示在未来三年内,康奈尔本地数据中心的大部分都将迁移到云端。一个小型IT企业不可能跟上AWS等云供应商的步伐,他们正在推动服务器管理和安全的边界比我们所希望的要更远。从拥抱计算资源和自动化重复操作任务的能力中,我们已经看到了他们在处理IT基础设施方面的优势,硬件成本和时间成本都降低了。

  康奈尔大学第一批迁移上云的容器化应用程序之一是运行在Confluence协作软件上的wiki。Bower表示,项目启动之前工作人员要花费1770小时来维护支持,六个月该项目完成之后,只需178个小时就可完成。

  任何新技术的采用都会遇到困难,康奈尔采用容器技术也不例外,Bower说康奈尔在第一个应用程序上线后,就遇到了日志缓冲区中内存泄漏的问题。Docker的学习曲线比较陡,所以我们是无法跟上开源项目发布新引擎的速度。

  在借助容器移植应用程序的过程中,康奈尔大学发现将应用程序分解为组件有助于简化过程。 Bower认为这种方法有助于独立测试、修补和维护每个组件,我们已经建立了服务的基本组成部分,通过组合的方式我们可以组装新的服务。

0