正文
关注《HULK 一线技术杂谈》的朋友应该有看过 HULK 的容貌(如下图)。HULK 的每一步发展,都离不开团队的初衷。这份初衷,就是本文将介绍的。
在很多“外人”的眼中,运维工程师的工作不过是搬机器、调网络、装软件、处理故障、7×24小时值班,简单而又枯燥至极。但事实并非如此,运维工作涵盖很多技术领域,运维工程师要掌握硬件、软件、操作系统、开发等多方面的知识,核心目标是为亿万用户使用的产品保驾护航。
互联网行业的发展日新月异,新技术层出不穷。为了适应发展趋势,运维工程师只有提升技术能力才能更好地完成艰巨的运维任务,必须要对传统运维发出自我挑战。
在360,运维团队由基础运维团队、网络运维团队和应用运维团队三部分组成。我们将运维从技术支持领域升级,进行产品化改进,核心目标是为了降低运维成本、 缩短研发周期、让产品试错更廉价。理想很丰满,现实很骨感,从最初服务少量项目、几十台服务器,发展到大量具有数亿用户的项目,我们也在不断摸索,在试错中成长。在这个过程中,我们经历了两次重要的升级。
运维工作中有很多琐碎的、重复的事情,初期我们只有两个IDC,服务器数量有限,项目数量也较少,靠纯手工劳作还可以应付。但随着时间的推移,项目暴增,随之IDC和服务器的数量也成倍增长,同时360各项目都是小团队在做, 开发风格不同、习惯各异,但极致要求响应速度,如果运维工作按照之前方式进行,很难满足需求。大势所趋,我们必须进行工具化升级,将重复的事情自动化。
在工具化过程中,我们秉着低成本、拿来即用的原则,借鉴业界成型的方案,同时将精力用在对开源软件的研究中,有开源工具就绝不自己凭空创造。初期,我们只围绕开源软件做周边脚本开发,不动核心代码,在实践中总结经验。例如,在最基础的部署软件环境中,我们基于YUM搭建了自己的包管理系统,将常用软件打包, 同时根据项目做成模板,这样无论是初始安装还是扩容都能在分分钟完成。配置文件管理利用Puppet完成,服务器批量操控依赖SaltStack。就这样 我们的运维兵器谱在不断地丰富。
另外,运维工作离不开监控报警,这是一件让无数运维人苦不堪言的事情。而会休息才会工作,监控体系必须优化。