云计算的乐高玩具,Docker从根本上改变应用程序开发

jopen 10年前

英文原文:4 ways Docker fundamentally changes application development 

  Docker 改变了应用程序开发领域的很多事情,已经成为时下最流行的开源项目之一,而且也从根本上改变了人们构建应用程序思维方式。Docker 正在改变云的开发实践,允许任何人以整合别人容器的形式利用封装社区的最佳实践,这就像云组件的乐高玩具。

  以下为译文:

  Docker 就像一场森林大火,这个新的 Linux 容器技术以它自己的方式点燃了周围的一切,我们许多人难以跟上它蔓延的速度。Docker 不仅是历史上最流行的开源项目之一,而且也从根本上改变了人们构建应用程序的思维方式。

  严格来说,许多基于 Docker 应用程序背后的理念并不新颖,但 Docker 却给这些旧理念带来了新的思维角度。Docker 鼓励像 12-Factor Applications 的最佳实践,那么利用 Docker 到底改变了什么?且看以下四个领域。

  微服务架构的崛起

  单片云应用开发已经被淘汰了,取而代之的是微服务架构,它将大型应用程序拆解成通过普通 REST API 通信的更小的、 目的驱动的服务。

  在 90 年代,一个类似的概念被称为接口/基于组件的体系结构,后来,SOA 似乎势头很猛,到现在微服务器概念已经成为 Docker 社区一个标准的主题,它的趋势是将应用程序拆解为解耦的、极简的以及为做好一件事而设计的专门容器。

  完全封装的 Docker 容器能通过为微服务应用程序创建一个高效的分销模式来提供微服务,这改变了云开发实践模式,使得原来在 非死book 和 推ter 使用的大规模架构,在小开发团队里的应用变得可能。

  让 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 已经成为企业或个人在激烈变化的世界中保持竞争力的一个关键因素。

来自: CSDN