1
kieoo 2019-08-01 11:25:12 +08:00 2
预发布就是为了用生产数据来验证, 不用生产数据预发布没有意义吧, 我是这样理解的
|
2
18258226728 2019-08-01 11:27:34 +08:00 2
1.可以每个表加环境字段,db 层做拦截
2.代码不改就线上做专门的测试数据,测试用户吧 |
3
zyuhung 2019-08-01 11:28:43 +08:00
同意 1 楼的说法,至于“预发布时的验证测试可能会对生产的数据产生一定影响”,这个只能通过权限去控制了,拥有生产环境的数据权限,那同样也有预发布环境的数据权限。
|
4
kumakiti 2019-08-01 11:29:48 +08:00
为啥不选择预发布单独建一个库,每次预发布之前把生产环境的数据库同步到预发布环境的数据库呢?
|
5
misaka19000 2019-08-01 11:32:19 +08:00
预发布啥意思,灰度?
|
6
zyuhung 2019-08-01 11:32:39 +08:00
@misaka19000 代码跑的是新的代码,数据是线上的数据。
|
7
lostpupil 2019-08-01 11:33:39 +08:00
Rails 里面一般都是
test dev production 三个库 所以我建议加上一个 staging 的 数据库 |
8
version 2019-08-01 11:40:22 +08:00 via iPhone
预发布本来就不能有测试数据,如果有支付,找财务报销就好,不然报表出来有得你纠结了
|
9
flyingghost 2019-08-01 12:21:54 +08:00
预发布环境有独立的库,每次发布之前从生产数据库同步+脱敏数据过来。
|
10
corvofeng 2019-08-01 12:46:03 +08:00 via Android
一个系统理论上讲有两个环境:
正式环境(预发布和正式上线) 测试环境(预发布和正式上线) 预发布和正式上线肯定使用的是一套数据库, 是正式环境和测试环境要隔离 |
11
dolphintwo 2019-08-01 13:51:58 +08:00
我们 staging 库含支付转账的,用的是独立的数据库,日常测试就跟用于一样的用
|
12
mineqiqi 2019-08-01 14:07:26 +08:00
灰度跟线上是一个数据库???
|
13
lazyfighter 2019-08-01 14:08:34 +08:00
预发布就是跟生产共用一套数据,为了发现问题
|
14
vance 2019-08-01 14:11:30 +08:00
弄个预生产库,每天同步数据
|
15
nihaoaa 2019-08-01 14:28:56 +08:00
预发布本来就应该和生产环境一个库吧,不是一个库就失去了预发布本来的意义
|
16
lurenw OP @kumakiti @flyingghost @vance @lostpupil
弄个预生产库(就是我上面提到的 UAT 库)同步数据, 数据量小的话, 倒也没问题, 但数据量大的话, 就得考虑同步和运维成本. 如果只同步部分数据, 又不能完全达到线上验证的效果. 我们之前就是有 UAT 库, 但后来整体架构就全部变成 DEV 和 PROD 两套库. |
17
lurenw OP |
18
kumakiti 2019-08-01 14:41:30 +08:00
@lurenw 实际上按照你的情况来看,要么分库,如果不分库那就需要对业务逻辑层面去加一些开关,毕竟你本质要做的就是隔离,数据由于放到一个库里面,已经无法隔离了,那么只能在业务逻辑层去处理了
|
19
janxin 2019-08-01 14:42:08 +08:00
定期备份线上数据至测试库。
开发时使用的库自行解决。 |
20
lurenw OP @kumakiti 是的, 不分库就只能在上层做拦截, 但一直苦于没有好的方案(对业务代码入侵少, 不给开发人员增加过多的工作量)
|
21
wd 2019-08-01 14:53:21 +08:00
什么是预发布环境?。。。生产就是生产,测试就是测试,你们把这两个搞一起了?
|
22
geeti 2019-08-01 15:06:28 +08:00
@wd 一般就是 gamma 吧,用来 QA,或者其他的类生产环境
我们一般就是 alpha-beta-gamma-one_box-prod |
23
wd 2019-08-01 15:10:15 +08:00
@geeti 那不就是还是测试环境么?一般环境是三套,dev, beta, prod,互相隔离不会有影响。其中 beta 是给测试用的,要注意这个环境需要和 prod 基本一致,就是发布的时候和 prod 一样对待,也不要随意上去做一些修改什么的,或者说做了任何修改都一定记得需要反馈到代码或者上线步骤里面。
这样基本可以保证 beta 验证没问题的代码在 prod 也没问题。 |
24
flyingghost 2019-08-01 15:18:53 +08:00 1
@lurenw “完全达到线上验证的效果”其实不用刻意追求,没必要。
使用生产数据主要有两个作用: 1,主流程验证,包括读写操作。 2,针对个别生产数据产生 bug 的情况做复现、测试、回归。 其实都只需要近期部分数据就可以了。 基础数据包括配置等一般需要全量,也不会很多。比如社区全局配置。 大量同构数据只选择一部分即可。比如社区最近一个月的用户帖子回复。 |
25
freelancher 2019-08-02 04:30:27 +08:00 via iPhone
请个 DBA。例如我。不然出事了。就是开除。
|
26
akrislu 2019-08-02 07:29:41 +08:00 via iPhone
@freelancher 你这话说的我怎么第一感觉是你是从删库到跑路呢😄
|