六点要点
保持简单并消除不一致
- 无状态的、事务的(stateless、scalable)
- 单一代码库 (Codebase -> Deploys)
简单地观察和干预内部行为
- 日志级别 (trace、debug、info、warn、error、fatal)
- 结构化日志 (bunyan、winston)
- 时序数据和图表(Grafana)
- 时序数据(InfluxDB)
- 通过环境变量管理配置
- exports.LISTEN = process.env.LISTEN || 3000
- 出了问题要有办法发现
- self-check
- yield []
- Promise.all []
- 错误收集(Sentry、raven)
- self-check
- 操作自动化
- Why
- 保证一致
- 节省时间
- 可重复
- 可复用
- How
- 依赖(package.json)
- 数据库变更(db-migrate)
- 系统环境(Dockerfile)
- 构建、测试和发布(CI)
- 其他自动化脚本
- Why
- 尝试从错误中自动恢复
- 数据一致性修复任务(MySQL MongoDB Redis Cache)
- 划清组件之间的界限
- 守护进程(重启)
- 负载均衡(Https、IP限流)
- 日志(写入文件、轮转he )