后端如何减少生产问题以及如何处理生产问题

后端如何减少生产问题以及如何处理生产问题

事前--如何减少生产问题

  • 开发多做单元测试,自测。

提前做单元测试,能够及早发现问题。

  • 哪怕只是很小的改动,也要测试回归

有些研发同事,优化了代码,以为只是很小的改动,引发了生产问题。

哪怕只是很小的改动,也要测试回归!避免好心办坏事。

  • 功能测试之后,最好提前在预发布环境,再测试一遍。

如果代码分支合并错误,或者是没有合并,能够提前发现,避免代码遗漏。

  • 产品一定要验收。

产品同事如果不验收,那开发出来的功能,不一定与产品期望的一致。

  • 发布到测试环境之前 / 部署到预发布环境之前,最好找写过相关代码的同事Code Review。

提前 Code Review,尽早发现问题。

  • 核心流程,最好打日志。

生产问题发生时,如果有日志,能够大大提高定位问题的效率。

  • 上线之前,加上日志监控。

加上监控,提前发现问题。不要等用户反馈了才去解决生产问题。

  • 发版前发布评审checkList, 发版后功能回归 checkList。

发布评审checkList ,检查sql脚本、配置、代码分支、服务。

发版之后的 功能回归 checkList,检查核心功能是否正常。

事中--如何解决生产问题

  • 尽快解决,能临时处理就先临时处理

有些问题,可以通过sql脚本先处理的,就先用脚本处理。

  • 修复后测试再上线

修复之后,测试通过再上线。避免出现其他问题。

  • 短期无法修复的看能否先回滚代码

在发布了新功能后,发现生产问题,无法立即修复的,先回滚代码。

  • 其他模块是否会有类似的问题

某一条数据、某一个功能出现问题,要查看下其他的数据 / 功能会不会有类似的问题。

事后--如何避免问题再次发生

  • 复盘

总结生产问题发生的原因,如何避免再次发生。

  • 监控

发生过生产问题的,要补充日志监控。

生产问题发生的原因

  • 没有考虑数据量。

数据量越大,越要小心。设计时注意数据表的字段是否需要加索引、是否需要分库分表等。

  • 没有考虑并发。

考虑高峰期的并发场景,接口是否需要加缓存, 是否需要加分布式锁等。

  • 没有兼容处理历史数据。

比如数据表新增一个字段,字段规定不能为空,而历史数据没有这个字段,导致历史数据报错。

或者是历史数据的类型为A,新功能将类型修改为B,没有兼容处理历史数据,导致历史数据执行报错。

可以给数据表的字段加上默认值,或者代码兼容字段,或者根据不同的日期执行不同的逻辑(慎用)。

  • 没有考虑边界条件。

最大值、最小值、负数之类的边界条件。

特殊的值,比如为空、为0之类。

相关推荐
num_killer38 分钟前
小白的Langchain学习
java·python·学习·langchain
期待のcode1 小时前
Java虚拟机的运行模式
java·开发语言·jvm
程序员老徐1 小时前
Tomcat源码分析三(Tomcat请求源码分析)
java·tomcat
a程序小傲2 小时前
京东Java面试被问:动态规划的状态压缩和优化技巧
java·开发语言·mysql·算法·adb·postgresql·深度优先
仙俊红2 小时前
spring的IoC(控制反转)面试题
java·后端·spring
阿湯哥2 小时前
AgentScope Java 集成 Spring AI Alibaba Workflow 完整指南
java·人工智能·spring
小楼v2 小时前
说说常见的限流算法及如何使用Redisson实现多机限流
java·后端·redisson·限流算法
与遨游于天地2 小时前
NIO的三个组件解决三个问题
java·后端·nio
czlczl200209252 小时前
Guava Cache 原理与实战
java·后端·spring
yangminlei2 小时前
Spring 事务探秘:核心机制与应用场景解析
java·spring boot