容器云 /ul> (点击放大图像)
2010 年之前,公司的互联网业务一直都是采用传统的物理机部署方式。2010 年开始,部分业务开始使用 Xen 虚拟机部署,通过在一个物理机上运行多个 Xen 虚拟机的这样一种方式,不仅提升主机交付效率,也节省了不少硬件开支。但是它的缺点很明显,缺少虚拟机的自动化管理工具,人工参与度高,另外,物理机时代留下来的业务“混部”现象仍然非常严重。一年之后,随着虚拟机在生产环境上的稳定运行,同时外部条件也日趋成熟,我们踏上了 OpenStack 私有云实践之路,包括基于 IaaS 实现的数据库、缓存、消息队列、负载均衡等 PaaS 云服务也逐渐完善起来。
到了 2016 年,网易私有云已经覆盖公司内部 95% 以上的互联网产品,这些互联网产品也充分享受到了云化带来的种种好处,弹性伸缩、服务高可用、数据高可靠、云安全防护,等等。当大部分互联网产品架构中的对象存储、数据库、缓存、消息队列、负载均衡等设施被抽象为一个个云服务时,产品技术选型也就成为了一种搭积木的游戏。云服务开放的 API 使得业务方和运维人员可以很方便地实现自动化运维,这是云计算带来的一个非常明显的转变。
(点击放大图像)
然而,IaaS/PaaS 私有云的建设说到底还是一种运维驱动型的应用发布模式。开发人员在提交代码之后,运维人员需要接着完成初始化、依赖检查、运行环境配置、代码部署等一系列流程之后,一个应用才算正式发布上线。这个流程一方面对运维人员依赖很重,导致运维团队也越来越庞大;另一方面,应用的运行时环境和依赖服务的一致性得不到保障,这一点大大降低了持续集成/ 持续部署的功效。因此,一种理想的发布模式应该是开发驱动型,在这种模式下,开发人员可以把业务开发、代码提交、应用部署有机整合,实现自助式运维,最大限度降低人工参与度。目前能够以最小代价实现这种开发驱动型模式的就是Docker 容器技术。这也是网易蜂巢正在推动的一件希望会改变现有应用发布模式的事情,以Docker 容器为载体,可一键发布部署应用的Docker 容器云平台。
容器云的机会
云计算在IT 市场上的比重会越来越高。当市场上同时存在IaaS、PaaS、CaaS,并且存在竞争关系时,CaaS 容器云平台的机会在哪里?从近年的百度指数来看,Docker 关注度已经超越OpenStack,并逐渐将差距拉大,这至少在一定程度上说明CaaS 是未来云计算的趋势,趋势就是机会。在我看来,CaaS 与IaaS/PaaS 之间并非是此消彼长的关系,CaaS 的流行并不意味着IaaS/PaaS 的消亡,CaaS 是IaaS/PaaS 在云计算道路上的进化,是企业和个人用户选择的结果,特别是企业用户,在选择IaaS/PaaS 之后有几个问题是避不开的。
1) IaaS 服务运维门槛相对偏高,对运维人员的要求也高,组建一个合适的云计算运维团队不容易。即使有了专门的运维岗位和运维人员,在后续的业务迭代过程中运维和开发人员之间产生的沟通成本也无法忽略。
2)对企业来说,理想情况下是建设自己的私有云,退而求其次是使用托管云服务。但是无论私有云还是托管云,它们的代价都不小。因此,对中小型企业来说,最佳选择就是按需付费的公有云平台。当然,选择公有云平台也不是没有顾虑的。一来担心公有云平台本身生命周期太短,还不及自己产品的生命周期长;二来担心技术架构被公有云平台的服务和条款所绑架。
而 Docker 容器技术的出现恰好解决了企业应用上云和交付的这几个痛点。
首先,Docker 容器轻量,成本低,效率高。Docker 容器的本质是一种操作系统级别的虚拟化,启动一个应用容器其实就是启动应用进程本身,这是容器技术与传统虚拟机技术的最大差别。
其次,Docker 镜像具有不变性。Docker 镜像能够将应用程序和它依赖的操作系统、类库以及运行时环境整体打包,统一交付。另外 Docker 镜像还可以通过 DockerFile 定义,换言之,应用程序和运行环境一起是可以被版本化管理的。Docker 镜像真正抹去了应用程序多个运行实例间的环境和依赖版本差异,同时也把对运维人员的重度依赖解耦开来。
最后,Docker 容器平台无关,兼容性好。Docker 容器在 Linux 平台各发行版下是兼容的,这意味着应用架构一旦 Docker 化部署之后,就可以在任何云平台间无缝迁移,不会被云平台厂商所绑架。
Docker 容器技术出现在最被需要的时候,就像那只站在风口上的猪,这就是容器云平台的机会。
容器云的挑战
虽然业界普遍看好 Docker 容器云的前景,但是也不乏一些唱衰的观点出现。对构建一个良性的社区环境而言,正面和反面的声音同样重要。
1 容器技术和容器生态仍需要持续发展
Docker 的出现是近几年的事情,一般来说,会把 Docker 技术诞生的 2013 年作为容器技术流行的元年。当 Docker 过分地曝光在众人注目之下时,它固有的缺点就暴露出来了。举个例子,Docker 的网络和存储管理带有天然的缺陷,成为大部分生产环境实践的障碍。另外,Docker 集群管理工具 (Kubernetes, Swarm 等) 也需要更多的大规模线上实战来历练和验证。
2 用户的 Docker 使用习惯仍需要培养
从我们开展的 Docker 目标群体调研结果来看,大家对 Docker 的使用方式和 Docker 该有的正确使用方式之间存在差异。长久以来的虚拟机概念深入人心,再加上 LXC 容器技术的先入为主,导致用户习惯于以使用虚拟机的方式在使用 Docker 容器。这也是网易蜂巢提供容器化主机的根本原因。因为我们意识到,大部分用户的 Docker 使用习惯在短期内难以改变,只能慢慢引导。我们也期望通过不断丰富平台功能,可以将用户使用 Docker 的角度,从主机转变为容器,释放出容器真正的威力。
3 云安全仍是个大问题
容器技术本身非但没有提升应用的安全性,反而在一定程度上降低了安全性。因为容器与宿主机共享操作系统内核,只要同一个宿主机上任一容器存在漏洞,或者宿主机本身存在安全漏洞,都有可能导致上面的所有容器安全性受到影响。再加上公有镜像市场中的容器镜像鱼龙混杂、恶意镜像的传播途径更是不可控的,使得单独容器对容器云平台的安全性造成很大的威胁。如何有效防止外部攻击和内部渗透把危害带给云平台和业务,也是各容器云平台厂商需要思考并且解决的。
结语
看待一个事物要同时看到它的正反两面,我们对 Docker 容器云的态度也是如此,机会与挑战并存。大家都知道这是一条布满荆棘的路,谁能越快穿越过去,谁就越能占得先机。
作者简介
冯常健, 网易蜂巢平台技术负责人,先后参与网易云计算消息队列服务、自动化部署系统、网易蜂巢的设计与开发工作。主要兴趣方向是高可用 / 可扩展架构设计、分布式系统、队列理论等。
感谢陈兴璐对本文的策划和审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们。
评论