断断续续看完了 Responsible Rails 这本小书,蛮喜欢这本书的主题,讲 Production 上的实操问题。
可惜内容作者没有完全写完,里面还留着很多 (TODO),不过还是有一些不错的出错倒站故事跟心得就是了。
一些摘要:
- 强调 Responsible Software Developer 的重要性
- 软件开发的整个流程,到实际部署给 end-user 后,又是新的世界: 各种 bugs、意外倒站、DevOps 问题等等
- Say No! To regressions 以及要专业处理 bugs, failure 和各种意外
- Production 的意外处理
- 要立即让相关人等知道情况
- 给出预估修复时间
- 事后 post-mortem 分析
- 对外的 integrations 要纪录所有 input 和 output,有助于事后分析
- 除了 happy path,也要问客户什么是 business-critical failure paths,要重点处理
- 各种 Service 的 integration 要 fail fast, 要设定 timeout
- 关于 Domain Event (也适用于API设计) 小心修改、Mutable messages 是 anti-pattern、传递 generic attributes 也是 anti-pattern
- MySQL 要用 utf8_bin,这样字串比较才会精准
- 网络相关的 integration 应该要考虑拆开或其他容错处理,例如用 background job, 设定 timeout, 用 service object 包错误处理等
- 作者碰到的问题是 Elastic Search 因为 AWS 挂了,造成全站都挂。但理想上应该只影响 全文搜寻 就好
- 推荐读 Release It! 这本书
- 推荐可用 feature flag 来做 高频次的小变更部署,提早发现错误,要修复也快
- External JS 会拖慢 CI,在 capybara 里面有设定可以关掉
- 记得加 DB indexes,作者有次跑 rake script 跑了 20hr,加了 index 后只要几分钟
- 写 Script 显示完成百分比没用,建议多显示每处理 1000 笔花了多久时间
- 小心套件升级: 可能会有 bug,若不急可以等等。即时是安全性升级也可能有 bug,可以多了解细节再决定要不要赶着升级。
- 删除 production data 要万分小心
- 不要删
- 真的要删,code 请同事帮忙 review
- 把资料搬到别处,而不是直接删除
- 真的要删,先手动备份
- 写验收测试降低 regression 可能性
- 要成为 responsible developer 必须了解 devOps
想在手机阅读更多Ruby on Rails资讯?下载【香港硅谷】Android应用 