系统管理员和网站可靠性工程师(SRE,下同)对于任何组织来说都很重要。本篇将介绍下二者的不一样之处。html
在 IT 行业,成为多面手或是专家的争议一直存在。99% 的传统系统管理员都被归到了多面手这类。网站可靠性工程师(SRE)的角色则更加专精,而且在如 Google 般有着必定规模的头部公司中对其的需求不断增长。但总的来讲这二者对于跑着应用的基础设施有着一样的目标:为应用的消费者提供良好的体验。然而二者的出发点却大相径庭。linux
系统管理员通常都是从基础的桌面或网络支持成长过来的,并一路习得大多数系统管理员都会掌握的普遍的技能。此时这些系统管理员会对他们所负责的系统和应用了如指掌。他们会知道一号服务器上的应用每隔一个星期二就须要重启一次,或是九号服务器周三会静默的崩溃。他们会对服务器的监视做出微调以忽略可有可无的信息,尽管那个被标记为致命的错误信息每月第三个周日都会显示。git
总的来说,系统管理员了解如何照料那些跑着你核心业务的服务器。这些系统管理员已经成长到开始使用自动化工具去处理全部归他们管的服务器上的例行任务。他们虽然喜欢使用模板、黄金镜像、以及标准,但同时也有着足够的灵活度去修改一个服务器上的参数以解决错误,并注释为何那个服务器的配置不同凡响。github
尽管系统管理员很伟大,但他们也有着一些怪癖。其中一项就是没有他们神圣的受权你永远也获取不了系统的 root 访问权限,另外一项则是任何不是出于他们的主意的变动都要在文档中被记录为应用提供方的要求,并仍然须要再次核对。数据库
他们所管理的服务器是他们的地盘,没有人能够随意干涉。ruby
与成为系统管理员的道路相反,从开发背景和从系统管理员背景成长为 SRE 的可能性相近。SRE 的职位出现的时长与应用开发环境的生命周期相近。服务器
随着一个组织的发展而引入的相似于持续集成和持续发布 (CI/CD) 的 DevOps 概念,一般会出现技能空缺,以让这些不可变的应用部署到多个环境并随着业务需求进行扩展。这将是 SRE 的舞台。的确,一个系统管理员能够学习额外的工具,但大致上成为一个全职的职位更容易跟的上发展。一个专精的专家更有意义。网络
SRE 使用如代码即基础设施的概念去制做模板,而后调用它们来部署用以运行应用的环境,并以使用一键完整重现每一个应用和它们的环境做为目标。所以会出现这样的状况:测试环境中一号服务器里的一号应用的二进制文件与生产环境中十五号服务器的彻底一致,仅环境相关的变量如密码和数据库连接字串有所不一样。app
SRE 也会在配置发生改变时彻底销毁一个环境并从新构建它。对于任何系统他们都不带一点感情。每一个系统只是个被打了标记和安排了生命周期的数字而已,甚至连例行的对服务器打补丁也要从新部署整个应用栈运维
对于一些状况,尤为是运维一些大型的基于 DevOps 的环境时,一个 SRE 所能提供的用于处理各类规模的业务的专业技能固然更具优点。但每次他们在运气很差走入死胡同时都会去寻求他的系统管理员友人或是 来自地狱的混蛋运维(BOFH) ,获得他那身经百战的故障排除技能,和那些用于给组织提供价值的丰富经验的帮助。
via: opensource.com/article/19/…
做者:Vince Power 选题:lujun9972 译者:vizv 校对:wxy