Archive for September, 2009

这不是部署问题,这是设计问题

Sunday, September 13th, 2009

想年轻时,自动化一切并乐此不疲,直到我碰见了Cruise的部署问题。

大家都知道,Cruise采取的是Smart Server + Dummy Agent的架构,每个Server可以对应N个Agent, 开发是一件乐事,然而部署不是。 每次发布,大家都得小心翼翼的

ssh到Server上用apt-get升级,

根据环境下载.exe, osx.zip或者.deb

scp安装包到相应的agent

ssh到每一台agent,升级agent

嘿,有事情不对劲儿了,不是么? 你看什么了? 手工过程,很多邪恶的手工过程,自动化才是王道!

但是,请等一下…..

为什么要去手工下载安装包更新Agent?
因为安装文件是按照不同平台打包的,放在独立的下载站点上,由于Agent可能访问不了外网,它无法自行去下载站点下载安装文件。

既然Cruise Agent知道Cruise Server在哪儿,为什么不把Cruise Agent的安装文件放在Cruise Server上?
你是说我们要把所有的Agent安装包放在Cruise Server上? 这样占太多空间了。

为什么不能只提供一个jar包呢? 它是Java应用,只需要一个jar,不是么?
嗯….??!!

为什么需要脚本重启它?
Agent是一个Java进程,它不能把自己杀死再重启。所以必须有另外的脚本安装更新后再重启。



原来问题的关键不是自动化部署,而是:

1. Agent得不到新版本的安装包。

解决方案: agent.jar放在Server上,用MD5一比就知道有没有更新了

2. Agent无法把自动重启。

解决方案:写一个很薄的bootstrapper层,用它启动/重启agent

搞定,我们作了什么? 我们并没有解决部署问题,我们解决了一个架构问题,或者说是设计问题,而部署问题不治自愈。

我相信这是Kent在Responsive Design Worhshop试图表达的观点之一: 设计者决不能停留在问题的表面,在带上技术专家的帽子激情满怀的解决问题之前,停下来,问5次为什么? 不要被幻象蒙蔽了眼睛。因为

这也许不是配置问题,而是设计问题
这也许不是性能问题,而是设计问题
这也许不是部署问题,而是设计问题
….

.info 和 .com 域名

Monday, September 7th, 2009

米高陈很久以前曾经跟我说过,作为一个专业的blogger一定要有自己的域名,作为一名怕麻烦的实用主义者兼谷粉,我对此相当的不以为然,然而人算不如天算,bl0gger.c0m被结结实实的封住了,之所以用结结实实这个词,是因为每年总有那么几天,不过年,不过节,不Five.4, 不Six.4, 不Ten.1, 不…… 的时候,bl0gger.c0m还是可以访问的,这次彻底的封了,断了我的念想,痛定思痛,自力更生,注册了域名,架了服务器重出江湖。

我的blog架在http://iamhukai.com, 感兴趣的同学也可以用RSS订阅这个网址。

另一个域名http://iamhukai.info被用来架个人名片。效果如下,大家也可以帮着点点,看看javascript效果有没有bug: