|
|
云计算的乐高玩具,Docker从根本上改变应用程序开发 |
|
作者 Lucas Carlson 火龙果软件 发布于 2014-9-25 |
|
|
Docker的热度一直持续,每一天,成千上万的开发人员愉快地重构或构建新的基于Docker的App。了解Docker的即时动向已经成为企业或个人在激烈变化的世界中保持竞争力的一个关键因素。
Docker改变了应用程序开发领域的很多事情,已经成为时下最流行的开源项目之一,而且也从根本上改变了人们构建应用程序思维方式。Docker正在改变云的开发实践,允许任何人以整合别人容器的形式利用封装社区的最佳实践,这就像云组件的乐高玩具。
以下为译文:
Docker就像一场森林大火,这个新的Linux容器技术以它自己的方式点燃了周围的一切,我们许多人难以跟上它蔓延的速度。Docker不仅是历史上最流行的开源项目之一,而且也从根本上改变了人们构建应用程序的思维方式。
严格来说,许多基于Docker应用程序背后的理念并不新颖,但Docker却给这些旧理念带来了新的思维角度。Docker鼓励像12-Factor Applications的最佳实践,那么利用Docker到底改变了什么?且看以下四个领域。
微服务架构的崛起
单片云应用开发已经被淘汰了,取而代之的是微服务架构,它将大型应用程序拆解成通过普通REST API通信的更小的、 目的驱动的服务。
在90年代,一个类似的概念被称为接口/基于组件的体系结构,后来,SOA似乎势头很猛,到现在微服务器概念已经成为Docker社区一个标准的主题,它的趋势是将应用程序拆解为解耦的、极简的以及为做好一件事而设计的专门容器。
完全封装的Docker容器能通过为微服务应用程序创建一个高效的分销模式来提供微服务,这改变了云开发实践模式,使得原来在Facebook和Twitter使用的大规模架构,在小开发团队里的应用变得可能。
让dev和ops更加紧密
尽管Puppet、 Chef、 Salt等开创了devops运动,这些工具在运维团队的受欢迎度仍然比开发人员高。
Docker是第一个devops工具,它在开发者和运维者之间同样受欢迎,为什么?因为开发人员可以在容器内部工作,而运维工程师可以并行的在容器外部工作。
当开发团队采用Docker,他们为软件开发生命周期添加了一个新的敏捷层。最大的区别是一致性,基于Docker应用程序能够和开发阶段一样运行在笔记本电脑上。因为Docker封装应用程序的所有状态,你不必担心由于底层操作系统的差异缺陷造成的管理或bug问题。
保证持续集成一致性
通过自动测试你代码的持续集成是一个非常好的方式来减少你最终产品的bug数量,但持续集成有两大缺点。
首先,很难封装所有依赖项。传统CI(持续集成)/ CD(持续交付)技术如Jenkins 或Travis由于binary dependencies 或OS-level 变更,导致代码在开发阶段和dev /test/ QA阶段稍有出入,而Docker封装了整个应用程序的状态,这使得代码运行在dev /test/QA阶段和开发阶段完全相同。
其次,持续集成并不是为微服务架构而构建的。CI是基于一个App位于一个代码库的假设而构建的。然而,Docker最佳实践鼓励微服务架构与各种Docker容器全部松散耦合,于是有了新的CI / CD工具Drone和Shippable,它们是基于Docker容器构建的。这些工具可以让你从多代码库中提取测试多容器的应用程序。
最佳容器的协同
并不是改变你们自己的服务容器如Hadoop、Nginx或MongoDB,Docker鼓励开源社区合作和在Docker Hub上 微调容器。因为Docker可以封装状态,它们让你更灵活的配置软件来保证其最佳运行。
因此,Docker由于允许任何人以整合别人容器的形式利用封装社区的最佳实践,从而改变了云开发实践。这对于云组件来说就像是乐高玩具,最后总会将它们拼在一起。
云计算的乐高玩具
新技术的出现总会伴随着打破现状,Docker正迅速改变云的规则和颠覆云技术领域,它改变了CI / CD、微服务、开源协作、devops等领域,Docker也正在改变应用程序开发生命周期和云工程实践。每一天,成千上万的开发人员愉快地重构或构建新的基于Docker的App。了解Docker已经成为企业或个人在激烈变化的世界中保持竞争力的一个关键因素。
|
|
|
|
|