写点什么

用户实例: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:372269
用户头像

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

关注

评论

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

避免重复扣款:分布式支付系统的幂等性原理与实践

隐墨星辰

幂等性 支付系统设计与实现 全局幂等 防止重复扣款

One Switch 让你的 Mac 也能拥有控制中心

Rose

One Switch下载 苹果Mac 必备 系统功能快速开关工具

【Mac/win】Topaz Gigapixel AI v6.3.3 绿色便携版 自带激活补丁

Rose

图片放大工具 Topaz Gigapixel AI便携版 Topaz Gigapixel AI教程

解读 $mash 通证 “Fair Launch” 规则,将公平发挥极致?(Staking 玩法)

西柚子

3D模型轻量化

3D建模设计

3D轻量化 三维模型轻量化

通过聚道云软件连接器实现金蝶软件与客如云软件的无缝对接

聚道云软件连接器

案例分享

解读 $mash 通证 “Fair Launch” 规则,将公平发挥极致?(幸运池玩法)

石头财经

【Redis深度专题】「核心技术提升」从源码角度探究Redis服务的内存使用、清理以及逐出等底层实现原理

洛神灬殇

redis 底层原理 清理缓存 原理机制 功能实现 2024年第二篇文章

一款便捷操作移动设备的PC工具

iofomo

android 开发工具 测试工具 PC ios 开发

IBM SPSS Statistics 默认工具栏缺失怎么办?

Rose

好用的软件卸载工具:TrashMe激活最新版

mac大玩家j

Mac软件 卸载工具 软件卸载

3D 建模中的 GLTF、USDZ 和 GLB 3D 文件格式

3D建模设计

3D模型 GLTF glb USDZ

如何提高3D渲染速度

3D建模设计

3D渲染 3D加载 3D模型加载速度 3D模型渲染效率

【Redis技术专区】「原理分析」探讨Redis6.0为何需要启用多线程

洛神灬殇

redis 多线程 原理分析 并发机制 2024年第一篇文章

C 语言指针完全指南:创建、解除引用、指针与数组关系解析

小万哥

程序人生 编程语言 软件工程 C/C++ 后端开发

【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)

洛神灬殇

tomcat 分布式 分布式技术 架构原理 2024年第三篇文章

纹理贴图如何为游戏角色增添质感

3D建模设计

3D渲染 3D材质纹理贴图 3D材质编辑器

5G-A,一根蓄满能量的弹簧

脑极体

5G

解读 $mash 通证 “Fair Launch” 规则(Staking 玩法解读篇)

BlockChain先知

一文读懂 $mash 通证 “Fair Launch” 规则(幸运池玩法解读篇)

西柚子

文字处理软件推荐 Mellel 6 激活中文版

胖墩儿不胖y

Mac软件 文字处理软件

恭喜 Databend 上榜 2023 开源创新榜「优秀开源项目 」

Databend

GLTF编辑器设置3D纺织纹理贴图

3D建模设计

3D渲染 3D材质编辑 3D材质纹理贴图

聚道云软件连接器助力某动漫行业公司实现财务自动化

聚道云软件连接器

案例分享

解读 $mash 通证 “Fair Launch” 规则,将公平发挥极致?(Staking 玩法)

石头财经

一文读懂 $mash 通证 “Fair Launch” 规则(幸运池玩法解读篇)

股市老人

macOS 14 Sonoma(最新MacOS系统) pkg完整安装包 14.2正式版

Rose

支持M1/M2,Axure RP 9授权密钥激活可用 附 Axure RP 9激活教程

Rose

Axure RP 9汉化 原型设计软件 Axure RP 9破解版 Axure RP 9授权

etcd-workbench一款免费好用的ETCD客户端,支持SSH Tunnel、版本对比

北风

Docker etcd tools etcd-client

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