运维 Travis CI 网站:从删库到跑路

nouse · 2018年04月10日 · 最后由 nouse_sb 回复于 2018年05月15日 · 7566 次阅读

Travis CI 网站在 4 月 3 日发生了一起数据库删库导致的 outage,细节:https://blog.travis-ci.com/2018-04-03-incident-post-mortem

Root cause 如下:

  • 生产服务器上跑测试
  • 该测试不是自动化的
  • 生产服务器除了生产数据库之外还有测试数据库
  • 跑测试的工程师在窗口中设置了 database url 到生产数据库跑了别的任务,结果该测试跑在了生产数据库。

根据现在流行的 devops 理念,不应该区分生产数据库和测试数据库,在生产环境跑测试也应该针对的是生产数据库,不知道大家有什么看法?

附加: 数据恢复后,一些用户发现登录到其他用户的账号,原因是登录的 token 存在浏览器的 local storage,数据恢复后关联到了错误的用户 record,疑似是用 id 关联,且加密 token 的 key 并没有过期时间。

根据现在流行的 devops 理念,不应该区分生产数据库和测试数据库,在生产环境跑测试也应该针对的是生产数据库,不知道大家有什么看法?

谁说的……

首先在生产服务器跑测试就很奇怪。 其次生产服务器的代码包含测试用的 gem 也很奇怪。 还有就是生产服务器上还有一个测试数据库。

深层次的问题:哪些人应该可以登录生产服务器?哪些人可以操作生产服务器的数据库?

不是可以根据环境变量读数据库么。。。

讲个跟 Rails 无关的事情,有一次我下载了 Swift 的网络库 https://github.com/Alamofire/Alamofire/issues/1512 跑了一下测试,它就把我的 Mac 搞炸了……

还敢在生产环境上面跑测试,也是心大。似乎也证明了 Travis CI 的管理有多混乱……

今天看到 Travis CI 在 database_cleaner 上提的Safeguard PR了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号