投产

您是否想知道“在将项目投入生产之前我应该做什么?”。

以下是您在上路之前要解决的问题列表:

服务器端清单

这是 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