云计算刚刚问世的时候,很多人都认为它的好处仅限于节约成本。但很快大家就开始认识到云计算的强大,以及它对整个IT行业产生的深远影响,在云计算的推动下,IT行业发生了深刻的变革。云计算将基础设施作为一种动态的、可自适应的资源提供给IT企业,一举解决了困扰业界许久的灵活性和响应性问题。随着云计算的兴起,像“cloud-native”和“cattle not pets”之类的术语行话也纷纷出现,它们都表达了一个意思,那就是整个跟云计算相关的IT领域都需要彻底改变现有的意识形态,不能再像过去一样看待基础设施组件,因为在云计算模式下,基础设施已经不再是一个既庞大又昂贵,而且专业得令人难以企及的怪物,它不再需要繁琐的手动维护,也不再难以改换。
如果说云计算导致了IT业的变革,那么容器技术的出现则将这场变革提升了新的高度。作为一种容器技术,Docker已经以迅雷不及掩耳之势,迅速占领了业界的想象空间。容器一开始出现的时候遇到的情况跟云计算差不多,大家都以为容器技术只不过是针对当前存在的封装和部署方面的问题提供了一个更便捷的解决方案而已。但实际上,容器虚拟化技术并不仅仅是一项更好的解决方案,它给我们的思维模式带来的变革要比云计算更为深远。
云计算改变了我们对“机器”的管理模式,但并未从本质上改变我们管理的对象。但容器就不一样了,其优越性远超传统技术。借助容器技术,用户就能真正摆脱对服务器和操作系统的依赖,从而专注于应用及其组件本身。甚至可以这么说,容器技术和软件微服务架构代表了面向对象的组件式应用开发思想。
Docker发展十分迅速,用气势如虹来形容也不为过,业内的关注点很快就从一些基础问题变成了Docker是否可以满足企业级的运营需求。在各种博客上关于Docker的论战也很火爆,有人开博记述利用Docker进行产品开发的相关经验,也有人长篇大论地阐述Docker不能满足企业级开发的种种理由,唇枪舌战不亦乐乎。但双方辩友都忽略了一个问题,那就是技术推广普及的本质到底是什么。这就好比船只一样,虽然船能够在海上航行,但人类还是得想好要怎么驾船航海。容器技术解决了很多问题,但也提出了很多新的问题,这一点和云计算非常相似。人们对容器技术所存的疑问包括了架构、运营、组织和理念等多个方面。
凭借容器技术,很多事情都由不可能变成了可能,用户甚至不需要亲自出马,就能解决这些事务。在意识到容器技术的强大之后,一些人在兴奋之余迫不及待地踏上了将容器技术投入实战的探索之旅,然而这一过程却要麻烦得多。在使用过程中各种问题接踵而至,比如:
·容器怎样实现跨操作系统的通信,又是如何实现跨网络边界通信的?
·容器该怎样监控?
·在实际应用中,如何将容器作为组成部分整合到大型系统中去?此类复合型系统该如何管理?
为了解决上述问题,业界也出现了各种解决方案。比如Packer之类的封装工具就可以在即用即抛型基础设施上实现自动配置。而Kubernetes之类的集群管理系统则可以在原始的容器上实现复制、运行状态监控以及网络管理。作为平台即服务类的产品,Cloud Foundry和OpenShift也在自己的架构模型中采用了容器技术。
虽然这些更高端的系统部分地解决了容器部署初期产生的问题,但它们也暴露出了自身存在的新问题。现在用户要面对的不是如何对容器进行管理和编排,而是如何对容器管理、部署及运维工具链进行管理和组装。
如此一来,用户就陷入了无穷递归的困境。这种恶性循环到何时才能结束,目前笔者还无法给出答案。我们举个例子来说,如果要弄清楚“在Mesos上运行Kubernetes”到底是个什么意思,用户至少要掌握三种以上全新的技术和操作模式,并将其融会贯通到一起,其难度可想而知。
这些都还不算什么,现在更重要的问题是,很多机构已经开始着手将容器技术纳入到其业务架构、组织模式和理念体系之中。然而,这条路只能由用户自己独自走完。在这一过程中,用户要经历不断的变革,以求适应新的形势。这条路到底该怎么走,终点在何方,目前都还未可知,但可以肯定的是,其走向在很大程度上要取决于企业自身的经历、能力和企业文化。
技术的重大革新是一个很复杂的过程。其前景无法预测,也无法简单地加以规划。就像我们开发产品一样,要实施新的技术,也需要同样精简敏捷的技巧。所以我们应该问的不是“Docker是否可以满足企业级的运营需求”,而是“容器技术会给企业的组织架构和业务模式带来怎样的改变,这些变动又是否会造成困扰”?要回答这个问题,只有在实际应用中加以实践,并从反馈信息中吸取经验教训。这是一个过程,而且涵盖的范围非常广泛,早就不是纯技术领域能解决的问题了。
像云计算和容器虚拟化这样的颠覆性技术给整个IT业带来的影响是全方位的。如今计算资源的规模堪称成千上万,用户可以在很短的时间内获得大量资源,也可以快速销毁资源,不像以前,要部署计算资源既费时又费力,往往需要很长的周期,而且规模也小。在这样的形势下,传统的管理手段已经无法满足现有需求。因此,不管是配置管理系统,还是配置与变更管理流程,都需要重新调整。
新的管理工具和管理流程固然必要,但还不够。在新的形势下,技术人员不仅要适应新的思维模式,重新认识系统的概念,还要学习用新的系统解决问题。要将Docker投入企业级应用,光从技术角度提高程序的健壮性和安全性还不够,还需要在人员配备、招聘和培训方面下功夫。决定一个企业是否能够适应变革的关键因素往往并不是新技术本身,而是企业能否吸纳了解该技术潜在意义、并且能够在此基础上开展运营的人才。
笔者相信,容器技术的影响范围终将超越IT领域,容器技术必将成为一种强大的推动力,促使整个企业从根本上发生改变。如何让变革的规模变小、速度变快、发生得更频繁,正是微服务架构和容器技术的价值所在。要想充分发挥这两项技术的作用,IT企业就必须从公司架构和组织形态两方面做出改变。这种连锁式的转变过程又会反过来作用于整个企业,赋予企业更强大的能力,帮助企业更迅速、更敏捷地为社会提供信息服务。
和容器管理系统一样,新的组织结构在解决原有问题的同时,也会衍生出新的问题。打个比方来说,如果企业为了提高自身的灵活性,决定采用Holacracy模式来管理整个公司的话,那么该企业也同样会经历一个转型过程。组织架构的转变也要经历实践、失败和变通的过程,这一点和技术变革是完全一样的。
在讨论Docker或其他容器技术的企业级推广问题时,我们首先要弄清楚一件事情:新技术只不过是一根导火线,随之而来的变革要比新技术本身更为庞杂,而且是一个长期的过程。我们的目光不能只局限在容器技术上,而要从整个社会-技术系统的层面上来分析容器技术的利弊。在应对充满变革和不确定性的未来时,我们必须尽力避免那种非成即败的单向思维模式。从这个意义上来说,容器技术其实跟DevOps、精益生产和其它的企业转型运动没什么不同。