SRE team的第一课
本文将与大家分享一些新加入SRE团队时应该考虑的问题。无论你是刚加入一个SRE团队的新人,亦或是公司的第一位SRE(Ops/Techops/DevOps)。笔者也曾经历过这个阶段,并尝试了很多方法去理解公司SRE当时的情况以及确定下一步行动的方向。
我把它分成了几个阶段。大家可以整体来看或者在对应的时间看自己符合的那一部分,然后对它们更加了解。如果立刻照此执行,那么将对你在新公司取得成功有所帮助。这些条目处于一个较高层级,我们可以把它们更加细分。想法从这里开始,由你的好奇心决定深入执行的程度。然而,不要在兔子洞掉得太深……可能会迷路哦。
阶段1-新入团队,打个招呼
- 尽量地与大家多进行沟通交流,了解他们对于当前系统状态的想法
- 尽可能地思考更多有关团队的问题,了解每个团队希望达成的目标
- 找出所有目前系统中大家的痛点
- 询问每个团队:如果有一处可以改进,那它是什么?
- 找到团队里资格最老的成员,然后让他们讲出团队里一些不为人知的秘密
- 做笔记!!!这一条如何强调都不为过。尽管你很聪明,但是把东西记下来是通向成功的关键
- 弄清楚你和你的团队预期的是什么,都有哪些支持
阶段2-了解物理/虚拟设备
你需要了解的物理/虚拟设备包括:
设备规划
- 云、物理机还是混合式?
- 托管主机or自有主机?
- 硬件类型&供应商(底盘,CPU,内存,磁盘,网络等)
操作系统设计
- OS发行版&版本
- 基础or定制驱动?
- OS/内核调谐
- 包
- 自定义编辑库(如果有)
- 自定义OS微调(如果有)
基础设施服务
- 文件当前状态
- 监控系统
- 配置管理(如果有)
- 通用基础设施工具(例如DNS,DHCP,PXE,LDAP)
- 基础设施工具(用户服务&工具)
- Github/Gitlab/SVN工作流(团队repo,CI/CD等)
- 部署机制
- 外部工具依赖
- 应用团队所使用的数据库/队列/服务
阶段3-了解应用/服务
你需要了解的应用/服务包括:
应用/服务当前状态
- 应用数量(有多少不同的app)
- 应用类型(这些app在做什么)
- 环境语言
- 依赖栈
- 文件的当前状态
- 应用监控
- 应用环境中的常见问题
- 宕机待命和扩展策略(如果有)
应用/服务未来需求
- SRE团队组织的期望
- 需要的新技术
- 可以做的改进架构调整
阶段4-开始工作!
- 改进/实现当前设施的状态和架构
- 改进/实现环境部署(物理机或者虚拟机)的进程
- 改进/实现环境中服务的工具
- 改进/实现配置管理
- 改进/实现软件部署的最佳实践
- 改进/实现团队外部(技术&非技术岗)的人际关系
- 改进/实现尽可能多你可以为公司目标带来好处的方面
最终的阶段总是最有趣的。这时你已经收集到了足够的信息,可以将你基于公司环境的想法付诸实践。虽然现在并不是所有人所有事都遵从你的建议,但是都在往预期的方向发展。作为团队成员,大家的做法都是有依据的,他们按照自己的想法以一定的方式来执行。无论它是否对你有意义,你都不应该嘲笑或者贬低他们的决定。对于那个时间点的他们来说可能已经做得足够好,这时你应该根据过去的经验和知识为他们提供改进的意见和建议。
你的到来是因为公司认定你会带来价值。然而许多人就职SRE以后往往被无视了,因为还没有真正理解之前就开始抱怨,并不能实现他们应有的价值。笔者也在努力让这种事情不再发生,大家通力合作,共建一种更好的技术文化。