SRE 是确保所有生产环境(Infra/Server/DBS等)一直正常运行的人。每个网络科技公司基本都有这个部门。但是,这个角色不应与开发人员的角色混淆。
"SRE 就是要求让一个软件工程师去设计一个运维方法的结果。 -- Ben Treynor"
SRE 的关注点在于如何在发布新功能和确保它们对用户可靠之间找到平衡。
SRE 主要通过如下措施来保证服务的可用性和稳定性:
- 容量管理
- 通过构建自动化流程来减少错误所造成的影响,也即降低 MTTR 的措施
- 通过有规则的监控系统来提高 MTTD/MTTR 比率,也即 异常检测时间/异常恢复时间
- 优化软件设计以此来减少整个系统其他部分的故障
所以,理想的 SRE 是:
能够理解并经常预测复杂系统的紧急行为。至少有一个 SRE 会参与到任何大型系统的设计中,他们对设计中的系统故障模式的推理能力就是原因所在。能够用高质量的代码解决问题。谷歌运行的是不断迭代新功能的大型服务,SRE 负责编写软件,该软件使得亚线性数量的人在机器上运行程序成为可能。不是开玩笑,在这种规模下,容量规划是非常困难的,以至于几个 SREs 决定最好编写一个大规模的解决方案来计算装箱问题。
在这篇文章中,我们将介绍如下内容:
- Google SRE 的职责
- Google SRE 薪水
- 如何准备 SRE 面试
- 如何知道自己是否适合 SRE 这个岗位
1. Google SRE 的职责
SRE 工程师定义可靠性目标并且不断改进。
它们处理如何配置、部署和监视代码。
他们的职责是:
- Availability:可用性
- Performance:性能
- Monitoring:监控
- Change management: 变更管理
- Emergency response:应急响应
- Eliminate toil:消除琐事
- Maintain infrastructure:维护基础设施
2. Google SRE 薪水
SRE 工程师薪酬轨迹在不同的地点和雇主之间是不同的。
根据 Glassdoor 的数据,该职位的年薪从 12万 美元 起,最高级别的职位年薪可达 20.8 万美元。
Glassdoor 数据显示,典型的谷歌 SRE 工程师年薪为132,000美元。谷歌的站点可靠性工资范围为每年205000。
这一估算是基于员工提供的13 个谷歌站点可靠性工资报告或基于统计方法估算的。
在谷歌的 SRE 工程师可以期望平均总工资$144,000每年,包括奖金和额外的报酬。
2.1 美国 SRE 工程师薪酬最高的城市
2.2 根据 Glassdoor 数据,不同公司的 SRE 薪资范围
Google — $147,393
Apple — $138,350
Microsoft — $129,345
LinkedIn — $143,408
3. 如何准备一个 SRE 面试
SRE 职位的面试过程是谷歌最具挑战性的之一。SREs 必须需要有很强的 Linux SysAdmin 技能。他们还希望 SREs 能成为强大的软件工程师。
SRE 候选人的面试小组通常由两个领域的工程师组成。
一半会关注你的操作系统知识,另一半会关注你的 SWE(Software Engineer) 技能。脚本语言虽然重要,但还不够。理想情况下,您还应该精通 Python、C 和 c++。
谷歌寻找的是同时具备编码和系统技能两种技能的 SRE。
所以,一个普通的程序员可能会拥有丰富的系统知识,反之亦然。
当然了,你不可能在这两个方面都表现普通或在其中一个方面表现糟糕。
因此,在整个过程中需要巩固你的优势,而不是改进你的弱点!
如果你是一个系统杀手,而且还是一个不错的程序员,那么专注于系统。你在强项方面的收获将超过你在弱项方面的收获。
然而,这个建议的警告是,你不能在这两个方面有明显的不足。
就像之前说的,他们不会接受一个糟糕的程序员或缺乏Linux知识的人,如果是这种情况,无论从哪一方面来说,你都不应该去面试SRE。
3.1 SRE 准备面试的几个 topic
- File management:文件管理
- I/O management:I/O 管理
- Networking:网络
- Bit manipulation:比特位操作
- Memory management:内存管理
- System processes management, etc…:系统进程管理等等
4. 如何知道自己是否适合软件站点可靠性工程师的职位
这里有一些问题,你可以尝试先问问自己。
- 1.你是否喜欢思考关于大规模的弹性扩展问题?
- 2.你是否喜欢思考如何使得复杂且规模庞大的系统拥有更高可靠性?
- 3.你对于一个作为软件开发者,但开发的软件从不会被外部用户看到这件事是否介意?
- 4.你是否享受花费大量时间在 terminal 上工作?
- 5.你是否享受和诊断问题的过程?如果是,假如在诊断过程中,一直无法找到系统层面的问题,你该怎么办?
- 6.你是否享受研究系统信息(disk,CPU,OS,CPU等)以及系统级别的工具函数(ssh,proc,cron,swaps等)?
- 7.你对于
On-Call这个事情是否介意,在On-Call时,你可能需要随时来处理比较高风险问题。 - 8.你能在压力下保持冷静吗?
- 9.你是否以逻辑、流程导向的方式处理问题?
- 10.你愿意尝试一个从未解决过的问题吗?
- 11.你是一个思考如何让事情变得更好的人吗?
5. 你为SRE的面试做好准备了吗
这里有一些 SRE 面试问题和准备指南,假如你正在准备 SRE 相关面试,这篇文章可能会帮助到你。
sre 面试问题: www.interviewhelp.io/blog/site-r…
原文: www.interviewhelp.io/blog/posts/…
翻译: GoOps 公众号: CloudNativeOps