1) 技术能力
a.研发能力
业务团队的SRE首先要具备研发能力,以弹性计算SRE为例,我们会负责业务公共基础组件比如工作流框架、幂等框架、缓存框架、数据清理框架等业务中间件的研发,研发能力是基础。
b.运维能力
SRE是运维在DevOps发展进程中进化而来,无论是手动运维,抑或自动化运维,都需要SRE具备全面的运维能力。在弹性计算团队,SRE负责了生产环境(网络、服务器、数据库、中间件等)的稳定性保障工作,在日常on-call与故障应急工作中,运维能力必不可少。
c.架构能力
SRE不仅要关注业务当前的稳定性与性能,同时要以未来视角对业务进行容量与性能的规划,这一切都建立在对业务系统架构熟知,并具备优秀架构设计能力的基础之上。作为弹性计算的SRE,有一项重要工作就是对技术架构作为未来规划,并提供可执行的Roadmap。
d.工程能力
这里的工程能力主要指软件工程的落地能力以及反向工程能力,首先SRE必须具备软件工程的思维,具备大型软件工程的可落地能力。另外,SRE核心的日常工作之一是稳定性问题以及疑难杂症的处理,反向工程能力在分布式系统规模化下的异常问题排查起到关键作用,尤其在处理陌生问题方面。
2) 软技能
a.业务能力
不懂业务的SRE是不合格的SRE。尤其是业务团队的SRE,只有在熟悉业务技术架构、发展状况、甚至是业务模块细节的情况下,才能更好的开展诸如架构规划、故障排查工作。以弹性计算SRE为例,必须要熟悉当前弹性计算的业务大图以及后续的发展规划,甚至是核心模块的业务逻辑也必须做到心中有数。
b.沟通能力
作为一名工程师,毫无疑问沟通能力核心的软技能之一。对于SRE来言,需要参与的大部分工作都是跨团队甚至是跨BU的,沟通能力显得尤为重要。在弹性计算团队,作为SRE对内我们要与多个业务兄弟团队紧密沟通协作,保障业务稳定性;对外,要与集团统一的研发平台、基础运维、监控平台、中间件、网络平台等多方团队进行核合作,甚至会走向一线直接面对外部客户,此时谈沟通能力与沟通技巧再重要也不为过。
c.团队协作
SRE要非常重视团队协作,尤其在故障应急上,要协作多方团队,紧密合作,降低故障MTTR。而在日常工作中,SRE要积极协同业务团队以及外部依赖团队,主导并推动稳定性相关工作的落地。
d.项目管理
SRE的工作技术复杂度和事务繁琐度更高,加上日常的on-call和Firefighting,如何保障所有工作可以有条不紊的健康运作,从团队角度看,项目管理非常重要;从个人角度看,时间管理极具价值。仍然以笔者所在的弹性计算SRE团队为例,为了保障稳定性体系的快速落地,在过去一年我们进行了多个小型项目的攻坚,效果甚佳。当前我们正在以虚拟组织、长期项目的方式进行管理运作。
3)思维模式
前面提到了SRE要具备的两项软技能包括团队协作、及工程能力,与此同时需要SRE人员从思维模式上进行转变升华,比如逆向思维、合作意识、同理心、随机应变。
3.3 SRE核心理念
以下是笔者自己的从业心得,个人认为的SRE核心理念:
- 软件工程的方法论解决生产系统稳定性问题。
- 自动化一切耗费团队时间的事情。
- 稳定性就是产品。
- 团队协作与赋能是关键。
- 没有银弹,寻求适合业务与团队的解决方案。
- 优先做最重要的20%,解决80%的核心问题。
3.4 SRE精神
舍我其谁,SRE要有强烈的责任意识与使命感,作为稳定性的守护者,在团队协作过程中,要做到无界担当,一杆到底。
- 敢于挑战,包含两层含义,其一,SRE要坚守稳定性底线,对于任何与之相悖的行为敢于说不;其二,要以未来视角看待问题,要善于创新,勇于挑战。
- 敬畏生产,SRE是生产环境的守护者,更是破坏者。组织赋予了SRE最大的生产变更权限(给予了SRE最大的自由),这其实更是一种责任,SRE要比任何人都心怀敬意,拒绝一切侥幸行为。
- 拥抱风险,无论如何专业与谨慎,故障一定会发生。作为SRE要有学习从风险中学习的精神,科学的正视风险,通过不断的学习风险应对,来避免失败。
写在最后
在信息爆炸的时代,技术的发展可谓日新月异,技术人不仅要保持对技术对热情,也要具备思考力,没有放之四海皆准的方案,只有因地制宜、因时制宜的方案。无论如何,从现在开始行动,前路慢慢,上下求索。
作者:竹涧
本文为云栖社区原创内容,未经允许不得转载。