软件发布实战 -- 沟通

沟通在任何一项团队活动中都非常重要, 下面的一个例子发生在我们的一次发布中.

这次我们对数据库进行了重构, 将原来的一个大表拆分成若干小表, 那么除了做表结构的迁移,还需要做数据迁移, 因为在产品环境中已经存在了一些数据.

产品环境的数据还算比较干净, 针对这种理想状态数据的迁移, 我们使用存储过程很快实现. 但是在QA环境和Staging环境中, 由于有各种测试, 而且这些数据从几个月前很早的版本中就写入了数据库. 为了让迁移脚本更加强壮,保证产品环境万无一失, 又经过反复的修改, 终于可以随意的迁移,回滚,再迁移.

但是事情没有想象的那么顺利. 在上线的时候发现 产品的数据库不支持新建和执行存储过程. 这是我们从来没有考虑过的.一切的基础设施能力都是我们自己的感觉. 现在只有两种方案:

  1. 修复产品数据库存储过程的问题. 这不是我们可控的, 而且对ops团队来说, 这件事优先级可能会非常低, 需要极大的推动. 而且这次肯定无法上线

  2. 丢弃我们的产品数据. 听起来很荒谬, 但是去问了producer, 却得到了非常轻松的答案, 我们产品两个月后上线真正开始销售时会把整个遗留数据都清除一边. 所以现在可以不用保留. 这样的答案听起来轻松的一点是解决了所有的问题, 但汗颜的是我们花了几天的时间做了一个完全无用的工作, 如果在做之前询问一下是否需要保留这些数据, 那么前面的工作就会轻松许多.

所以软件发布中也需要足够的沟通, 除了BA, Dev, OPs, 还有producer.

comments powered by Disqus