问题描述
在小规模系统中,是否仍然值得进行全自动化的配置管理和部署?在管理几台服务器,且这些服务器只需要2、3或4台的情况下,通过手动操作,直接创建第一个实例,然后克隆后续实例(手动更改IP地址和主机名)可能会更快。理论上,自动化部署和配置管理的优势在于可以更快地部署代码、更快地进行测试,并通过自动化排除人为错误来提供更可靠的服务。在未来升级基础操作系统(例如,从CentOS 6到CentOS 7)时,使用配置管理系统进行自动化部署的初始投资是否超过了以上优势所带来的长期好处?对于小型企业和管理少量服务器的情况,是否有任何真实的非传闻性研究和数据点来支持上述每个优势的观点?
解决方案
请注意以下操作注意版本差异及修改前做好备份。
自动化的价值
自动化手动任务以及使用代码而不是纸张和人工干预进行配置管理,绝对是有价值的。其中一个巨大的优势是减少重复性工作的人时。重复执行相同操作可能导致人为错误,而任何需要修复不止一次的错误都可以看作是重复工作。重复工作是昂贵的,已有一些研究来量化其成本。你可以在这份白皮书中阅读有关 – https://devops-research.com/roi/
这份白皮书还量化了服务/系统故障的成本以及解决故障的速度。所有这些都通过具有防止人为错误进入生产系统的强大自动化流程大大减少了。同时,自动化手动任务的主题也在每年发布的DevOps报告中进行了调查研究,自2013年以来每年都有。在所有规模的高绩效组织中,这都被提到为优秀的最大推动因素。有许多理由和解释可以作为你的观点的证明。
自动化改变工作方式
自动化不仅仅是自动化本身的优势,更重要的是它为所有资源提供了相同的配置。举例来说,你创建了一个托管应用和所有相关配置的web服务器。然后你将其注册为Amazon AMI,以便部署多个副本(例如,一个用于开发,一个用于测试,一个用于生产)。你推出它,并且根据AWS的工作原理,你甚至不需要手动更改任何IP。
然后几周后,你意识到需要在nginx中更改SSL会话缓存大小,否则你的应用程序用户无法上传大文件。由于只有几台服务器,你手动执行更新。你手动执行这些配置更改并进行了很好的记录。
然后一个星期后,你部署了一个新的服务器(一个客户要求一个UAT环境来测试他们的集成)。因为你生病了,所以有其他人在代替你建立服务器。或者可能是AWS中的实例出现问题,所以你不得不在深夜在一个良好的酗酒后重新建立生产环境。一切都完美无缺,除了一个特定的配置相关特性。你花费了两个小时来弄清楚为什么会发生这种情况,而客户经理正在追着你,只有当你意识到另一个管理员在部署新服务器时忘记了一个愚蠢的配置设置时,你才意识到这一点。
如果你曾经遇到过这种情况,你就会想方设法减少这些问题。为什么不花几天时间编写一个使用Ansible或Puppet的简单部署流程,并将其放入git中?从那以后,任何配置更改都只需要一次推送,你很少需要担心发生类似事件。
总结
在小规模情况下,全自动化的价值远不止于减少人工操作的工时。自动化可以改变工作方式,提高团队的效率和工作质量。虽然没有特定的定量研究可以直接证明在每个企业、团队和项目中的具体价值,但可以通过自己的经验和行业趋势来理解其优势。因此,综合考虑自动化带来的各种益处,它仍然是小规模环境下提升效率、减少错误的有效方法。