QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

Capistrano 的新竞争对手:Vlad the Deployer

  • 2007-08-22
  • 本文字数:1845 字

    阅读完需:约 6 分钟

Capistrano 是用来发布 Ruby 应用特别是 Rails 应用的常用部署工具,如今它面临 Ruby Hit Squad 开发的 Vlad the Deployer 的挑战。开发组的人员包括 Ryan Davis、Eric Hodel、Wilson Bilkovich 和 Shaners Becker ;在经过 4 天的编程之后(InfoQ 提供对 Ryan Davis 的专访),他们就发布了这个工具。很多原因推动了他们开发 Vlad,其中之一是由于 Capistrano 对其它软件的高度依赖。

我们与 Ruby Hit Squad 的部分成员探讨了他们开发 Vlad the Deployer 的动机。内容见下文,第一个问题是:Vlad 是否比 Capistrano 更易于使用。

Eric Hodel(下面简称 EH):复杂性更低、更容易理解和维护,就是这么简单。Wilson Bilkovich(下面简称 WB):不只是代码,而且在用户体验上也更加简洁。我曾遇到过这样的情况:在项目收尾的时候,我很难将 Capistrano 的配置文件直接推给客户。从经验的角度来看,Vlad 就没有那么复杂。我们频繁的使用 flog 进行检查,并选择使用得分最低的代码。

EH:同时我们内置最常用的部署操作,来让大部分用户可以用很简单的方式来入手并开始运行应用。在最近一次的 Seattle Ruby Brigade 会议中,Geoff Grosenbch 本来打算用整晚的时间来学习如何使用 Vlad,实际上他用 5 分钟就完成了。

Ryan Davis(下面简称 RD):没错,我们试着提供与 Capistrano 同样多的功能,但是复杂程度更小:

Flog(1.1)得分:

net-ssh-1.1.2.gem : 7528.3

needle-1.3.0.gem : 1685.4
capistrano-2.0.0.gem: 5609.2(几乎是 Vlad 的六倍)
TOTAL = 14822.9(比 vlad 加依赖关系的三倍还多) vs.

open4-0.9.6.gem : 742.0(而且我们真的只用了一个方法)

rake-0.7.3.gem : 3208.9(其中包括 contrib)
vlad-1.0.0.gem : 945.5
TOTAL = 4896.4

说明: Flog 是一个用来检查 Ruby 代码优劣程度的工具,得分越高说明代码问题越多。该工具使用了 Ryan Davis 的 ParseTree 库(通过 ParseTree 的 AST 表格)来分析 Ruby 代码。它对代码质量的多个方面进行检查,比如:对define_methodeval的使用,对method_added之类的钩子(hook)的使用,对开放类的使用,以及其他一些会增加潜在复杂度的概念的使用等。

Ruby Hit Squad 接下来提供了更多开发 Vlad 的原因:

RD:其他一些原因:
1)要理解 Capistrano、Net::SSH 和 needle 对我来说太难了。最近我对这些“聪明”的代码有点过敏。
2)要想把 Net::SSH 作为一个实际的 SSH 客户端来使用,问题太多了。
3)我需要花几个小时的时间来诊断 Net::SSH 的问题,但是得到的回应却是“(耸了耸肩)SSH 有毛病”。
4)最后一个原因,应用的部署经常是在最后关头,并且是在压力下进行的,这时你肯定不希望面临太多部署上的问题。它应该就是可以工作的。EH:Capistrano 正常运行需要依赖很多软件,并且与它们仅紧紧的耦合在一起。我们需要的则是一样简单易懂的东西,于是我们选择基于 rake 来开发,因为它更为人所熟知,并且更容易理解。

WB:如果我对 Capistrano 的意见仅仅是一些 bug 的话,我会提交相关的补丁。但是我更希望发布工具的名字能够容纳在 T 恤上面。

当被问到相对 Capistrano,他们是否更加推荐 Vlad 时,他们回答道:

RD:绝对的。我们的定位是:用 20% 的代码实现 Capistrano 80% 的功能,所以将目标放在 Capistrano 80% 的用户上面是很合理的。那些真正的内行用户们可能希望使用 Capistrano 全部功能,因此不想使用其他软件。WB:绝对的。我们希望接纳 Capistrano 的绝大部分用户,以及那些不知道如何让 Capistrano 开始运转的人们。

EH:我们还希望 Vlad 不只是用来部署 Web 站点。在很快将要发布的 1.1 版本中,用户可以略过缺省的 Vlad 建议,而是将其用作通用的系统管理工具。

当被问到 Capistrano 和 Vlad 项目是否有可能进行合作或是发生互动时,Ruby Hit Squad 看起来非常积极:

WB:我希望看到一个能够执行不同任务的、基于特定系统的命令库,这两个工具都会用到类似的东西。在搞定一些相似的细节之后,我们可以共享一个支持 SCM 的程序库。RD:当然有可能啦……不过我现在不愿意做太多的预测。但是我同意 Wilson 的观点,存在一个能够让我们彼此都受益的合作空间。

现在,你对 Capistrano 的经验是什么呢?

查看英文原文: Capistrano gets competition: Vlad the Deployer - - - - - -

译者简介:郑柯,目前就职于一家医药电子商务公司,从事医用耗材电子商务平台的开发与维护。有志于在中国的软件开发业界推广 Agile 的理念和方法论,笃信以人为本,关注 Ruby,关注敏捷,关注人。参与 InfoQ 中文站内容建设,请邮件至 china-editorial[at]infoq.com

2007-08-22 03:301369
用户头像

发布了 479 篇内容, 共 165.4 次阅读, 收获喜欢 52 次。

关注

评论

发布
暂无评论
发现更多内容

react源码解析19.手写迷你版react

全栈潇晨

react.js

Linux之mv命令

入门小站

Linux

“布”道AI的正确打开方式

脑极体

用VSCode刷LeetCode

IT蜗壳-Tango

6月日更

百度与张江集团达成战略合作,AI助推上海城市数字化转型

百度大脑

人工智能

采访华为服务器OS首席架构师熊伟:开源背后的故事(采访提纲)

xcbeyond

采访提纲 6月日更

作为新时代的Java工程师,你需要具备什么能力?

卢卡多多

Java 能力提升 6月日更 六月

一文带你了解什么是HTTP协议

网络安全学海

网络安全 安全 信息安全 HTTP 渗透测试

Java线程状态与状态间的切换

wzh

Java 线程 JVM 操作系统 并发

你会选做通才还是专才?

石云升

职场经验 6月日更

详解 SQL 中的单表查询

悟空聊架构

sql 6月日更 单表查询 T-SQL

[译] R8 优化:方法的 Outlining 优化

Antway

6月日更

在线URLEncode编码,URLDecode解码工具

入门小站

工具

只把华为“桑田岛时间”看做一档对话节目?格局小了!

脑极体

全球首个开源图像识别系统上线了!人脸、商品、车辆识别一网打尽!

百度大脑

人脸识别 图像识别

zookeeper原生api操作

赵镇

zookeeper

网络攻防学习笔记 Day53

穿过生命散发芬芳

网络攻防 6月日更

协同过滤推荐算法(十六)

Databri_AI

推荐算法

模块7作业

Geek_2e7dd7

架构训练营

Kubernetes手记(20)- HeapSter监控

雪雷

k8s 6月日更

“云智技术论坛”即将召开,百度智能云带来端边云全面智能化平台

百度大脑

人工智能 物联网 云智一体

【MindSpore有奖活动】资讯内容宝藏多,编译安装试一波!

Geek_6cdeb6

Java内存模型

wzh

Java JVM happens-before 并发 Java内存模型

Jenkins 如何与 Kubernetes 集群的 Tekton Pipeline 交互?

张晓辉

Kubernetes 云原生 jenkins Tekton CI/CD

微信小程序开发(一)

空城机

微信小程序 大前端 6月日更

【21-16】PowerShell循环

耳东@Erdong

PowerShell 6月日更

网络抓包实战06——灵异事件的始作俑者:Reset数据包

青春不可负,生活不可欺

定点数与浮点数表示

若尘

浮点数 计算机组成原理 6月日更

Java8 的时间库(2):Date 与 LocalDate 或 LocalDateTime 互相转换

看山

Java 6月日更

分布式锁相关探索

常清静

redis 分布式锁 zookeeper分布式锁 redisson 分布式锁

知乎上线1小时,5w浏览量被下架的JVM全解笔记,内容太强大

Java架构师迁哥

Capistrano的新竞争对手:Vlad the Deployer_Ruby_Werner Schuster_InfoQ精选文章