一个技术主管的工作职责
开发规范
开发流程
技术规划
管理
开发任务分解分配
开发实践
技术架构评审
代码审核
风险识别
开发规范
命名规范
统一IDE代码模板
IDEA插件Eclipse Code Formatter
Maven使用规范
二方、三方包版本全部有parent pom管理
代码Commit规范
基于Angular Commit Message规范生成统一的ChangeLog,这样一来对于每次发布release tag非常清晰,Mac下都需要安装对应的插件,IDEA也有对应的插件,具体可以参考阮一峰老师的《Commit message 和 Change log 编写指南》。
统一API规范
(success代表接口处理响应结果成功还是失败,errorCode、errorMsg表示返回错误码和错误消息,module表示返回结果集,把ResultDTO定义到common-api顶层二方库,这样以来各个应用不需要来回转换返回结果。Http Rest接口规范约定同ResultDTO相差无几,需要额外关注一下加解密规范和签名规范、版本管理规范。)
异常处理规范
BusinessException、RetriableException(幂等性)、common-api、异常拦截器
方法内异常自我消化处理:
直接返回
抛出异常
重试处理
熔断处理
降级处理
使用Netflix开源的hystrix容灾框架进行弹力设计,解决异常熔断、超时熔断、基于并发数限流熔断的降级处理。
分支开发规范
分支的定义(master、develop、release、hotfix、feature)
分支命名规范
checkout、merge request流程
提测流程
上线流程
Hotfix流程
统一日志规范
日志脱敏(比如自定义实现logback的ClassicConverter)
《阿里经济体开发规约——日志规约》
统一MYSQL开发规范
统一工具与框架
开发流程
瀑布开发模式(需求评审、测试用例评审、技术架构评审、开发与测试、验收与上线)
需求管理、技术架构评审、代码评审、发布计划评审
需求管理
技术架构评审
敏捷迭代、日志审计
技术选型
高性能
高可用
可扩展性
可伸缩性
弹性处理
兼容性
安全性
可测性
可运维性
监控与报警
代码评审
代码质量包括功能性代码质量和非功能性代码质量
CodeReview:
确认代码功能
编码规范
潜在的BUG
文档和注释
重复代码
复杂度(如圈复杂度)
监控与报警
测试覆盖率
发布计划评审
各环境配置信息是否存在差异化;
数据库是否有表和数据的变更;
是否有二方、三方的jar包、接口等依赖,确认各应用和服务的发布顺序,包括内部和外部,提前协调好相关人员和业务方;
回滚计划,如果某些发布不可逆,确保限流降级等容灾计划;
发布完毕后的回归测试
技术规划与管理
系统健康度巡检
系统指标:系统CPU、负载、内存、网络、磁盘有无异常情况波动,确认是否由发布导致,还是系统调用异常。
慢接口:通常rt大于3s的接口需要重点关注,极端并发场景下容易导致整个系统雪崩。
慢查询:MYSQL慢查询需要重点关注,随着数据量上涨,需要对慢查询进行优化。
错误日志:通过错误日志去发现系统隐藏的一些bug,避免这些bug被放大,甚至极端情况下会导致故障。
技术规划
架构优化(高内聚低耦合、单一职责原则、模块化/服务化)
性能优化
弹性与可靠性
可伸缩性
总结
大局观
业务发展趋势
技术演进趋势(架构能力)
良好的管理能力
执行力、学习能力、解决问题的能力