简单地说下自己对自动化的理解:

首先说自动化的几个组件:

1.装机自动化,软件部署和配置管理自动化
主要是实现服务器系统的快速build,软件的部署和相关配置的管理,比如nginx,java,php的部署和配置分发,更新,其中也包括操作系统相关配置的标准化,比如sysctl.conf,limits.conf等。

2.代码发布的自动化
用于程序的自动发布,需要的几天功能,灰度发布和回滚的功能

3.报警处理的自动化
这个比较虚的一个概念,比如说由监控系统发的报警邮件,在发给负责人之前会进行一些简单的处理。
比如我这边的cdn,在报4xx,5xx比例的时候,会通过脚本对当时的日志进行分析,breakdown到http code,域名,url等,这样就可以实现在不登陆服务器的状况就就可以判断故障。
不过,大部分的报警还是需要人为进行处理的,比如系统的load高,就有各个方面的原因,cpu,mem,io,应用等。。

自动化的目的:
1.解放生成力,把ops从繁琐枯燥的装机工作中解脱出来,做一些更有意义的事情,比如说是性能的分析优化,参与结构的设计等

2.标准化,统一化,避免因为人工操作不当产生的各种各样诡异的问题,比如我们之前碰到的一些系统配置不标准导致的问题(ulimit太小,ntp不同步等)

3.作为基础框架的一部分和服务器生命周期的一部分,可以支持业务的快速扩容,服务器的快速上下线。

暂时只想到这么多了。。。