Tag: SDE

站点可靠性工程师(SRE) vs 软件开发工程师(SE/SDE)

许多大公司都有站点可靠性工程师(SRE = Site Reliability Engineer)的职位空缺。例如,谷歌、Facebook/Meta 或字节跳动的抖音。软件工程师(Software Engineer)与亚马逊/Amazon所称的软件开发工程师相同(Software Development Engineer)。 站点可靠性工程师(SRE)是一个专注于确保生产环境中软件系统的可靠性、可扩展性和性能的角色。SRE 负责服务的健康状况和正常运行时间,平衡软件开发与运维任务。软件工程师(SE)主要专注于编写和维护代码以创建软件产品,而 SRE 则融合了开发技能、系统管理、故障排除和事件管理,以确保这些产品在实际环境中顺利运行。 以下是两者之间关键区别的比较: 站点可靠性工程师 (SRE) 专注于可靠性与运维: 确保系统高度可用、可扩展且具有弹性。 监控系统健康状况,管理事件并处理故障。 运维自动化: 使用代码自动化手动任务(例如基础设施部署、监控和补救措施)。 通过创建自动恢复或仅需最少人工干预的系统来减少重复性工作。 随叫随到的职责/也就是On-call:我在亚马逊AWS云On Call的体验 通常参与随叫随到的轮值,处理操作问题和紧急情况。 性能和容量规划: 分析系统性能,确保系统能够应对增长和流量高峰。 SLA、SLO 和 …

我在亚马逊AWS云On Call的体验

从2020年到2021年,我在亚马逊(AWS云)担任软件开发工程师(SDE)。有人说SDE代表”Someone Does Everything”(什么都做的人),这相当准确。在亚马逊,每位SDE软件工程师都负责从设计、编码到测试的所有工作,还需要定期轮值紧急响应任务。大多数亚马逊团队由6-8名工程师和一名软件开发经理(SDM)组成,遵循“两个披萨团队” (Two Pizza Team)的原则。 每位SDE软件工程师通常每6-7周需要轮值一次Oncall(紧急响应任务),持续一整周24/7待命。在此期间,你需要处理和解决业务上出错的问题(比如服务器宕机,原因可能:程序出错崩溃、硬盘空间不足、CPU温度过高等)。为此,你需要在手机上安装紧急响应软件(Pong),以接收与团队产品相关的警报。当警报响起时,你必须在15分钟内确认工单。如果没有及时确认,问题会逐级上报,甚至可能报告到CEO姐夫贝佐斯 Jeff Bezos,这可能会对你的绩效评估产生负面影响。 我听说有个软件工程师下班后和同事到酒吧里喝两杯,然后警报响了,他淡定的拿起笔记本就处理起来了。 亚马逊的理念是你拥有自己的代码/You own your code。这意味着即使在半夜,警报响了,你也得爬起来解决问题。你的首要任务是恢复服务/Mitigation,其次是调查原因和解决。如果警报在凌晨3点响起,您可以临时重启服务器来解决问题,详细调查可以第二天起床后再进行。如果你在半夜被警报唤醒,第二天可以多休息,不用担心早晨的站会(敏捷开发每天都有例会)。 程序也需要Oncall就会促使他们尽可能的写出高质量的代码,避免BUG日后找麻烦。 这里顺便说一下,我在亚马逊S3的那个组,敏捷开发是2周一个短跑(Sprint),轮到oncall的工程师需要专注于Oncall DevOps,相当于是一个任务(多少点我忘记了),如果不太需要处理警报,则可以适当做一些其它开发任务。对我来说,压力最大的是在Oncall完的第二周,需要写报告,并在每周大会上给大家讲每个警报的原因和处理方案。 这个Oncall非常让人有压力,但它们有效地训练了软件工程师的DevOps技能。由于高灵敏度设置,新产品往往会生成更多警报。亚马逊以其99.99%的服务水平协议(SLA)而自豪,这要归功于SDE的紧急响应文化。 以下是我在2021年担任亚马逊SDE期间最后一次轮值时收到的警报示例。警报声可能非常刺耳,类似空袭警报,不过也有一些不那么刺耳甚至更愉快的铃声可供选择。当时这声音简直是恶梦。 我在Oncall那周,我媳妇都不愿意和我睡,因为大晚上的被警报吵醒是件很吓人并且让人很不爽的事情。当我离开亚马逊来到微软剑桥研究院后,立马压力就小很多,而且人也开心很多,朋友圈状态都比较频繁了。 其实,我感觉Oncall这事不讨好的一个很大原因是在英国Oncall是不额外给钱的,都属于本职工作的一部分。而据说在德国,Oncall是会有额外经济补偿的,在金钱的加持下,我感觉这事的体验感肯定天壤之别。 英文:The Experience of On-call (Paging) for Amazon Software …