Responsible Rails 读书摘要

..

断断续续看完了 Responsible Rails 这本小书,蛮喜欢这本书的主题,讲 Production 上的实操问题。

可惜内容作者没有完全写完,里面还留着很多 (TODO),不过还是有一些不错的出错倒站故事跟心得就是了。

一些摘要:

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


想在手机阅读更多Ruby on Rails资讯?下载【香港硅谷】Android应用
分享到Facebook
技术平台: Nasthon Systems