云计算的乐高积木Docker如何重构应用程序开发

Docker的发展势态如同森林大火,势不可挡。这项新型的Linux容器技术引燃了一路上的一切东西,面对其迅猛发展的势头,我们许多人还没有回过神来。Docker不仅是有史以来最受欢迎的开源项目之一,它还从根本上改变了人们考虑构建应用程序的方式。

基于Docker的应用程序背后的许多理念从严格意义上讲并非很新颖,但Docker给那些旧观念带来了全新视角。借助许多云开发实践,Docker促进了最佳实践,比如12-Factor应用程序。这些最佳实践当初是为了构建基于PaaS的应用程序而开发的,如今普遍适用于基于Docker的应用程序。

我们能从Docker热潮中学到什么?不妨看一看这四个方面。

1.微服务架构大行其道

整体式云应用程序的程序开发已玩完了。取而代之的是微服务架构,这种架构可以将大型应用程序及所有内置功能分解为更小的、目的导向的服务,而这些服务又可以借助通用的REST API与对方进行联系。

上世纪90年代,有一种类似的概念,名为基于接口/组件的架构。而最近,面向服务架构(SOA)似乎迎来了一些发展势头。如今,微服务概念已成为Docker社区的一个标准文化基因,流行的趋势是将应用程序分解为分离的、极简的、专门的容器,这些容器专注于只做好一件事。

完全封装的Docker容器能够为微服务应用程序构建一种高效的分布式模型,从而支持微服务。这让规模较小的开发团队有机会得以使用较大规模的架构(比如Facebook和推特使用的那种架构),因而改变了云开发实践。

2.让开发和运营的关系更紧密

尽管Puppet、Chef、Salt及其他工具引领了开发运营(DevOps)潮流,但这些工具在运营团队当中比在开发人员当中更受欢迎。

Docker是第一种在开发人员当中与在运营工程师当中一样受欢迎的开发运营工具。原因何在?因为开发人员可以在容器里面工作,而同时运营工程师可以在容器外面工作。

开发团队采用Docker时,他们为软件开发生命周期增添了一层新的敏捷性。一大区别在于一致性。基于Docker的应用程序在笔记本电脑上运行与在生产环境中运行完全一模一样。由于Docker围绕应用程序封装整个状态,你没必要因底层操作系统存在的架构差异而操心失去依赖项或软件缺陷。

3.为持续集成确保一致性

持续集成能够实现代码测试自动化,因而一向是减少成品中软件缺陷数量的好方法。不过持续集成存在两大弊端。

首先,很难封装所有依赖项。Jenkins和Travis等传统的持续集成/持续交付(CI/CD)技术通过获取源代码库,构建应用程序组件。虽然这种方式相对适用于许多应用程序,不过二进制依赖项或操作系统层面的变化会让代码在生产环境中运行起来与在开发/测试/质量保证环境中运行起来略有不同。由于 Docker将应用程序的整个状态封装起来,更能确保代码在开发/测试/质量保证环境中与在生产环境中运行起来一模一样。

其次,持续集成并不是为微服务架构构建的。持续集成的设计思路其实假设应用程序位于一个代码库当中。然而,Docker最佳实践鼓励各个Docker容器都松散耦合的微服务架构。这带来了新一代的持续集成/持续交付工具,比如Drone和Shippable,它们都是从头设计的,设计当初就着眼于Docker容器。这些工具让你可以开始测试从多个代码库获取的多容器应用程序。

4.确保最佳容器彼此协作

Docker 并不调整你自己的服务窗口,比如Hadoop、Nginx或MongoDB,而是鼓励开源社区在Docker Hub中相互协作、微调容器,这个公共代码库让每个人都可以使用同类中最佳容器。由于Docker容器能够封装状态,它们让你可以更灵活地配置运行起来最佳的软件。

因此,Docker让任何人都可以充分利用封装方面的最佳实践(具体表现为结合别人的容器),从而改变了云开发实践。这就像云组件有一套乐高积木,它们终于有了组合起来的标准。

云计算领域的乐高积木

时常出现这一幕:一项新技术出现后,颠覆了现状。就在不久前,云计算领域还以按需提供、API驱动的虚拟机以及围绕虚拟机建立的服务为主。这带来了一系列旨在克服虚拟机局限性的工具。

Docker 在迅速改变云计算领域的规则,彻底颠覆云技术格局。Docker为持续集成/持续交付、微服务、开源协作和开发运营铺平了道路,不但改变了应用程序开发生命周期,还改变了云工程技术实践。每天,成千上万新的开发人员在开心地重新设计或构建基于Docker的新应用程序。想在不断变化的世界保持竞争力,关键是要明白Docker热潮会涌向何方。

原文发布于微信公众号 - 云计算D1net(D1Net02)

原文发表时间:2015-04-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云加头条

KVM开源贡献排名重磅发布,腾讯云成全球唯一上榜公有云厂商

10月25-27日,在布拉格举行的 KVM Forum 大会上,来自IBM的 KVM 主要维护者Christian Borntraeger 向大会汇报了当前 K...

4820
来自专栏程序员互动联盟

写代码过程中最忌讳的是什么?

代码只是编程思想的一种具体展示形式,程序员写代码有几个禁忌,不能写没有中心思想的代码,很多程序员写代码都是凭着感觉走,写到哪算哪,特别是初学者写代码的时候,不讲...

1071
来自专栏魏艾斯博客www.vpsss.net

Vultr 取消支付宝付款方式

5502
来自专栏Rainbond开源「容器云平台」

Docker实战:一部奋斗史

1373
来自专栏CSDN技术头条

Docker:2016年将带来什么变化

已经火爆2年的Docker,其快速部署的特性,受到开发者的热烈欢迎,在测试、开发环境中被广泛使用,但却迟迟无法让企业放心在生产环境中大规模使用。 Docker过...

22610
来自专栏织云平台团队的专栏

织云Docker功能开启体验

34712
来自专栏Crossin的编程教室

今天是星期天,好happy

今天星期天,没有新课程,休息一下。 其实也没有休息到,跑去给某学妹开了小灶,一对一辅导android开发,各位同学不要羡慕哦。 说几个大家反馈到的问题: 1.你...

3686
来自专栏大数据文摘

面对20亿行代码,Google如何管理?

2118
来自专栏云计算D1net

管理容器和混合IT:云初创企业更在行

随着容器、开源和混合云逐渐成为主流,对管理这些技术工具的需求量也变得很大。一些新的公司应运而生。 十年前,即使是最狂热的云技术拥护者也无法预料到它如此快速的崛起...

3309
来自专栏腾讯开源的专栏

Github 开源项目贡献指南:项目维护者的最佳实践

维护一个项目需要的不仅仅是写代码的能力。有些时候会有一个你意想不到的的事情要应付,但是这对一个项目的成长也很重要(相对于代码来说),我们收集了一些小技巧来让你的...

3181

扫码关注云+社区

领取腾讯云代金券