sre是什么意思
原因一:企业成本的增长同用户的增长不成线性变化。但是随着系统的复杂度提升,组建越来越多,用户的流量压力也越来越大,相关的变更也会越来越多,各模块之间的变更顺序也会越来越复杂。在这样的情况下,单纯的靠运维人力的数量提升无法满足业务的发展需求,而且会提升企业的成本;
原因二:传统的研发团队和运维团队天然具有冲突。公司的IT人员的配置:研发(Dev)和运维(Ops),研发部门聚焦在快速构建和快速发布;运维部门关注的是如何避免发生故障,从目标上讲就是矛盾的。且随着 IT 技术的发展,对 IT 从业者的要求也越来越高,既要懂得底层系统,也要懂得数据算法,同时对主流技术还要快速追赶,满足这样要求的人才太少;
原因三:生产工具为适配生产力发展的必然产物。为了提高IT行业的整体效率和质量,使得从手工运维时代,逐渐过度到脚本工具运维,在发展到平台数据运维,再到平台软件运维,在发展到智能自动化运维。通过一系列手段、工具、理念的进步,将 Ops 技术发展到 DevOps、DataOps、AIOps 等;
首先,sre为什么会诞生?
原因一:企业成本的增长同用户的增长不成线性变化。但是随着系统的复杂度提升,组建越来越多,用户的流量压力也越来越大,相关的变更也会越来越多,各模块之间的变更顺序也会越来越复杂。在这样的情况下,单纯的靠运维人力的数量提升无法满足业务的发展需求,而且会提升企业的成本;
原因二:传统的研发团队和运维团队天然具有冲突。公司的IT人员的配置:研发(Dev)和运维(Ops),研发部门聚焦在快速构建和快速发布;运维部门关注的是如何避免发生故障,从目标上讲就是矛盾的。且随着 IT 技术的发展,对 IT 从业者的要求也越来越高,既要懂得底层系统,也要懂得数据算法,同时对主流技术还要快速追赶,满足这样要求的人才太少;
原因三:生产工具为适配生产力发展的必然产物。为了提高IT行业的整体效率和质量,使得从手工运维时代,逐渐过度到脚本工具运维,在发展到平台数据运维,再到平台软件运维,在发展到智能自动化运维。通过一系列手段、工具、理念的进步,将 Ops 技术发展到 DevOps、DataOps、AIOps 等;
由此,sre 应运而生。
那么,sre具备怎样的能力才让企业迫切需要这类人才呢?
Google 试从解决 Dev 和 Ops 之间的矛盾出发,雇佣软件工程师,创造软件系统来维护系统运行以替代传统运维模型中的人工操作。SRE 团队和产品研发部分在学术和工作背景上非常相似,从本质上将,SRE 就是在用软件工程的思维和方法论完成以前由系统管理员团队手动完成的任务。
SRE在Google不负责某个服务的上线、部署,SRE主要是保障服务的可靠性和性能,同时负责数据中资源分配,为重要服务预留资源,SRE并不负责某个业务逻辑的具体编写,主要负责在服务出现宕机等紧急事故时,可以快速作出响应,尽快恢复服务,减少服务掉线而造成的损失。
一般来说,SRE团队要承担以下几类职责:可用性改进、延迟优化、性能优化、效率优化、变更管理、监控、紧急事物处理以及容量规划与管理。
在减少资源消耗的同时,从可用性和性能层面,提升用户的体验。
具体而言,需要具备以下几方面的能力:
深入立即开发语言(Java/Golang等)
容量管理
Tracing 链路追踪
Metrics 度量工具
Logging 日志系统
Linux 精通,理解 Linux 负载模型,资源模型
熟悉常规中间件(MySQL Nginx Redis Mongo ZooKeeper 等),能够调优
Linux 网络调优,网络 IO 模型以及在语言里面实现
资源编排系统(Mesos / Kubernetes)
机器学习中相关理论和典型算法
熟悉分布式理论(Paxos / Raft / BigTable / MapReduce / Spanner 等),能够为场景决策合适方案
资源模型(比如 Queuing Theory、负载方案、雪崩问题)
资源编排系统(Mesos / Kubernetes)
语言和工程实现
业务部门使用开发框架
并发、多线程和锁
资源模型理解:网络、内存、CPU
故障处理能力(分析瓶颈、熟悉相关工具、还原现场、提供方案)
常见业务设计方案,多种并发模型,以及相关 Scalable 设计
各类底层数据库和存储系统的特性和优化
问题定位工具
运维架构能力
理论
对于企业而言,这些都将是非常重要的能力。