如何成为一个系统/服务/模块的owner
2017-01-17 14:35
281 查看
基本技能:
各种应用技术JAVA
、Mysql等;有专攻、有覆盖;
理解计算机工作原理;算法/数据结构;
沟通:态度、理解、表达
工程能力
执行力和自我管理能力
个人认为接手一个服务的一般过程:
第一步:理解系统需求的前世今生(这里需要阅读文档,约谈PM,RD等),最终能一个需求过来能判断是不是服务的边界范围之内
第二步:阅读接手的代码,要求能做到能够画出系统的架构图,清楚依赖方
第三步:从小需求开始,以点带面,包括前端后台到数据库,包括代码的提交到最终的部署上线等等
第四步:对服务的未来规划,推广有自己的方案输出,后续能坚持执行等
各种应用技术JAVA
、Mysql等;有专攻、有覆盖;
理解计算机工作原理;算法/数据结构;
沟通:态度、理解、表达
工程能力
执行力和自我管理能力
个人认为接手一个服务的一般过程:
第一步:理解系统需求的前世今生(这里需要阅读文档,约谈PM,RD等),最终能一个需求过来能判断是不是服务的边界范围之内
第二步:阅读接手的代码,要求能做到能够画出系统的架构图,清楚依赖方
第三步:从小需求开始,以点带面,包括前端后台到数据库,包括代码的提交到最终的部署上线等等
第四步:对服务的未来规划,推广有自己的方案输出,后续能坚持执行等
| 要求 | 内容,或例子 |
---|---|---|
开发 与 实现 | 1.理解业务模型 2.工程模块化管理(要必要的话) 3.代码仓库管理 4.文档输出 | 理解原始需求,判断可行性、代价 比如sinai得业务服务的边界,服务只管信息的聚合,并不着重检索。 业务建模: 完整、准确的把产品需求转换成合理的软件模型。比如sinai分成各个模块,哪些依赖包,真正部署在线上的哪个模块 系统设计、快速实现: 对新的需求评审能力,单独开发能力,能够画出系统的架构图等等 自身管理 代码的模块部署结构,多分支开发、进度控制、代码/资源/对外输出文档管理,对于每个服务应该有自己的文档主页,如sinai的文档给调用放节省了不少RD交流时间 |
质量 与 保证 | 坚持BASE原则, 可用+一致性+分布式 等等。 1.保证功能,3个9还是4个9 2.性能 3.健壮 4.排查问题机制,或是事故处理,或是排查问题处理 5.代码风格 | 功能: 单元测试,junit的覆盖到多少个接口和函数,百分比控制在多少为达标等等 集成测试:现有的checklist是否可接入使用 性能: 单点响应时间,一个总的思想是:对第三方的处理策略(比如兜底策略+快速失败+多久重试机制+...),防备使用方策略(暴露的粒度是多少),做好自己(降级容错等)。。。sinai这块还需加强。 容量可扩展,是否可以容易做到分布式扩容,比如sinai的thrift模块就可以简单分布式扩容,但job模块就比较麻烦 对服务的容量有清晰认识,上限等等 健壮性 外部依赖容错,常见问题:连接池(连接数、超时等),JVM,机器配置等等 程序回滚、数据恢复:比如怎么快速回滚,怎么快速回复脏数据,可hotfix?可否直接操作db去完成? 代码风格 关键的地方代码有注释吗?是否需要代码规范? |
运维 与 简捷 | 1.监控 2.报警 3.部署管理 4.数据库的迁移和备份 5.处理事故 努力做到,对等机房节点配置相同,发布部署方式统一 | 监控/报警/排查、解决问题 监控、展示各种业务、技术数据,上下游是否都加监控,JVM,DB,VM的指标是否添加监控 关键数据一定要有报警机制 注重日志,查问题的关键 监控数据、日志、使用各种命令/工具(如JVM的工具)在线检查状态,这3点基本就能发现绝大部分问题原因 虽然线上数据库有专门的dba搞,但是线下环境我们是否能够做到管理和备份 服务是否能找到backup,事故发生时如果自己时间不允许的时候是否有RD替代 注重降低运维成本: 一些琐事:机器申请、磁盘日志清理、自动重启等 |
相关文章推荐
- 如何成为一个系统/服务/模块的owner
- Delphi编写系统服务四:如何限制系统服务和桌面程序只运行一个
- Delphi编写系统服务一:如何编写一个系统服务
- 如何成为一个web前端,怎样系统的去学习![A篇]
- 如何成为一个web前端,怎样系统的去学习![A篇]
- 如何成为一个web前端,怎样系统的去学习![A篇]
- 如何成为一个Linux系统内核开发者
- 在Github上,如何成为一个为开源服务的园丁
- 如何成为一个web前端,怎样系统的去学习![A篇]
- 《Windows小应用》如何将一个自己download的zip文件安装的程序添加到系统服务中
- 如何成为一个web前端,怎样系统的去学习![A篇]
- 如何成为一个Linux系统内核开发者
- 如何在Windows下手动将Tomcat安装成为系统服务
- 如何成为一个web前端,怎样系统的去学习![A篇]
- 如何成为一个Linux系统内核开发者
- 如何成为一个Linux系统内核开发者(转)
- android—如何添加一个系统服务
- 如何成为一个Linux系统内核开发者(转)
- 如何成为一个web前端,怎样系统的去学习![A篇]