投产
您是否想知道“在将项目投入生产之前我应该做什么?”。
以下是您在上路之前要解决的问题列表:
服务器端清单
这是 Web 应用程序服务器端的清单。
合法的
我的应用程序的第 3 方依赖项的许可证没有被违反
我的应用程序没有违反密码学政策和法律
我的应用符合组织标准
弹性
我的应用程序可以单独保留合理的功能
我的应用程序可以从重负载中恢复
我的应用程序可以重新建立所有丢失的连接
我的应用程序不能导致级联故障在系统中传播
负载均衡
我的项目可以在多个 CPU 上运行
我的项目可以在负载均衡器后面运行
我可以在不停机的情况下添加新节点
透明部署
我可以在不停止应用程序的情况下添加新节点
我可以添加一个新节点而不会丢失/破坏用户会话
我可以对我的服务进行滚动升级
监督
我的应用程序可以在服务器重启后继续存在
崩溃后我的应用程序自动重新启动
日志记录
我的应用程序记录所有错误(甚至“吞下”)
我的应用程序生成日志输出到旋转文件
不同日志级别的流相互分离
我的日志被聚合到日志分析服务
监控
- 我已经配置了异常活动的警报
应用程序重启事件
达到错误率阈值
服务器资源即将耗尽(CPU、内存、IO > 90%)
HTTP 请求超时
带有 500 个状态代码的 HTTP 响应
- 我对系统的所有部分进行了健康检查
指标
随着时间的推移,我可以从我的应用程序中观察到不同的事件
端点请求数
端点请求的持续时间
业务逻辑操作的持续时间
高可用性
我可以在不同的独立数据中心运行我的服务
测试
我已经为我的应用程序进行了压力测试
我已经为我的应用程序执行了网络分区测试
备份
我可以从备份中恢复我的所有数据
安全
我已经针对 OWASP 十大漏洞审核了我的系统
我对所有端点使用 TLS
我已向应用 HTTP 端点添加了相关的安全标头
X-Frame-Options
X-Content-Type-Options
内容安全策略
X-XSS-保护
严格的运输安全
公钥密码
单页应用程序清单
这是一个基于浏览器的 Web 应用程序的清单,没有后端或具有 3rd 方后端。
合法的
我的应用程序的第 3 方依赖项的许可证没有被违反 我的应用没有违反密码学政策和法律 我的应用符合组织标准
无障碍
我的应用可以访问 颜色和对比度对色盲友好,或者可以切换到高对比度模式 我的应用对屏幕阅读器友好 我的应用有键盘导航
部署
我的应用由 CDN 或无 cookie 的子域提供 我的应用程序为静态资产提供永久缓存标头 我的应用静态资源被 gzip
加载优化
我的应用程序可以并行加载它的资产(css、图像和脚本) 我的应用程序使用图标精灵 我的应用没有达到每个主机的浏览器 HTTP 请求限制 我的应用程序从 CDN 加载所有知名的 javascript 库
版本控制
我的应用程序实现了缓存破坏(资产、对象缓存等)
资产
有一个 404 页
有维护页面
图像支持 HDPI 屏幕(Retina 等)
测试
我的应用程序没有内存泄漏
我的应用以高分通过了性能测试
页面速度
慢 Chrome 开发工具审核
我的应用加载时间不到 3 秒
调试
缩小的 JavaScript 文件包含源映射的 URL
抛出的异常被处理并传递到存储(Sentry、Track.js 等)
错误存储过程sourcemaped文件
追踪
我的应用收集有关使用行为的指标
安全
我已针对以下内容审核了我的系统:
OWASP 十大漏洞
天文台
securityheaders.io
参考资料
https://github.com/mtdvio/going-to-production