为什么Docker Vagrant和Ansible 这类工具比以往更受人欢迎,炙手可热呢

jopen 9年前

应用栈的复杂性一直往上增长,越来越复杂。应用栈一直都很复杂,但是从来没有像现在这样:这么多的服务,这么多的工具,这么多高性能计算机可用,这么多的新技术需要尝试,并且用更新、更酷、更简洁的方法来处理这些问题一直迫切需求以至于处于极大的压力之下。有这么多好玩的(日益增长),“玩具盒”已经快要装不下他们了。

如果你不熟悉 stackshare.io ,那就去看一看。这是一个很棒的资源,你从这可以看到很多公司是怎么生成他们应用的。这些方法不只有趣,还相当有意思。

花几分钟来看看那里部分的技术组合,你就会发现其中一些已经组装好的技术组合实在是太吸引人了。这些是我特别喜欢的典范:(深呼吸)EC2 S3 Qubole MongoDB Memecached Redis Django Hadoop nginx Cassandra MySQL Google Analytics SendGrid Route53 Testdroid Varnish Zookeeper。

那里面有web服务器,web应用服务器,缓存代理服务器,挖掘服务,小部分Services-as-aservice,还有六种不同特色、功能的“数据库”(里面既有开源的也有付费的服务,当然,未来需要付费的将会越来越少)

以前用白板笔在白板上写 我们需要六种数据库!!! 是不可想象的,但是现在随着业务需求的增多,基础设备得以迅猛发展,需要六种数据库这种状况也已经出现。一个开发人员选择当前最好的新工具,无论对错,那工具以他的方式进入了产品;那一刻,那个酷炫的新工具就已经变成了一个过时的工具,并且直到你重构产品前你不得不一直用(哈!)或者你离开去干别的,让下一个可怜的倒霉蛋来接着用。

怎么应对呢?

那么开发人员怎么可能处理这种错综复杂的情况呢?超出大家的预料,事实证明这种状况是可以处理的。

机智的下一代在线商业平台,基于位置识别,集赌博、约会以及信息共享于一体,他需要大量不同的服务以及组件。但是罗马不是一天建成的,再宏大的计划在起初都是很简单的,任何一个可缩放、混合的解决方案的单个组件都是起始于某处几行简单的代码。对于大部分项目组来说,某处指的是几个不起眼的开发人员的笔记本电脑和把他们结合在一起的git代码库。

我们谈论云革命,但是基本不再谈论个人电脑革命。结合虚拟化、容器化技术,当今开发人员的电脑完全能配置一个完整、复杂的多系统的环境。多“机器”现在只能是一种表面上的说法,因为这多个、单个“机器”很可能就普通地实例化在一个个人电脑上。

总结:目前安装在单个个人电脑上的复杂的、多系统应用栈的开发环境现在已经很可靠、可复制,而且部分环境或者整个环境的改变很容易在整个项目组里共享,因此每个人都可以快速重新构建相同的环境。例如,使用由Vagrant生成、Ansible编排的多个虚机,ceph-ansible可以部署、测试安装到个人电脑的多节点Ceph集群,一切都只需要一个命令:vagrant up。目前Ceph的开发人员正在使用这个工具。

这种复杂的多节点部署已经变得极为平常,这意味着当前各个机器之间的关系模型已经和管理单个机器上运行的东西一样重要了。

Docker和Vagrant之所以成功,是因为他们采用两种简单方式来表达:“这机器上有这些内容,这是启动的方法”。Ansible之所以成功,是因为他是一种简单的表达方式,“这是这些机器怎么交互,这是启动他们的方法”。综合在一起,他们可以让开发人员用一种方法来定义环境并且可以轻易的重建、部署复杂的多系统环境。

DevOps经常被谈及,它的核心思想就是会话。这可能是对的,但是当所有人都说同一种语言时这个会话就是最成功的。Vagrant,Docker和Ansible已经看到了他们的成功,因为他们让大家说同一种模型、部署的“语言”。

这篇由Greg Dekoenigsberg创作的文章来自于Easy DevOps 栏目。快来分享您的事例、建议,以此来使DevOps变得更加实用——写上经历里的工具、过程、文化,成功以及光彩或者不光彩的失败,通过 osdc-admin@redhat.com 发送给我们把。

原文链接: Why tools like Docker, Vagrant, and Ansible are hotter than ever (翻译:李敏 校对:)