有没有人使用发布pipe理原则来进行基础架构的系统pipe理,就像软件开发一样?
我已经在系统pipe理领域工作了10多年了,而且我还没有接触到一家使用发布pipe理原则来pipe理服务器基础架构和应用程序configuration的公司。 诸如外部化configuration,检查版本化存储库内外的configuration,configuration到系统的自动部署,通过适当的非生产环境进行升级,组件的自动化unit testing等。
我很好奇任何人用来pipe理这些configuration和部署的应用程序和进程。 另外,如果为configuration部署创build版本注释是任何人都做的?
补充评论 – 我同意盲目地订阅方法论框架并不会使你成为一个更好的组织,这不是我所要求的。 我试图确定是否有一些适用于系统pipe理的概念可以应用于软件开发。 例如,如果我想在prod中更改一个系统的configuration,我怎么知道我在dev中testing的是真的被移动到什么地方? 我想说,如果你有一个系统,那个configuration被检入到一个版本库,然后版本化,然后自动部署到一个系统中,那么一旦将它们部署到生产环境中,这将确保事物的正常工作。
其实我花了不less时间思考这个问题。 在我的大型互联网公司,我的工作是在我们的许多服务器上运行的软件的内部发布pipe理。 实际上,我们已经做了很多工作来尝试将发布pipe理原则应用于基础架构或系统pipe理。 虽然我们的软件包装系统对外可用,但总体原则应该是一样的。
下面是一个例子:曾经是当web服务器被设置时,pipe理员必须记住将vip地址设置为环回地址上的别名,以使机器旋转。 我们不断地与机器交换出来,这一重要的一步被遗漏。 结果将是一个坐在那里准备好的服务器,但无法提供stream量,因为VIP被标记为closures。
我们使用的解决scheme是一个软件包,我们整合到我们的通用版本中。 我们有一个模板系统,可为大约600个农场的每个农场生成特定于服务器场的设置。 这些设置然后在安装匹配的软件包时由包装系统应用。
所以,我们创build的这个相对简单的包简单地采用了每个场的设置,并将其设置在系统环回上。 这完全消除了被vip意外标记为系统的系统问题。
我们也将这种方法应用于系统的其他部分。 结果是,我们已经逐渐将大部分系统configuration转移到了我们的软件发布系统中。 我们构build和分发包含所有必要软件包的软件版本。 这些包反过来拿起每农场的设置,并应用他们来修复像回环地址的东西。
这仍然是一个相当高级的机制。 还有其他一些系统可以确保基本操作系统加载到服务器上,并且安装了系统pipe理员用户帐户。 但是,一旦超越了这个水平,我们会尽力将所有可能的系统configuration转移到设置中,然后通过包来读取。 我们对这种pipe理大约10,000台服务器的方法感到非常满意。
由于多种原因,这是一个有问题的问题。
首先,没有一种开发软件的方法。 一方面,传统的类似瀑布的模型需要前台收集,软件遵循一个非常严格的,不变的生命周期,直到完成一个主要版本。 另一方面,你有敏捷模型,每周或者两周都有新的版本。 根据我的经验,前者倾向于反映在企业软件模型(ERP系统等)中,后者倾向于反映在较小的,较不复杂的系统(LAMP堆栈等等)中。
其次,仅仅因为你可以订阅一个方法论框架并不意味着你应该 – 看看像ITIL和COBIT这样的企业灾难(至less当企业不知道自己在做什么, )。 解决IT问题的正确方法是找出您的投资回报实际上将用于任何潜在的stream程改进,然后确定是否要实施。 如果你对业务的要求以及人们对技术支持的工作stream程视而不见,除了浪费大量时间和金钱外,你什么也不会做,因为你在某个人的博客上听说这是在某个特定的情况下某个人的“最佳实践”。 如果您为销售在configuration完全相同的大型服务器的大型Web场中运行的服务的公司pipe理服务器,则configuration代码的可重复性优势要比拥有100个异构部门服务器的商店可靠的工作系统状态备份。
当然,在那里有许多商店,至less以某种forms表示这种心态。 像Puppet,Chef和Cfengine这样的项目的存在是全部的原因。 至于他们是否在做你正在询问的所有事情,这是一个程度问题,因为它应该是。
我们使用Puppet来pipe理我们所有的configuration。 在Puppet的历史数据之上,我们也检查我们的configuration到SVN。
我使用Git进行软件开发,但是我也将它用于所有的configuration和几乎所有需要保留版本的文本。 然后我使用git push或者rsync来移动东西。 我不认为pipe理员使用这种types的东西太多了,因为在每个学科的人员之间并没有太多的交叉(以我的经验)。