今天,我们来简单聊聊关于SRE工程师的那些事

在正式开始之前,我先跟大家讲一下我的个人经历:今年春招找实习的时候,依稀记得那是一个日暖风和的中午,我坐在电脑前,而网线的另一端是和蔼可亲的面试官——是的,我正在进行一场某企业的技术面试,岗位则是SRE工程师


面试的前半段,我跟面试官相谈甚欢,不亦乐乎。直到面试官突然问了我这么一个问题:“你觉得运维工程师和SRE工程师有什么区别?或者说他们的工作性质有什么不一样的地方吗?”

这个问题直接把我问住了,运维工程师跟SRE工程师有什么区别?SRE工程师全名叫啥来着?顿时一个个问题涌上我的脑海,我只能尴尬的笑着并跟面试官说:“不好意思面试官,这个问题我没有过多的去了解”

面试结束后,果不其然的“挂掉了”


回到宿舍后,我对今天的面试过程做了一个总结复盘,我决心要弄清楚SRE工程师到底是什么,以及他跟运维工程师有什么区别,不然这都不懂的话我还应聘什么SRE工程师。

好,正文开始。

什么是SRE工程师?

SRE这个词诞生于谷歌公司,其全名叫网站可靠性工程师(Site Reliability Engineer ),它是软件工程师和系统管理员的结合。

在SRE诞生之前,谷歌认为“既然软件工程师职业主要专注于设计和构建软件系统,那么应该有另外一种职业来专注于整个软件系统的生命管理周期”。

SRE工程师都干些什么?

SRE工程师在最初的时候,主要的工作是负责维护谷歌网站的正常运转,所以我们看到SRE中的"S"最开始指代的就是谷歌的网站业务。

任何一个软件或者系统,我们认为其可靠性(Reliability)是相当重要的。因为绝大多数的大型软件或者系统,它们的生命周期绝大部分都处于“使用”阶段,而非“设计”或者“实现”阶段。一旦你这个软件或系统投入到生产环境并正式使用后,你就得想尽办法让它的用户体验更好,这样才能留住用户,给公司带来利润对吧。

所以说,SRE工程师的主要任务之一就是:负责软件和系统的架构设计,运维流程的不断优化,让这些大型软件以及系统运行得更加可靠,更加稳定,扩展性更好,更能有效地利用计算机资源。

世界上第一个SRE是谁?

在《SRE Google运维解密》一书中,作者跟我们谈到了SRE的起源——Margaret Hamilton,MIT教授。
他参与了阿波罗登月计划的软件开发工作,在阿波罗七号飞船研发的某天,MIT教授带着他的小女儿Lauren一起来到公司。小孩子嘛,对于新鲜事物都特别好奇,所以就在MIT教授忙着和组员们在计算机上进行飞行模拟测试的时候,他的女儿Lauren不小心按下了控制台上的DSKY键,这一按可不得了——整个模拟程序直接崩溃,导致火箭发射程序意外终止。

之后MIT教授发现,是因为当时Lauren意外触发了P01程序的执行,所以才导致了程序的崩溃(这个子程序是起飞前调试程序,执行时会删除现存的导航信息,如果在火箭飞行过程中执行这个程序,计算机将无法继续维持火箭航线,后果可是灾难性的)

MIT教授凭着自己的直觉,为项目组提交了一个软件改动,申请在飞行程序中增加一项特殊状态检查,以免飞行员在飞行过程中意外触发P01子程序的执行

但不幸的是,NASA管理层认为,这项错误发生的可能性太小,如果要修改的话成本太大,根本不值得。
无奈MIT教授只能在火箭飞行手册中写道:“请勿触发P01程序”

当时增加这段文字的时候,很多同事都觉得MIT教授在小题大做,因为他们都认为宇航员在经过如此长时间的专业训练,几乎不可能会发生这种错误

几天后,阿波罗8号飞船在执行一项任务时。宇航员Jim Lovell、William Anders和Frank Borman三人执行一个长达四天的飞行计划途中,Jim Lovell意外触发了P01程序,好巧不巧,当时正好是美国的圣诞节,大部分工程师都休假去了。

可想而知,当时NASA处于一片混乱状态,如此人命关天的时刻如果不能及时解决,三名宇航员恐怕就回不来了。

所幸当时MIT教授的飞行手册更新中恰恰提到了这种情形,并且提供了重新上传数据以及恢复执行的有效办法,在有效的时间内解决了问题,并拯救了宇航员的生命。

最后,我想说的是:没有人能够毫不出错地去做一件事,即使他是这个领域内最顶尖的人才。无论对一个软件系统运行原理掌握得多么彻底,也不能阻止人犯意外错误!

上文我们对SRE工程师有了一个基本的了解,别忘了还有一个问题:SRE工程师跟运维工程师有什么区别?

我们先看看某招聘网上企业分别对SRE工程师和运维工程师的技能要求,当然这只是一个大概的需求而且我只放了一张图片,具体还得看不同企业。大家可以自行去某招聘网站上了解。

SRE工程师

运维工程师

我们可以看到,两个职业在技能需求上其实没有太大的差别,都需要了解Linux操作系统,熟悉编程语言或者脚本语言。那么为什么还会有SRE工程师和运维工程师呢?以及他们直接有没有特别明显的区别呢?

区别?

传统的IT行业中,许多企业大多都是雇佣系统管理员来运维复杂的软件或者系统。

这些系统管理员的日常工作和研发工程师(软件工程师)相差甚远,通常属于两个部门:开发部(Dev)和运维部(Ops),这个团队模型也就是Dev/Ops分离模型。

于是,系统管理员也被称作运维工程师,他们主要负责将线程的软件组件部署在生产环境当中,并对外提供某种业务服务。

与运维工程师不同的是。SRE工程师不但负责传统运维工程师的工作,他们也负责软件工程师的一些工作——参与某些软件或系统的开发。

SRE团队相信通过开发软件系统来维护系统的正常运行,以此来代替传统运维工程师的人工操作,这样做大大节省了人力开销。

SRE团队中实现的是DevOps结合模型,他们主张用系统来维护系统,让SRE工程师有更多时间来负责软件系统的开发,而不是每天进行重复枯燥的运维工作。

最后,做个小总结:

  • 随着IT行业的迅速发展,传统运维工程师已经不能满足企业的需求了,而SRE的诞生和DevOps理念刚好给企业提供了一个比较好的方案
  • SRE更强调的是开发系统来运维系统,所以SRE的工作不仅要运维,还要对系统进行开发。这样做的好处就是避免了大量的人力消耗以及重复的人工运维操作
  • 我们要重新造轮子,而不是重复造轮子

什么?你竟然不知道SRE工程师!相关推荐

  1. 百度SRE工程师提前批一面总结+为二面攒人品

    一面竟然过了-一定是面试的人比较少吧-(no 面试官慧眼识? 自我介绍 主要介绍了自己的项目:人体核心温度的研究. 问题:项目的难点在于什么? 如何衡量当前模型的好坏? 接下来,就开始说专业技能的问题 ...

  2. 用了这么久 IDEA,你竟然不知道有个功能叫自动补全!

    点击关注公众号,Java干货及时送达 来源:dwz.cn/hlQEDFne IDEA 有个很牛逼的功能,那就是后缀补全(不是自动补全),很多人竟然不知道这个操作,还在手动敲代码. 这个功能可以使用代码 ...

  3. 作为一名Java程序员,你竟然不知道Instrumentation

    转载自  作为一名Java程序员,你竟然不知道Instrumentation 作者:Yilun Fan  来源:http://1t.click/fMA 对于Java 程序员来说,Java Instru ...

  4. 使用计算机的场所和用途,天天在使用计算机,很多东西我竟然不知道!

    原标题:天天在使用计算机,很多东西我竟然不知道! 按照不同角度,计算机有以下几种分类的方式. 1.根据计算机所处理数据的类型划分 可将计算机分为数字电子计算机.模拟电子计算机. 数字电子计算机所处理的 ...

  5. 天啊!原来旧手机这么值钱!竟然不知道丨实用

    天啊!原来旧手机这么值钱!竟然不知道丨实用 如今,智能手机更迭速度真是快.喜欢尝鲜的人嘴里喊着"求剁手",还是忍不住买买买换换换.于是家里淘汰下来一堆旧手机,送人,别人未必瞧得上: ...

  6. 分布式机器学习_京东出来的java工程师,竟然不知道分布式、高并发、多线程的区别?...

    当提起这三个词的时候,是不是很多人都认为分布式=高并发=多线程? 当面试官问到高并发系统可以采用哪些手段来解决,或者被问到分布式系统如何解决一致性的问题,是不是一脸懵逼? 确实,在一开始接触的时候,不 ...

  7. SRE工程师到底是做什么的?

    尽管站点可靠性工程已经存在了一段时间,但也只是最近才在业界获得一些名声.但人们对于站点可靠性工程师(SRE)的作用仍然存在很多疑问.我们所知道的大部分内容来自谷歌的<站点可靠性工程>一书. ...

  8. 成为DevOps/SRE工程师有多难?看看这份必备技能清单

    作者 | Aymen El Amri 译者 | 杨雷 出处丨高效开发运维 好长的技能清单! 这个列表并非详尽无遗,只是列举了技术基础.必须知道的技能和一些随机的想法.可以用它们作为一个清单来评估你自己 ...

  9. Linux SRE工程师常用提效工具

    重点声明:以下工具和参数介绍,部分内容来源于网络,特此说明 一.运维必知工具 1.1 系统监控工具 1.1.1 top 1.介绍 显示系统上正在运行的进程,它是运维工作中必备命令之一,常用于监测系统负 ...

最新文章

  1. 屏幕边框闪光_写给想入手21:9的屏幕党,明基 EX3501R 真香跳坑指南
  2. 一千行MySQL学习笔记
  3. 【Flutter】Flutter 开发环境搭建 ( 2021年08月25日 补充最新资料 | 最新安装教程 )
  4. 第一个Struts2程序
  5. HDU1045 Fire Net 递归回溯
  6. python 赋值重置_Python所有赋值语句快速预览
  7. 计算机应用基础教学改革参考文献,关于计算机应用基础论文范文资料 与计算机应用基础课程教学改革分析有关论文参考文献...
  8. 新想法!华科、清华、康奈尔联合提出“圆形卷积”!聚合方形和圆形优势
  9. python中*args **kwargs
  10. powershell 安装mvn_Maven 安装好之后,命令行执行 `mvn -v` 提示“'mvn' 不是内部或外部命令,也不是可运行的程序 或批处理文件。”...
  11. IDEA访问不到SpringBoot项目webapp下的内容
  12. MySQL数据增加语句
  13. 微信加不了好友提醒服务器忙,微信加人对方收不到验证信息怎么办?
  14. U盘文件目录损坏且无法读取
  15. 联想台式计算机亮度怎么调,台式联想电脑亮度在哪里调(手把手教你调电脑亮度)...
  16. Oracle BI产品线
  17. 生信技能树linux虚拟机,科学网—Windows10安装Linux子系统Ubuntu 20.04LTS,轻松使用生信软件,效率秒杀虚拟机 - 刘永鑫的博文...
  18. Global项目|浅析销售BOM实施方案及注意事项
  19. mysql使用exists、in、distinct区别
  20. 数仓经典案例-各个视频平均完播率、平均播放进度

热门文章

  1. SEO进化三部曲:基于实战+数据化+订单转化
  2. 深度剖析行业现状,盘活企业私域流量 | 微媒云播的超级观点
  3. 身边的VE案例——教鞭
  4. 信用卡交易欺诈识别模型
  5. 正规方程 Normal Equation
  6. 如何限制修改 IP 地址
  7. vercel和netlify部署代码并解决接口代理转发的问题(和Nginx功能一样)
  8. 移动端网页特效移动端轮播图
  9. 面向初学者的5个最佳机器学习项目
  10. FPGA学习之日常工作 三模冗余