如何成为一个系统/服务/模块的owner
2015-10-11 23:02
337 查看
(本人表示任重道远,惭愧)
基本技能:各种应用技术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替代 注重降低运维成本: 一些琐事:机器申请、磁盘日志清理、自动重启等 |
相关文章推荐
- 进行EDM营销的两个必须注意的关键点
- MySQL学习笔记2:数据库的基本操作
- Windows用命令行修改ip地址以及wifi热点建立过程
- ScrollView相关属性
- 栈的基本操作模板类,包括栈的压入,出栈,删除栈顶元素,清空栈等操作
- lightoj 1145 Dice (I) (DP)
- ZOJ Problem Set - 3512Financial Fraud
- 2011年NOIP提高组 聪明的质检员
- 重置Ubuntu 14.04中的Unity和Compiz
- js学习笔记_函数返回值
- 学习小结20151011--音频视频
- 软件测试
- 使程序默认以管理员权限运行(包括注册表修改法)
- 堆、栈面面观
- 表达式生成问题
- 从c到c++<三>
- javaIO中的类使用方法
- HDU - 2612 Find a way(15.10.10 搜索专题)bfs
- Sql存储过程中判断某个数据表的某一行的某列的值是否为NUll
- [PAT (Advanced Level) ]1003. Emergency 解题文档