node项目产品化

简介

在阅读《nodejs深入浅出》中“产品化”章节后,在项目编写时所考虑的各个方面有了更加全面的理解,并且了解到项目从开始编写到最终部署服务器需要注意的地方。但是文中未对其中的技术进行拓展性的讲解,我将在未来的几篇文章对其中的技术难点进行解析,欢迎大家阅读。

本篇为入门,使大家了解到“产品化”章节所讲解的内容。

文档参考:《nodejs深入浅出》“产品化”章节。

项目工程化

将各种功能文件分门别类地归类到指定目录中。

项目结构

使用脚手架生成项目结构,了解每个初始文件夹和文件的作用,做到归类。

构建工具

自动化处理重复动作,例如:合并静态文件,压缩文件大小,打包应用,编译模块,代码测试等

linux
Makefile

linux系统下的最常用的构建工具

gulp

gulp是前端开发过程中一种基于流的代码构建工具,是自动化项目的构建利器,支持跨平台。

编码规范

多人编辑代码的时候需要统一编码规范,常用的有 ESLint。

ESLint快速上手:http://www.zmscode.cn/2018/08/25/ESLint快速上手/

代码审查

通过gitlab等开源工具搭建内部的代码托管平台。新功能开发单独开一个分支分出,每次都单独提交到分支,等全部功能开发完后合并到主干,进行代码审核。

审核内容
  • 功能是否正确完成
  • 编码风格是否符合规范
  • 是否具有单元测试

部署流程

部署环境

代码—>stage(测试环境)—>pre-release(预发环境)—>product(线上环境)

  1. 本地开发完成,并且单元测试全部完成
  2. 准备测试环境提供测试人员验证代码正确
  3. 准备更接近线上真实数据,部署预发环境进行测试
  4. 部署线上环境

部署操作

pm2快速上手:http://www.zmscode.cn/2018/08/30/pm2快速上手/

pm2日志管理pm2-logrotat: http://www.zmscode.cn/2018/08/17/pm2日志管理pm2-logrotat/

性能

动静分离

静态文件通过 Nginx 部署,使服务更加专注于动态服务。

Nginx快速上手:http://www.zmscode.cn/2018/09/03/nginx快速上手/

启用缓存

redis

多进程架构

pm2 cluster模式

读写分离

数据库读写分离配置,避免数据写入时候的操作,导致读取的速度受到影响。

日志

访问日志

记录每次请求的url,method,参数,header,ip等

异常日志

异常日志单独输出,通过日志文件可以确定BUG出现位置。

分割日志

避免单个日志过大,影响查询效率。可以根据文件大小或者文件日期对日志进行切割或者回滚。


小结

以下部分一般由运维人员提供支持,不需要太深入的了解。

监控报警

监控

  • 进程
  • 磁盘
  • 内存
  • 响应时间
  • 日志(主要检测异常报警)
  • cpu占用
  • I/O负载
  • 网络
  • 应用状态(提供API让监控程序访问)

报警实现

  • 邮件报警

稳定性,负载均衡

  • 多机器
  • 多机房
  • 容灾备份

 上一篇
ionic简介 ionic简介
前端基础 Angular4.0 TypeScript HTML CSS 简介ionic主要职责是作为 app 的前端UI框架,提供基本的样式以及各种UI组件。 结合Cordova / PhoneGap插件和TypeScript扩展,支持1
2018-08-30
下一篇 
node常用日志模块简介 node常用日志模块简介
简介本文介绍了在 nodejs 服务中常用的日志模块,方便大家选择和快速上手。 log4js下载量:1168793 包含的功能: 能在控制台彩色输出stdout和stderr file appender 可以根据文件大小或者日期时间来配置
2018-08-28
  目录