原文地址: E_Deploy部署流程简述 (http://blog.thislinux.com/blog/11.html)
部署这东西,本身就不是什么高大上的东西,每每在微博看到其他公司对于部署的一些高大上的阐述和定义,我就“羡慕”得掉头走,实在没必要把这东西的逼格抬得那么高。在我的理解中,部署就是对流程的再定义和规范化,仅此而已,有一定逻辑能力的人做这个事情都一定会胜任。
每个产品或项目的部署在流程上基本都是可以互通的,唯一需要考虑的是每个项目在启、停、热更等层面的差异即可。针对skynet的特质,现在所定义的部署流程大致如下:
[A代码库更新] ----> [B配置模版更新] ----> [C控制文件更新] ----> [D生成运行配置] ----> [E同步集群] ----> [F启、停、热更]
以上就是基础流程,每个步骤可以用你觉得最舒服的实现,但无论怎么实现都要保持简单。A是针对每个项目所架设的代码库,一般用SVN实现。B步骤一般需要人工审核一次,校对一下本次更新是否存在配置修改(增减修配置项)。C一般用于定义和控制“哪个模块放在哪个主机上”这个问题。D、E现在都是用脚本实现,F现在是用saltstack实现。以后考虑用WEB UI实现B、C,用Jeiskin之类的方案实现D、E,A、F两步已经足够成熟好用了。
尽量保证部署流程的简单和规范有个好处,可以让一个暂时对业务不太了解的人很快的接手部署工作,还是以前重复的那句:让所有事务的推进不依赖于人,而是依赖于流程。
预告《运维所应该追求的两个特质:服务精神、精益求精》,下次写个小文探讨一下这个东西,权当做自己的一个心路小总结。