虚拟化技术的昨天、今天与明天
发布日期:2016-3-28 10:3:49
虚拟化技术的昨天、今天与明天 本文会分别讨论Docker和OS虚拟化。然后解密作者深入分析数据之后发现的虚拟化领域正在和没有发生的事情。 我在Docker(前身是dotCloud,后来改名为Docker)创建之后的这几年里,通过和Docker员工以及包括Ben Golub和创始人Solomon Hykes在内的核心主管们收获了很多,然后根据我的感想写下了这篇文章。 除了直接和Docker团队沟通并深入讨论,我还在前四天里完成了一些面试。这些面试包括针对Docker技术的一系列标准问题和探讨,包括但不限于如下问题: 目前你如何使用Docker虚拟化技术? Docker是否能帮助你更快速地开发? 将来你打算如何使用Docker技术? 目前你的开发团队的配置和搭建使用什么工具(比如,Net、Java、Python、Node.js等)? OS级别虚拟化的历史 首先,我们来回顾一下虚拟化的发展史,然后再深入探讨其现状,展望未来的可能发展方向,并且介绍这四天里我从跟不同团队的面试和讨论中得到的一些信息。 缺点 OS级别虚拟化是虚拟化应用程序,它允许软件安装在完整的文件系统之上,就像基于hypervisor的虚拟化服务器一样,但是通过使用OS级别虚拟化的宿主OS能够大幅提高安装速度和整体性能。这样能够减少内核系统以及宿主上相应虚拟客户端的额外消耗。 自从1960年开始就有了虚拟化的概念,当时IBM在Cambridge科研中心大力投入研究该方向。相关开发一直在推进着,但是真正的突破性进展是1999年VMware推出的虚拟化平台,最终将虚拟化成功推向了市场。正是在Vmware助力下,才开创出了hypervisor级别虚拟化的巨大市场。但是OS级别虚拟化,这也正是Docker的基础,并没有在刚出现时就迅速地火起来。在这些年中,OS级别虚拟化领域涌现了很多产品,但是都没有像Docker这样具有划时代的意义的产品。在2013年Docker发布,快速发展到今天,还有很多日益增长的开发需求和使用场景。 虚拟化开发的时间轴 Docker在正确的时间点,将OS级别虚拟化引入到了开发者社区,满足了当前Web开发的需求,它提供了一种新的方式来实现应用程序的高效持续交付。Docker是使用最为广泛的OS级别虚拟化工具的一种,可以实现不可变基础架构,持续构建,集成和部署环境,并且作为通用虚拟化环境来按开发所需消费资源。 虚拟化的现状 目前Docker在OS级别虚拟化市场里占有绝大部分份额。下面让我们来看看几天前Docker社区统计数据。 The Stats: Docker on Github -> https://github.com/docker/docker Watchers: 2017 Starred: 22941 Forks: 5617 16,472 Commits 3 Branches 102 Releases 983 Contributors 从上面这些数据中可以看出,Docker社区是非常活跃的。也可以仔细看看fork并且决定pull请求,接受相关数据,就可以看出整个codebase是非常健康的。之前曾经有人质疑Docker管理开源社区的能力,质疑是否能在推进产品开发的同时可以保持一致性,口碑和产品质量,事实证明这些质疑都不攻自破了。 现在基于过去四天里的面试情况探讨下现状。和我交谈的17个人都知道Docker是什么。这和前几年的情况相比已经有很大的改善了。 在和我交谈的17个人中,15个人的团队在其环境中已经使用,或者正在尝试使用Docker。 这17个人中的13个人说它们严重担忧Docker的安全性。这些人所在的团队都在尝试找到在生产环境使用Docker的方法,而不是只满足于在开发环境中使用Docker。 17个人想要用或者正在用Docker的方式都不太一样。但是也有一些共同点。 Docker使用中最大的相似之处在于将其作为构建开发测试环境或者测试服务器的平台。可能是常规数据库服务器或者简单的分布式数据库,比如Cassandra或者Riak,可以很容易得构建出完全一样的数据库,然后销毁并在测试和开发需要时重建。一些Docker完成的构建只是用来模拟测试所需的分布式数据库环境。注意,我听到并看到这些可能是因为我之前在Basho工作过,接触过其他分布式系统程序员,公司和围绕这一技术的研究。这个领域仍然很有意思并且很有效。第二种Docker最常见的用法就是在持续交付链里使用Docker。使得持续集成和交付流程更加不可变,可重复并且可靠,这是Docker和这些需求的最佳切入点。能够在几秒内生成环境,随后销毁,一段时间后再创建,这使得持续交付更为强大,并且比之前任何时候都更为可行。 一些不太常见的用法,也仍然是Docker的核心用法,是在面试的时候谈到的:内存内缓存服务器,网络虚拟化和分布式系统。 虚拟化的未来 威胁向量 即使从很多角度看Docker的未来之路已经很清晰,但是还是有些角度并不十分明朗。比如,现在有很多竞争对手慢慢出现,最大的威胁来自Google,它对Docker不感兴趣,于是自行构建了与Docker竞争的工具。如果Google大力进入OS级别虚拟化领域,将会是Docker强大的对手。 另一个威胁是,现在还看不出的一些威胁。类似Mesos这样的工具可能会在流行起来之后决定不再使用Docker,而关注于其他虚拟化途径。同样地,可能什么时候,Mesos会觉得Docker能带来的虚拟化级别的价值比不上维护Docker的花费。 目前该领域无形的威胁相当多。没有什么好办法来定位这些威胁,然后和Docker的开发人员深入讨论它们。从某种角度来说,开发人员热爱有能力做某些事情的感觉,但是他们喜欢尝试很多工具,这就让一些后来者有居上的可能性。简单地说,对于Docker并没有什么神奇的忠诚度,开发人员会选择能够帮助他们更快更容易完成开发工作的任何工具。 另一个可预见的威胁是可能被传统软件公司,比如Oracle,Microsoft或者其他公司收购。这无疑会动摇产品的OSS方面并且减缓开发的进度,也可能会增加很多企业级功能。这也是可能发生的一种情况。 路径 之前历史部分介绍了Docker的核心用法,这里我们看看收购的情况。Docker收购情况可以侧面反应出Docker公司的未来方向。最近的收购包括:Kitematic、SocketPlan、Koality和Orchard。 从高层策略看,通过购买Kitematic和SocketPlane,Docker会进一步地推进虚拟化,就像一种时髦的说法“虚拟化所有事物”一样。这两个公司都会帮助Docker扩展OS虚拟化,走向拥有可编程能力的网络环境的系统级虚拟化。这些能力都能够帮助企业走出以前遗留的IT环境,开创更多的可能性。 Docker收购了Koality来进一步强化已有的核心能力。Koality提供可并行的持续集成,部署和相关服务。这使得Docker能够提供更多与之相关的重量级服务。 另一个收购是Orchard(orchardup.com)。这是一家实时提供云上Docker宿主的创业公司。这次收购的目的和Koality是类似的。它加强了Docker的某个已有能力。也带来了两种分支的可能性:基于web的SaaS以及在防火墙后提供产品,这可能也是Koality的收购有助于的领域。 小结 Docker有两大威胁:直接的竞争对以及潜在的更高级的另一种级别虚拟化。另一大威胁是Docker本身被收购,当然这可能意味着企业级功能的大幅增加。在Docker公司和技术演进的道路上,用法和功能一定会持续增长。现在这样的速度在领先的技术创业公司里能够有保证,但是如果作为中型或大型企业的一部分,速度肯定会放缓。 给你的问题 本文总结了我个人对Docker的看法,同时我也很想听到读者可能注意到的有关Docker的另一些信息。你是否关注过网络,其他级别的虚拟化,机器部署,集成或交付,或者该领域的其他部分?在Twitter上告诉我你的想法。当然,如果你对本文观点有不同意见也一定告诉我。 下一条: 你对实时计算了解多少?
|