概述
最近接手的项目、带领的团队人员越来越多,为了保证项目可预期上线,需要有一套方案统筹所有人的意识,因此专门编写此文档,针对项目初期、开发中、上线后做出相关的规范。
新项目开始的准备工作
- 安装基础 packages, 提高开发效率;
- 创建 Migration 和 Seeder, 统一所有开发者的本地环境;
- 编写环境部署文档, 方便后来人加入开发;
- 使用项目所属的
官方账号
注册第三方服务; - 项目开始前, 再多花一天时间寻找有没有可以加速开发的 package 包, 提高开发效率.
保持服务器稳定性
开发阶段, 服务器使用最小资源配置, 不要使用平台提供的各种 IAAS 服务。上线后, 要根据实际情况扩展服务器性能, 如增加负载均衡, MYSQL 主从,并且还要完善以下工作:
- 添加服务器监控 (Bugsnag, 监控宝,sentry);
- 备份数据库, 并能快速的回滚到某个备份阶段;
- 服务器做好镜像, 能快速回滚;
- 做好负载均衡, 增加服务器的负载能力;
开发原则
服务器代码开发需要遵循一个原则 -- KISS (Keep It Sample And Stupid)
- 不要使用 Repository 设计模式, 减少代码的复杂度;
- Route 和 View 必须遵循 Restful 设计规范;
- HTML 代码不要使用 PHP 生成, 减少前端开发人员工作量;
- 统计代码要直接写在页面里, 不要通过读取数据库生成, 减少前端开发人员工作量;
- 在本地开发环境, 默认 id 为 1 的用户为管理员账号, 并且无需账号密码即可登录, 减少调试工作;
生产环境服务器部署原则
- 必须使用 Ubuntu 16.06 LTS 版本,并使用Ubuntu 14/16 下的 Laravel LNMP 线上环境自动部署脚本安装。
- 统一 alias,运行
vi ~/.bashrc
命令,配置以下 alias
alias cdproduction='cd {生产环境地址}'
alias cdstaging='cd {测试环境地址}'
#例如
alias cdproduction='cd /var/www/redbang.cn/production'
alias cdstaging='cd /var/www/redbang.cn/staging'
上线之前必须检查的内容
- 产品是否能够正常安装、注册、使用?
- 使用的第三方服务的账号或者 API key 是否已经切换到生产环境?
- 错误异常报警和监控系统是否添加?
- 测试数据是否需要移除,如果需要的话是否已经清除完毕?
- 上线的时间点和方式是否已确认?
- 确认工程师的时间安排?(保障线上 bug 的及时修复)
- 线上环境是否已准备好?
- 提交到应用市场的申请资料是否齐全?
- 数据库是否已经做好备份?