从一个工程师成长看自动化运维的过程
自动化虽然涉及的应用领域很多,但其中存在一般的发展过程。下面以云计算领域的自动化运维场景为例,对自动化的一般发展过程进行讲解。
十多年前,M 工程师还是一名刚毕业的计算机专业的学生,和其他同学大多选择研发岗位一样,M 工程师刚开始从事的是 Java 编程,后来因为项目需要,M 工程师被转岗到运维岗位,从此开始了自己 10 多年的运维之路。
1、第一阶段:无序阶段
M 工程师是初入职场的初级运维工程师,刚开始公司业务规模小,只有几台服务器,每天的工作就是装机及安装各类基础软件,如 MySQL、Redis、JDK 等。由于 M 工程师没有工作经验,也缺少前辈指导,每次操作时 M 工程师都是从百度上查一些安装手册,然后一步步照着去做。刚开始虽然磕磕绊绊,但每次完成任务后,M 工程师觉得自己又掌握了新的技术,很有成就感。但是时间一长,M 工程师觉得每天做的事情都是重复性工作,更头痛的是当初安装的各类软件缺乏一致性,各类问题的出现让 M 工程师焦头烂额。
2、第二阶段:标准化阶段
有了一些实践经验后,为了避免重复犯错,M 工程师开始将安装方法整理成标准化文档,放到公司的文档库,这样既能节省搜索时间,也能保证安装软件的一致性。这些事情虽然简单,但是极大地节省了时间,M 工程师遇到的软件安装问题也越来越少。
具体来说,M 工程师做了如下几件事,让运维工作进入了标准化阶段。
设备选型标准化:什么应用场景选择什么样的服务器。
操作系统安装标准化:版本、内核参数、文件目录、用户属主。
软件安装标准化:版本、配置参数、目录、端口全部标准化。
3、第三阶段:自动化阶段
M 工程师所在的公司业务发展很快,服务器数量很快增长到上千台,每周交付的机器也有几十台,M 工程师的团队也有了其他新同事,在交付工作上,也有了标准流程文档(SOP)。
但是,即使有了标准流程文档,大量的重复工作不但耗费人力,而且工作中的误操作仍然时有发生,难以保证完全一致。在执行中的标准化方法遇到了规模性困难,这时开始考虑落实自动化运维。
具体来说,M 工程师做了如下事情,使得运维工作由标准化提升到自动化阶段,解决了工作效率和一致性的问题。
调研业内开源的自动化工具,如 PXE、SaltStack、Kubernetes 等。
将标准化的内容由文档修改为程序。
根据不同的场景使用不同的自动化工具和方案。
4、第四阶段:平台化(智能化)阶段
时间飞快,10 年的时间,M 工程师从初级运维工程师成长为了公司的运维负责人,所运维的服务器有数千台,业务数十个。相对业内同行,M 工程师在运维自动化方面也取得了比较好的成果:业务的增长并没有带来同比例的人员增长,SLA 也能达到 99.9%。
随着公司的成长,运维也是朝着技术运营的方向前进,更多的接入业务层的支持。在自动化方面,目前运维自动化的场景是针对具体运维问题的,而不是面向业务需要。例如 A 业务上线,需要部署以下服务,其中:
数据库上需要 10 台服务器部署 MySQL,分别是主—从各 5 台。
缓存使用 Redis,部署 Codis 3.2 共 4 台服务器。
应用服务以 Docker 方式交付,用 Kubernetes 管理,共 8 台服务器。
按照目前的做法,每一步都需要运维工程师通过自动化工具实现。如果能交付给一个自动化平台,在 Web 系统中输入需求,后台资源池自动调度分配,分配完成后输出结果反馈给运维工程师就可以了。同时,随着业务的发展,根据性能监控曲线能自动实施业务的自动扩容缩容。
此时 M 工程师所思考的,已经是平台化(智能化)的方案了,这是当前运维领域最为前沿的 AIOps 所考虑的内容之一。
版权声明: 本文为 InfoQ 作者【阿泽🧸】的原创文章。
原文链接:【http://xie.infoq.cn/article/d5d680d04e4b171153335f62c】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论