【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

用户实例:DubDubDeploy

  • 2013-04-22
  • 本文字数:2786 字

    阅读完需:约 9 分钟

编辑按:最初 DonteOrmsby 联系我们的时候,仅仅是写了一封友好的信,说他发现一个非常棒的工具能简化 ASP.Net 的网站部署,并认为我们的读者可能感兴趣。经过进一步交谈,我们认为介绍 DubDub 部署最好的办法就是让 Donte 来给读者讲述他亲身所经历的故事。

如果你知道某个产品对你非常有帮助而且愿意分享你的经验,请务必通知我们。不论是正式还是非正式的用户实例,我们都欢迎。 JonathanAllen ,NetQueue,主编。

我们的故事始于 2010 年下半年,本地一家金融机构的软件开发部门。作为项目组的软件工程师,我当时不仅负责我们各个应用的编码,同时也管理应用服务器和部署网站。我们当时的系统环境还很不成熟,因此很难通过源代码控制来追踪所有的应用,以及部署到不同的服务器上。

我们拥有相当多的互联网应用,从内部应用,到公开网页,再到面向客户的门户。而理所当然,每个应用又有多个环境和服务器,通常来说生产、测试和开发都会有一到两个环境,有时多些,有时少些。应用部署是我们的主要困难之一,除了如此多的环境,同时还要处理基础设施问题。

每个开发人员都有 9 个登录窗口–4 个不同的域帐户(涵盖 3 个域),和 5 个独立服务器的非域帐户。部署到服务器意味着使用一个账户登录到编译服务器,然后用另一个账户登录到目的服务器。永久映射磁盘在当时并不可行,因为有太多事情需要处理–几十个应用程序位于不同位置,其中许多明显没有基于服务器名或目录。

还有并不是每一个人都愿意去记住这数十个应用的位置,因而这些任务就落到了我们几个被选中的人身上。由于采用敏捷模式,代码总是快速更新,并被部署到不同的环境中,即便是生产环境也经常被更新。每天我都得不断放下手里的工作去部署某一应用,这意味着我要记住这个应用的所在地,登录到 UNC 共享或者映射新磁盘,然后手动备份文件,手动部署新代码。而我发现当我不在办公室时,大家都害怕部署应用,或是记不住密码,又或者根本不知道他们应该往哪里放文件或取文件,总之,完不成部署这件事。

在不间断打扰,延迟部署代码到测试环境上,以及人为将代码发布到错误路径所带来的生产力的丢失之间,我们每星期都浪费了好几十个小时,这很容易就造成每年数百个小时宝贵开发时间的浪费。

在认识到问题后,我的第一个尝试是建立一系列批处理文件,它们可以自动根据给定的应用和环境映射磁盘。但这仍意味着要记住 9 个密码,并保证所有用户账户状态良好(因为某些原因,在我们这不总是成立)。这个方案帮了点小忙,但是我们迫切需要一个更持久的解决方案,一个让所有人都放心使用的方案。

后来我们就发现了当时仍处于预览版的 DubDubDeploy。这个产品保证在网间通过 HTTP 而不是以文件系统的方式来部署文件。这也意味着我们的所有网络访问和用户权限问题都不复存在了。我们当时就决定一试。哪怕我们只能节省出一小部分浪费掉的时间和精力,其免费性质也让它物超所值。

DubDubDeploy 只需要在编译以及目标 web 服务器上做一个小型安装,配置也非常简单。我们只需要定义应用可以拷贝到哪里,及哪个用户可以运行它即可。在完成配置之后,备份和部署就从痛苦的多步流程转变成一次轻松点击。

并且它本身还包括了一个 Nant 脚本生成器以及 CruiseControl.NET 项目配置生成器。我们当时已经在使用这两个产品了,但生成的样本给我们一些启示以如何提高我们脚本的质量。对于任一正式的项目都必须要有一个坚固的编译流程。任何能帮助提高编译策略的东西,我都欢迎。

算上所有的应用及环境,我们项目组要处理 40 多个常用应用部署位置。现在 DubDubDeploy 把一切都按应用程序和相应环境记录起来,而不用每次都去回忆或查找。如果你想部署内部应用到 QA,只要打开面板,下拉到 Intranet,点击 QA 服务器下的部署按钮。几秒钟之后,你的应用就部署完成,你就可以继续你的工作了。正因它如此简单,现在每个人都能负责自己的部署,而无须依赖别人。

使用过程中我们还发现了其他的优点。自从部署变成服务器到服务器,以前从家使用 VPN 部署代码所要忍受痛苦而漫长的过程,现在变成了和在办公室一样简单。DubDubDeploy 整合了 CruiseControl.NET,我们可以在部署之前实时监视编译状态。在编译完成时,应用状态将变成绿色,这就说明我们可以安全部署了。

就在一瞬间发生如此之大的变化,现在人人都能部署了。无需任何工作,甚至不需要知道文件实际位置。发布一个应用的耗时从几分钟缩短到 10 秒以内。而在 DubDubDeploy 中增加一个分支也只需几分钟,甚至比手动部署一个应用还快。我们知道了我们在往正确的轨道上发展。

不幸的是,我们不允许在生产环境上运用 DubDubDeploy。它必须要通过 HTTP 和目标服务器建立一个新的通信链路,但我们公司不允许在服务器上这样操作。即使这样,我们还是节省出大量浪费在开发和测试上的时间,而这也恰恰是我们浪费的绝大部分时间。

现在,我们不再浪费时间处理许可和服务器相关问题,我们有了更多从事实际的开发工作的时间。随着生产力的飙升,开发者的心情也有了改善。而作为一个开发者,我总是倾向于编码或创造一些酷的新玩意,而非重复性工作或是维护。拥有更多编写代码的机会对每个人都是一种胜利。

由于这个产品当时还是预览版,功能仍就比较少。我们向他们提出增加一些新功能,其中有一些很快就被实现了。现在 DubDubDeploy 可以快速找出源目录和目标目录间的不同,并且只更新有变化的文件,把部署时间从 10 秒减少到 2 秒。同时我们也需要让创建用户更为简单:用户无须自己去设立安全限制,只须配置一个 AD 组,也不再为用户安全而费心。

尽管该产品还很新,其 UI 也比较粗糙,但它却作出了很大的帮助。我认为当它拥有更多新特性后,它将会更有帮助。除了更好的用户体验,DubDubDeploy 团队也正在策划新的功能,比如,脚本化部署,FTP 部署,通过集成源代码控制来部署分支的代码,和 IIS 的整合。该团队对于意见和建议的反应非常灵敏,针对 DubDubDeploy,我们已就发现的更多潜在用途,与开发团队进行了沟通,我们希望能够在下一个主要版本中看到这些改进。

在使用 DubDubDeploy 来管理我们的部署几个月后,我们知道我们已经不可能回头。手动部署,即使是在简单的环境,也已经不合潮流。

关于作者

我叫Donte Ormsby,毕业于亚利桑那大学,主修经典这门学科。对于那些不熟悉该课程的学习的人,该专业是一门从古埃及,罗马和希腊的建筑,文学,艺术立场来研究他们文化的学科。

当时我完全不知道我的学业将会对我目前职业造成如此之大的影响。学习经典其本质是研究人的本性。而 Web 开发,其核心是研究人的行为。创建一个网站并不只是创造好看的界面和代码。

作为一个 Web 开发者,如果你的任务是为企业和非营利组织以互联网为媒介来创造更多的机会,那你应该更多地关注你的创造将会给最终用户带来怎么样的效果。我个人来说,目标很简单,设计简单漂亮的网站,最终把消费者带到客户的门前。

查看英文原文: A User’s Story: DubDubDeploy

2013-04-22 09:372083
用户头像

发布了 39 篇内容, 共 12.7 次阅读, 收获喜欢 2 次。

关注

评论

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

模块8(消息队列存储消息数据的mysql表格)

Geek_701557

React 学习记录2📝

程序员海军

React 7月月更

2200字详细讲解计算机网络的“流量管理员”:QoS 服务质量

wljslmz

流量控制 QoS 网络技术 7月月更

为啥国内大厂都把云计算当成香饽饽,这个万亿市场你真的了解吗

雨果

DaaS数据即服务

缓存一致性与内存屏障

蝉沐风

volatile 内存屏障 缓存一致性 MESI

一骑入秦川——浅聊Beego AutoRouter是如何工作

Regan Yue

Go 源码刨析 Go web 签约计划第三季 Beego

Mybatis中LRU缓存实现

ue4

mybatis LRU mybatis源码

Okaleido Tiger 7.27日登录Binance NFT,首轮已获不俗成绩

EOSdreamer111

小程序怎样助力智能家居生态新模式

Geek_99967b

物联网

Okaleido Tiger 7.27日登录Binance NFT,首轮已获不俗成绩

BlockChain先知

Plato Farm通过LaaS协议Elephant Swap,为社区用户带来全新体验

股市老人

音乐体验天花板!14个网易云音乐的情感化设计细节

张姣发

创新 交互设计 网易云音乐

Prometheus 运维工具 Promtool (三)Debug 功能

耳东@Erdong

Prometheus 7月月更 Promtool

数据资产管理的概念

奔向架构师

数据资产 7月月更

Plato Farm全新玩法,套利ePLATO稳获超高收益

EOSdreamer111

次轮Okaleido Tiger即将登录Binance NFT,引发社区热议

鳄鱼视界

客户案例 | 关注老年用户体验,银行APP适老化改造要避虚就实

易观分析

用户体验 银行app 老龄化

Qt | 关于Qt Creator打开项目编译不过的问题

YOLO.

qt 7月月更

Plato Farm有望通过Elephant Swap,进一步向外拓展生态

鳄鱼视界

次轮Okaleido Tiger即将登录Binance NFT,引发社区热议

股市老人

C# 中的转译字符'/b'

陈言必行

7月月更

聊聊自动化测试的度量指标

老张

自动化测试 质量度量

【函数式编程实战】(八) 如何将你的代码重构

小明Java问道之路

设计模式 函数式编程 7月月更 签约计划第三季 Lambda表达式

【函数式编程实战】(九) Optional实战大全

小明Java问道之路

java8 Optional Stream API 7月月更 签约计划第三季

传统车企数字化转型如何打通最后一公里?

雨果

车联网 DaaS数据即服务

C# 窗体应用常用基础控件讲解(适合萌新)

IC00

C# 7月月更

提前批到底影不影响正式批?

KEY.L

7月月更

关于 StatefulWidget,你不得不知道的原理和要点!

岛上码农

flutter ios 前端 安卓开发 签约计划第三季

Bootstrap的导航元素和Well详解【前端Bootstrap框架】

恒山其若陋兮

7月月更

平成千字文(へいせいせんじもん)    (平成12年9月10日 石渡 明 作)  宇宙広遠 銀河永久 日月運行 不乱無休 地球公転 季節変移 黄道星座 太陽年周 故郷群島 南熱北冷 海洋温暖 気候順良 青空飛雲 諸野深緑 湖泉静息 谷川清流 春桜一面 新芽

贾献华

7月月更

【函数式编程实战】(七) Collection在Java8和9中的增强

小明Java问道之路

Lambda collection Stream API 7月月更 签约计划第三季

用户实例:DubDubDeploy_DevOps & 平台工程_Donte Ormsby_InfoQ精选文章