这是我参与11月更文挑战的第11天,活动详情查看:2021最后一次更文挑战
前端去开发node服务,面临很多问题,除了常规的知识上的问题(如node原理、运行机制等),更重要的是整体思维的转变问题。
前端项目主要是面向浏览器开发,即应用的运行环境是用户的浏览器,应用本身没什么压力,对应用的稳定性要求较低,较多考虑的是兼容性。而后端的运行环境是公司的服务器,这就决定了后端应用出现的问题绝大部分都是公司的问题,需要考虑稳定性、上下游、运行环境等各方面的问题。
前端开发node服务常见的问题有:
- 对不同环境的差异关注度低,线下跑正常,上线就挂,忽略了不同环境的网络差异、配置差异等
- 对相关工具、库不够了解,很多后端问题可以通过现有工具去解决
- 能跑就行,不关注机器的状态
- 服务出现问题,不知道如何排查
- 对日志不够关注,不会打日志、看日志
- 对性能调优与常见场景的优化访问不了解
针对以上问题,个人认为需要做到以下几点:
- 对服务端开发加深认识,对常见的服务端相关技能有一个初步的认识,如linux、docker、db、消息队列、redis、负载均衡等等
- 了解公司不同环境的隔离问题,对线下线上环境有充分的认识
- 初学者尽量使用较为成型的框架,如Egg、Midway等等,因为成型的框架里各种基础设施比较全面,文档里对常见的问题也有对应的解决方案。这也要求我们对框架有一个较为全面的了解。
- 如果是c端应用上线前需要对应用进行访问量评估及压力测试,因为有些问题只有在大流量的情况下才会暴露出来
- 跟后端及运维沟通,借助一些常见工具记录下程序崩溃的内存、堆栈、cpu等信息,保留程序崩溃的现场方便后续进行排查
- 跟运维沟通,对机器的cpu、内存、硬盘等常见硬件数据进行监控,设置安全水位,有问题及时告警
- 关注日志。区分日志的不同维度,业务日志、错误日志、中间件日志等,区分不同的等级,不要用console.log,可以借助现有的日志采集系统对日志进行统一收集,方便排查