AWS(Amazon Web Service) 开始于 2006 年 3 月 14 日 Amazon S3 的发布,距今已经有十年的时间了。云计算改变了企业对数据的存储、处理和分析的过程,开启了云计算时代的到来,形成了极其火爆的技术生态圈,受到非常广泛的应用。在2016年云计算十岁生日之际,InfoQ策划了云计算十年热点系列文章,为大家梳理云计算这十年的变化,技术圈的生态状况,从历史、背景、格局、趋势、机会这5个角度来看云计算时代,回顾以前,激励以后。本文是Docker容器云篇。
云计算发展至今已经10多个年头,作为茫茫从业大军中的一员,我有幸见证了它近几年的飞速发展。随着时间推移,云衍生出了多种形态,容器云在2015年以一个云计算新兴成员的身份被人们推到了前台。本文是我以从业者角度出发,谈谈我经历的云计算,以及我对容器云这种云形态的认识,权当抛砖引玉,如有不当,欢迎交流指正。
先来回顾一下我经历的虚拟化和云计算。总结起来,网易在云计算之路中经历了以下四个时期:
容器云/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容器云的前景,但是也不乏一些唱衰的观点出现。对构建一个良性的社区环境而言,正面和反面的声音同样重要。
Docker的出现是近几年的事情,一般来说,会把Docker技术诞生的2013年作为容器技术流行的元年。当Docker过分地曝光在众人注目之下时,它固有的缺点就暴露出来了。举个例子,Docker的网络和存储管理带有天然的缺陷,成为大部分生产环境实践的障碍。另外,Docker集群管理工具(Kubernetes, Swarm等)也需要更多的大规模线上实战来历练和验证。
从我们开展的Docker目标群体调研结果来看,大家对Docker的使用方式和Docker该有的正确使用方式之间存在差异。长久以来的虚拟机概念深入人心,再加上LXC容器技术的先入为主,导致用户习惯于以使用虚拟机的方式在使用Docker容器。这也是网易蜂巢提供容器化主机的根本原因。因为我们意识到,大部分用户的Docker使用习惯在短期内难以改变,只能慢慢引导。我们也期望通过不断丰富平台功能,可以将用户使用Docker的角度,从主机转变为容器,释放出容器真正的威力。
容器技术本身非但没有提升应用的安全性,反而在一定程度上降低了安全性。因为容器与宿主机共享操作系统内核,只要同一个宿主机上任一容器存在漏洞,或者宿主机本身存在安全漏洞,都有可能导致上面的所有容器安全性受到影响。再加上公有镜像市场中的容器镜像鱼龙混杂、恶意镜像的传播途径更是不可控的,使得单独容器对容器云平台的安全性造成很大的威胁。如何有效防止外部攻击和内部渗透把危害带给云平台和业务,也是各容器云平台厂商需要思考并且解决的。
看待一个事物要同时看到它的正反两面,我们对Docker容器云的态度也是如此,机会与挑战并存。大家都知道这是一条布满荆棘的路,谁能越快穿越过去,谁就越能占得先机。
冯常健,网易蜂巢平台技术负责人,先后参与网易云计算消息队列服务、自动化部署系统、网易蜂巢的设计与开发工作。主要兴趣方向是高可用/可扩展架构设计、分布式系统、队列理论等。
感谢陈兴璐对本文的策划和审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们。
您需要注册一个InfoQ账号 或者才能进行评论。在您完成注册后还需要进行一些设置。