how-to-choose-third-part-tool
Fork me on GitHub

All Tags:

mindset

devops

book

ci

communication

jenkins

自媒体

hometown

tools

tool

cloud

 

如何选择第三方工具构建系统

俗话说,他山之石,可以攻玉.当我们构建一个软件系统的时候,我们会面对很多选择: 开发工具的选择,源代码管理工具的选择,数据服务器的选择……

前段时间我为公司的Optimum项目做持续集成方面的研究,因为项目本身是基于.NET平台下的,所以我开始选择的是CC.NET,这是一个开源的第三方工具,他可以很好的支持我们这个项目的源代码管理工具StarTeam。构建这个系统开销比较大的地方就是配置,他是纯手工配置XML,需要先了解他的XML规则。整个系统完成持续集成工作大概花费了2天时间。 后来在项目的PMR会议上,我们公开评审了我们这套CC.NET持续集成的流程,程序员们一致表示这将大大方便大家,提高工作效率。有过多年项目经验的PMP提出另外一个java阵营的工具Hudson,据说也是构建持续集成系统的工具。希望我有机会研究对比下,看到底哪个系统更加适合我们这个系统。 会议之后,我在网络上进行了搜索对比, 一些Java阵营的朋友都非常支持Hudson,还有人对Hudson和CC.NET进行了对比。其中有两条非常重要的,就是Hudson支持插件和友好的界面配置。当时我就心花怒放,因为CC.NET在初次配置的时候是个很大的开销。于是我就着手打造我们这个系统的Hudson版的持续集成系统,很快,如你所料,仅仅用了2个小时我们就搭建好了这个系统。我立即全组通告了这个消息。最后我们这个项目决定转用Hudson作为我们的CI工具。

但是,好景不长,很快我们遇到了Hudson下的一些问题:对StarTeam的支持性不够好,遇到问题后,我们去看Husdon的源代码没有直接看.net程序顺手。诸如此类的问题一个接着一个,最后我们不得不重新回到CC.NET下。

通过这件事情,我学会了软件开发中重要的一课。选择工具的时候一定要选择那些适合你特定项目的,可以被信任,可以被维护的工具。引申来说,如果一个工具对你项目至关重要,你一定要选择一个可控的第三方工具。假定你在写个游戏程序,你的卖点是图形处理能力,对你最重要的就是3D库,这是你的卖点,如果你为了节约成本,加快开发进程,实现软件复用而选择第三方的3D库,你也要选择开源的库,否则当程序崩溃的时候,你就无计可施了。因为你不知道问题出在哪里,因为你没有源代码,你不能方便的调试诊断问题的根源。所以,最关键的就是,要使用更原始的工具或者开源库来构建你系统中的核心基础。