Docker从根本层面改变应用程序开发的方式
发布日期:2016-8-2 17:8:17
Docker容器技术怎样简化应用程序的开发与部署、促进最佳实践并催生新一代以应用为基础的微服务机制。 Docker技术方案的发展势头如同一场燎原烈火。这项新型Linux容器技术在不可阻挡的前进道路上引燃了一切事物,而其进展速度之快让很多从业人员根本无法跟上其迅猛的脚步。Docker不仅仅是有史以来人气最高的开源项目之一,同时也已给人们构建应用程序的方式带来了根本性变革。 从严格意义上讲基于Docker的应用程序背后所暗含的很多解决思路已与最初有所不同,但是Docker确实给这些陈旧的的观念带来了新鲜活力。借助大量云部署实践机制,Docker鼓励技术人员采用像12-Factor应用那样的最初实践手段——这是一套专门用于构建基于PaaS应用程序的方案,目前也已适用于基于Docker应用的开发工作,为阿里云应用开发提供了不少经验。 我们能从Docker引发的时代浪潮中学到些什么?下面请大家随我从四个角度加以思考。 1. 让开发(Dev)与运营(Ops)联系得更为紧密 虽然Puppet、Chef、Salt以及其它先行者已在DevOps的探索中作出了相当的贡献,但是这些工具的主要活动舞台仍然集中在运营团队而非开发者群体当中。 Docker是第一款能在开发人员群体中获得与运营工程师同等认可效果的DevOps工具。会这样的原因因为开发人员可以在容器机制内部工作,而运营工程师则能在容器外部以并行方向处理自己的任务。 当开发团队采纳Docker的同时,他们相当于在软件开发生命周期当中添加了新的敏捷性层。容器技术最大的突破就在于其一致性。基于Docker的应用程序能够在笔记本电脑和生产环境下获得同样的运行效果。因为Docker将与应用程序相关的所有状态都封闭了起来,所以大家根本用不着担心底层操作系统的架构差异会给应用程序的运行依赖性带来影响、或是产生新的漏洞。 2. 微服务架构的崛起 大规模整体性云应用程序开发已步入绝路。现在它开始被微服务架构所取代,特色在于将大型应用程序——及其全部内置功能——拆分成更小的、目的驱动型服务,并通过通用REST API实现彼此间的通信。 早在上世纪九十年代就曾出现过名为基于接口/组件架构的类似概念。时至今日,SOA(即面向服务架构)似乎已获得了相当良好的发展势头。目前微服务概念已在Docker社区当中成为标准性模因,其主流趋势在于将应用程序拆分成解耦、极简且专门针对容器机制的设计方案,并且只专注于实现一项任务。 完全密闭的Docker容器机制能为微服务应用程序创建出高效的分布式模型,从而顺利实现微服务概念的现实转化。这彻底改变了长久以来的云开发实践思路,能将像Facebook及Twitter那样的超大规模架构加以拆分并提供给规模更小的多个开发团队。 3. 让各类最佳容器机制实现协作 Docker并不主张大家将自己的服务容器按照Hadoop、Nginx或MongoDB这样的现有方案进行调整,而是鼓励我们通过开源社区实现协作、并且凭借Docker Hub这套公共库进行容器改进,从而让每个人都能够用到最出色的容器设计成果。因为Docker容器能将应用状态封装于其中,所以大家完全能够以更灵活的方式对软件加以配置、保证其拥有最佳运行效果。 有鉴于此,Docker凭借着这种允许每个人利用现成最佳实践方案根据具体需求任意组合及对接的能力彻底改变传统云开发机制。这有点像是将云组件当成乐高积木,并最长按照一定的标准将它们组合起来。 4. 保障持续集成的一致性 持续集成机制能够自动对代码进行测试,并且借此成为尽可能降低最终产品中漏洞数量的一大理想途径。但持续集成仍然存在着两大弊端。 (1)持续集成机制很难将所有依赖性加以封装。以Jenkins以及Travis为代表的传统持续集成/持续交付技术通过建立源代码库的方式分段实现应用程序开发。尽管这种处理方式对于很多应用程序来说并不是问题,但是二进制依赖性或者操作系统层面的变化仍然难以避免,这就让代码在生产环境中的实际运行效果同开发/测试/质量保证阶段有所不同。相比之下,Docker因为可将应用程序的整体状态加以封装,所以能够保证代码在生产环境中拥有与开发/测试/质量保证阶段相一致的实际效果。 (2)持续集成并非专为微服务架构所构建。持续集成的设计思路其实是假设将一款应用程序锁定在单一代码库当中。但Docker最佳实践能够提供大量彼此间松散耦合的Docker容器,而这对于微服务架构来说可谓最佳拍档。由此也衍生出了一系列新一代持续集成/持续交付工具,以Drone和Shippable为代表的这些新型解决方案都在开发之初就将Docker容器机制作为其立足根基。具体而言,这些工具允许大家对涉及多套代码库的多容器应用程序加以测试。 5、云计算领域的乐高积木 每一项新技术的出现都可能会对现有局面带来颠覆性的影响。目前而言,云一直由按需供应、API驱动虚拟机以及围绕虚拟机建立服务等要素所支撑。由此带来的弊端在于,所有针对现有机制打造的工具都会受到虚拟机局限性的严重束缚。 Docker正迅速改变云计算领域的运作规则,并且彻底颠覆云技术的发展前景。从持续集成/持续交付到微服务、开源协作乃至DevOps,Docker一路走来已给应用程序开发生命周期以及云工程技术实践带来了巨大变革。每一天都有成千上万名新的开发者兴高采烈地参与到原有应用重构或全新Docker应用开发的相关工作中来。而了解Docker之火能够快速呈现燎原之势的理由,正是在这个不断变化的技术世界中保持竞争优势的关键所在。 上一条: 破解DevOps的五个迷思 下一条: Docker解决了什么问题?
|