SRE 的黄昏,平台工程的初晨

文章探讨了SRE如何面临挑战,以及平台工程的兴起作为解决方案,它以用户为中心,整合SRE、PaaS和研发效能,解决基础设施复杂性问题。Gartner的趋势报告强调了平台工程的重要性。

file

船停在港湾是最安全的,但这不是造船的目的

完成使命的 SRE

过去 10 年,SRE 完成了体系化保障系统稳定性的使命。但在这个过程中,SRE 也逐渐变成了庞大的组织。而 SRE 本身的定位是保障系统稳定性,许多时候会因为担心稳定性而减缓发布。虽然我们希望软件的发布又快又稳,但无论是根据日常经验,还是从 DORA 的报告中,我们都能看到软件交付表现 (Software delivery performance) 和运行表现 (Operational performance) 整体上还是此消彼长的情况。

那有什么可以打破这个困局呢,DORA 在 2023 年的报告中也给出了答案,引入以用户为中心 (user-centric) 这个元素。

file

到了实施层面,用户为中心对应的就是近两年逐渐兴起的平台工程 (Platform Engineering) 概念。

平台工程的崛起

平台工程最早能查到的系统性分享应该是 2017 年 The Paved Road at Netflix

file

平台工程的出圈是由去年「DevOps 已死,平台工程才是未来」的一条宣言开始的。

file

当下平台工程已经成为了行业公认的趋势,就在前两天 Gartner 发布的 2024 技术趋势报告中,平台工程也是连续第二年上榜,还是在被 AI 相关的屠榜中占得一席之地(而去年爆炒的元宇宙已经不在了)。

file

而在稍早之前 Gartner 另一份 Hyper Cycle 报告中,Platform Engineering 以及它的载体 Internal Developer Portal (IDP) 也从 2022 的创新逐渐走向 2023 的高峰。

file

平台工程的背后有实力强大的商业公司背书,比如 HashiCorp, Harness。

file
file

还有日益壮大的 Platform Engineering 社区。

file

平台工程属于 PaaS 层,它的逐渐流行可以从三个方面来看:

  1. 在其之下依赖的 IaaS 层通常是各大云厂的 IaaS,这部分日趋成熟,所以使得精力可以上移到 PaaS。
  2. 在其之上被依赖的 SaaS 层则是各业务线,随着业务线的扩展,就希望提炼出一套可以复用的组件,这就是要下沉到 PaaS 层。
  3. PaaS 层本身的平台工具也日趋完善,从最底层的统一平面 Kubernetes 往上,已经有一组比较成熟的平台工具套件。

平台工程和之前的中台概念有类似之处,同样夹在底层 IaaS,上层业务 SaaS 之间。和中台业务的区别在于,之前的中台多面向业务层,是去整合上层散乱重复的业务系统。而平台工程则是面向基础层,去整合底层的基础设施系统。

现在拆中台的原因是虽然中台整合了,但离业务系统远了,无法响应前线的需求。平台工程崛起的原因,是因为下层的基础设施太复杂了,好不容易摸清门路,发现还有人挡路。Terraform 可以大获成功是因为它屏蔽了管理多云资源的复杂度。

平台工程要做的事情,就是把 Terraform 的成功泛化,把 SRE,PaaS,研发效能这些都整合在一起,提供一个对开发者友好,让他们可以自助的平台。

中台要拆的原因是业务的需求是各异的,电商,外卖,放贷有完全不同的业务逻辑。平台工程可以合的原因是研发的需求是共通的:大家都用 Git 做代码管理,用 Prometheus 看监控,用 Terraform 管云资源,用 Bytebase 管数据库,从否认开始解决 bug 的第一步。

file

结束语

平台工程会是未来,但在研发组织拥抱平台工程的过程中,也首先还需要经历一段 SRE, PaaS, 研发效能这几个团队整合的阵痛。早年的运维工程师叫做 PE,当中历经 SRE 的转型,如今又要迈向 PE。从 Production Engineer 到 Platform Engineer,历史的轮回,冥冥之中自有天意。


💡 你可以访问官网,免费注册云账号,立即体验 Bytebase。

<think>嗯,用户让我介绍一下SRE工程师,我需要先弄清楚什么是SRE,对吧?首先,SRE是Site Reliability Engineering的缩写,也就是网站可靠性工程。这个职位应该和运维有关,但可能更偏向于用软件工程的方法来解决运维问题。 我记得Google最早提出了SRE这个概念,所以可能需要提到他们的贡献。SRE工程师的主要职责可能包括确保系统的可靠性、可扩展性和高效性。他们可能负责监控系统、自动化运维任务、处理故障响应等等。 用户可能想知道SRE和传统运维的区别。传统运维可能更多是手动处理问题,而SRE强调自动化,用代码来管理基础设施。比如,使用基础设施即代码(IaC)工具,像Terraform或者Ansible。另外,SRE可能更注重SLA(服务等级协议),确保系统达到一定的可用性标准,比如99.9%的正常运行时间。 还有,SRE工程师需要具备哪些技能?可能需要编程能力,比如Python、Go之类的语言,熟悉云计算平台如AWS、GCP或Azure,了解容器化和编排工具,比如Docker和Kubernetes。此外,监控和日志工具如Prometheus、Grafana、ELK栈也是重要的。 可能还需要提到SRE的一些核心实践,比如错误预算、混沌工程、持续集成/持续部署(CI/CD)流程。错误预算是指允许系统在一定时间内发生故障的时间,超出预算就需要停止新功能的开发,优先修复稳定性问题。混沌工程则是主动引入故障来测试系统的韧性。 用户可能对SRE的工作流程感兴趣,比如如何处理事故,如何进行事后分析(Postmortem),如何优化系统性能。SRE工程师需要编写和维护自动化脚本,减少手动干预,提高效率。 另外,SRE的文化也很重要,他们通常与开发团队紧密合作,促进开发与运维的协作,也就是DevOps的一部分。这可能涉及到推动文化变革,让开发人员更关注运维方面的需求,而运维人员则通过代码来解决问题。 需要注意的是,不同公司的SRE角色可能有所不同,有些可能更偏向于运维,有些则更接近软件开发。但核心都是围绕系统可靠性和自动化展开的。 可能需要举例说明SRE的日常工作,比如设计高可用架构,实施监控报警,优化资源利用率,处理紧急故障,编写自动化部署脚本等。同时,SRE也需要进行容量规划,预测系统未来的资源需求,并提前扩展基础设施。 最后,总结一下SRE工程师的目标是通过工程化的方法提升系统的稳定性和效率,减少人为错误,确保服务的高可用性。这对于大规模分布式系统尤其重要,比如互联网公司的在线服务。</think>$$ \text{SRE工程师} = \text{软件工程} + \text{运维实践} $$ ### 1. 基本定义 **SRE**(Site Reliability Engineering,站点可靠性工程)是由Google在2003年提出的概念,核心目标是**通过软件工程方法解决运维问题**,确保大规模分布式系统的**可靠性、可扩展性与效率**。 ### 2. 核心职责 | 领域 | 具体内容 | |--------------|--------------------------------------------------------------------------| | **系统可靠性** | 保障服务SLA(如99.99%可用性),设计容错机制,实施混沌工程测试 | | **自动化** | 用代码替代人工操作(如部署、监控、故障修复),典型工具包括Ansible、Terraform | | **监控与告警** | 构建指标监控体系(如Prometheus+Grafana),定义合理的告警阈值 | | **事故管理** | 执行On-Call轮值,主导故障排查与恢复,编写事后分析报告(Postmortem) | | **容量规划** | 通过负载测试与数据分析,预测资源需求并优化成本 | ### 3. 关键技术栈 - **编程语言**:Python/Go(自动化脚本、工具开发) - **云平台**:AWS/GCP/Azure(基础设施管理) - **容器化**:Docker+Kubernetes(微服务编排) - **监控体系**:Prometheus(指标收集)、ELK(日志分析) - **CI/CD**:Jenkins/GitLab CI(持续集成与交付) ### 4. 核心方法论 1. **错误预算(Error Budget)** 公式:$$ \text{错误预算} = 1 - \text{SLA目标} $$ 例如:当SLA为99.9%时,允许的年故障时间为$$ 365\times24\times60 \times 0.1\% \approx 525.6 \text{分钟} $$ 若预算耗尽,则暂停新功能开发,优先修复稳定性问题。 2. **黄金指标(Four Golden Signals)** - 延迟(Latency) - 流量(Traffic) - 错误率(Error Rate) - 饱和度(Saturation) 3. **Toil消除** 定义重复性手动操作为"Toil",要求通过自动化将Toil占比控制在50%以下。 ### 5. 与DevOps的关系 $$ \text{SRE} \subset \text{DevOps} $$ SREDevOps理念的工程化实践,强调: - 开发与运维共享责任 - 通过指标量化系统状态 - 将运维经验抽象为可复用的代码 ### 6. 职业发展路径 ``` 初级SRE → 中级SRE(专精领域如网络/存储/安全)→ 资深SRE/架构师 → 技术管理者 ``` ### 7. 典型工作场景示例 **问题**:某服务凌晨突发CPU使用率飙升 **SRE处理流程**: 1. 接收告警并确认影响范围 2. 登录监控平台分析指标(如火焰图、日志关联) 3. 发现是代码热更新导致的内存泄漏 4. 执行预案:回滚版本 + 扩容临时实例 5. 提交修复代码并完善监控规则 6. 组织复盘会议更新Runbook ### 8. 学习资源推荐 - **书籍**:《Google运维解密》《SRE实战手册》 - **认证**:Google Cloud Professional SRE、AWS Certified DevOps Engineer - **实践**:通过CNCF项目(如Kubernetes)参与开源社区运维 SRE工程师本质是**系统稳定性的守护者**,需要持续平衡创新速度与系统风险。随着云原生技术的普及,该角色已成为支撑现代IT架构的关键岗位。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值