企业采用容器正当时
作者简介:Vivek Juneja 是派驻首尔的工程师,致力于云服务和微服务。2008年,他就开始接触云平台,是AWS和Eucalyptus的早期采用者。他还是一名技术布道者,经常在印度的各个技术大会上演讲。他经常在www.cloudgeek.in和www.vivekjuneja.in撰文,热衷于促进技术社区的发展。
编者按:这是摘自电子书《Docker和容器生态系统》的一个章节。若想更深入地了解不断变化的容器领域,请下载该电子书(http://dl.thenewstack.io/201510ebook/BOOK1-TheDockerAndContainerEcosystem.pdf)。
颠覆性的新技术和新做法常常遵循大企业全面采用的过程。这个过程通常始于复杂深奥的演讲和讨论,随后是各种各样的概念证明。企业确实采用时,通常先是在构建非关键系统的小型团队内部采用,主要用于开发和测试这类工作负载。等到新技术进入到生产环境,大把的时间和机会早已流逝。
眼下,容器和企业工作负载容器化概念正在许多企业经历这个过程,主要是由于容器有望解决困扰企业中开发人员生产力和应用程序交付的各种问题。
通过提供围绕工作负载的抽象机制,并让工作负载易于移植,容器已成为支持众多更高效的开发流程和应用程序架构的基础。
具体来说,企业的开发团队和IT部门将Docker和容器视为处理下列问题的一种手段:
流程效率低下:企业内部的不同团队在开发和发布软件方面常常有自己的一套标准。外包开发,遗憾的是往往伴随有限的治理和透明度,常常加剧了这个问题。许多企业在探究容器,希望以此规范诸团队的软件发布流程。
遗留应用程序:遗留应用程序和系统在企业司空见惯。这些系统不断带来操作和维护问题。项目团队竭力分配资源,以便运行按需配置的测试基础设施,因而常常放弃测试,支持及时发布新功能。开发遗留应用程序的团队之所以被容器吸引,是由于容器能够帮助他们更有效地利用基础设施。
协同工作:从事大型项目的开发团队要协作发布软件,这个过程往往需要很长时间。比如说,如果团队开发需要不断维护和开发的遗留应用程序,会欣赏容器帮助他们更轻松地同步软件发布这一功能。基于容器映像的开发方法还有助于鼓励开发团队和运维团队更密切的合作,因而促进开发运维(DevOps)。
开发/生产对等:生产环境、开发环境和测试环境往往存在对等问题,逐渐变得疏远,导致不断出现“在我机器上运行”问题。容器有助于确保各种基础设施上有一致的运行环境,企业开发团队觉得这项功能极其有用。
虚拟机散乱:随着企业采用虚拟机,虚拟机散乱现象常常随之而来,导致基础设施的利用率比较低下。为此,企业采取的对策常常是,制定严格的治理规则(比如审批和工作流程),遏止散乱现象。然而,这些规则恰恰抵消了弹性和自助服务给开发人员带来的好处。由于与容器有关的开销比虚拟机的开销低得多,许多企业都很激动,认为容器是缓解散乱现象的一种方法。
云原生应用程序:微服务及其他云原生应用程序架构需要对基础设施有一种不同于传统观念的认识。企业开发团队在容器中看到了这样的机会:更容易构建云原生应用程序,并利用新兴趋势、为己所用。
虚拟机开始在企业内部流行起来后,吸引IT部门的一大卖点就是,有机会合并未充分利用的基础设施,减少运营所占空间和成本。然而,推动企业采用容器及其生态系统的却是敏捷性,而不是降低成本。
下面是企业在评估和采用容器技术时通常采用的几个策略:
从容易见效的方面下手:由于开发团队要竭力配置并运行测试环境,因而浪费了好多时间,越来越觉得沮丧。开发和测试环境中解决基础设施可用性危机常常是向容器迁移的一个动因。如果是不需要专用实例的项目,可以重复使用IT基础设施,用于作为互连容器而部署的测试环境,这是开始入手的一个好办法,还能够提供关于这项技术的重要操作知识。
更新构建和部署流程:需要对构建和部署基础设施进行改动,那样企业才能充分利用现代化基础设施。为了部署到公共云和私有云,一些企业将终端应用程序作为一组机器映像来部署,缩短了安装刚配置的按需基础设施所需要的时间。同样这个做法还可以用到容器映像上。在基于容器的部署模式中,构建这个步骤可以使用预先存在的基本映像,为环境生成新的容器映像。部署这个步骤拿来该映像后,可以在支持所选择容器技术的任何基础设施上运行映像。
奉行“容器优先”的原则:为所有新项目采用容器优先的做法是推动采用的另一条常见途径。这意味着,所有新项目必须使用容器来构建和发布软件,除非有具体的原因表明不该使用容器来构建和发布。容器优先鼓励开发团队将容器视作其应用程序拓扑中的第一类要素(first-class element),并促进开发容器原生应用程序。此外,为新的开发团队提供预容器化的项目环境比使用传统方法容易得多。这有助于让团队迅速启动,不必操心迁移现有项目流程具有的复杂性。
规范基本映像:运维团队正式确定并发布所有项目都能使用的标准化容器映像很重要。构建项目时,这些定制的基本映像可以托管在开发团队使用的私有注册中心(private registry)上。标准化基本映像出现变化,可能意味着注册中心上有新版本,然后新版本可以透明地用于开发流程。企业习惯于托管面向防火墙规则及其他数字化IT资产的私有存储库,所以这对它们来说应该不是陌生的采用步骤。
企业将容器纳入到总体IT战略时面临两大挑战:安全性和缺乏成熟的工具。
虽然多年来像谷歌和推特这些大规模公司一直将容器用于生产环境中,但是如今容器对开源产品和专有产品来说仍处于早期阶段。工具成熟性问题基本上涉及时间和经验。随着采用率提高、需求量加大,工具势必会日渐稳定和改善。
企业IT部门将目光投向容器,希望帮助自己获得更现代化的应用程序架构和开发流程,同时让自己可以更快地创新。
另一方面,安全一向是早期采用者关注的主要问题。虽然将容器用于生产环境的所有公司都关注安全,但是在多租户环境下结合使用容器和生产工作负载的公司对安全尤为关注。
容器隔离是眼下的问题之一。迄今为止,容器在隔离从各个虚拟机管理程序接过的不同工作负载方面还没有表现出久经考验的强大功能。
去年,Canonical推出了LXD,该技术实施了加强容器安全方面的概念,可以通过Ubuntu和OpenStack集成来加强容器安全。现在还涌现出了像Hyper这些备受关注的新项目,作为容器的替代方案。Hyper使用了极简的Linux内核(名为HyperKernel)装入和运行容器。正是出于这个原因,VMware一直在推广传统虚拟化,作为容器的补充。
随着企业组织继续推动敏捷性和创新,它们自然旨在消除效率低下问题,比如资源约束和流程瓶颈。与此同时,它们正转向现代化应用程序架构模式(比如微服务)和开发流程(比如持续交付),这些架构模式共同让开发人员大大加快迭代速度。
去年,荷兰国际集团(ING)的首席架构师在Dockercon欧洲大会上讲述了他们如何使用Docker实现持续交付。BBC News也强调了如何围绕Docker,设计持续集成解决方案的架构,并介绍了他们在这么做时需要注意的陷阱和需要克服的弊端。这两家大公司的演讲表明了企业迅速对容器技术开始重视起来。
如果采用本文概述的一种或多种方法,刚接触容器的企业就可以往启蒙道路迈出头几步,知道自己沿着一条之前许多企业走过的道路前进。
云头条编译|未经授权谢绝转载