怎么随时分辨出哪个是预生产环境,哪个是生产环境呢?

2022-12-01 09:36:33 +08:00
 itechnology

事情是这样的。公司目前有 A 和 B 两套生产环境,平时只用其中一套,另一套作为预生产环境,每次上线后轮换。

举个例子,当前生产是 A 环境,那么 B 环境就是预生产,12 月中旬需要上线,那这个时候会把代码先上线到预生产环境,也就是 B 环境,等预生产确定没问题之后,运维会把流量切到预生产,也就是 B 环境,这个时候 B 环境就是生产环境,A 环境就变成了预生产……如此循环。

现在的问题是,因为 A 和 B 两个环境经常轮换,导致开发人员经常搞不清楚哪个是生成环境,哪个是预生产环境。

请问有没有什么好的办法可以快速区分?

目前运维想的办法是每次上线之后把堡垒机的备注改一下。

5087 次点击
所在节点    程序员
33 条回复
singerll
2022-12-01 09:39:32 +08:00
生产环境不允许开发直接访问,有特殊情况提申请。
EmptyDX
2022-12-01 09:41:12 +08:00
测试环境加个显眼的背景色区分
brucmao
2022-12-01 09:41:30 +08:00
lcy630409
2022-12-01 09:42:31 +08:00
生产环境的 apache 给个特殊的标记
xuanbg
2022-12-01 09:44:36 +08:00
让运维给一个动态的入口就行了呀,访问的流量切到生产,发布 /测试的网络流量也是流量啊,一样可以切到预生产。这样你们只要使用特点的入口就行了。
hayhong123
2022-12-01 10:01:23 +08:00
可以在登陆或者首页接口里 塞入一个环境的 ENV cookie 后端通过 AB 环境不同的配置文件去取 ENV 信息 这样访问就知道在哪个环境了
rekulas
2022-12-01 10:12:49 +08:00
感觉这种发布机制有问题,a,b + dev 环境是不是好点,dev 开发环境,b 预生产,a 生产不允许直接访问
dev 测试完毕更新到 b ,打一部分流量过来没问题自动同步环境到 a ,流量全部切回 a ,这样还可以灰度测试也不会冲突
everyx
2022-12-01 10:15:12 +08:00
好奇这种情况,如何涉及到数据库的修改怎么在两种环境下同步数据的,能否分享一下?
yogogo
2022-12-01 10:22:23 +08:00
不是应该每次更新迭代完,两个都生产环境了吗?每次版本更新的时候,每次默认 A 是用预生产测试
wangritian
2022-12-01 10:25:55 +08:00
好奇怪,也有同事跟我讲过类似的 AB 环境,但服务器资源会不会浪费一半呢?只有生产环境才有大流量。我理解的预生产应该是用于蓝绿发布的临时环境,发布成功后需要把原生产环境下线的
adoal
2022-12-01 10:27:05 +08:00
A 和 B 的访问通过一层反代或者其它接入方式(比如浮动 IP )控制,用户和开发不直接连 A 和 B 。在接入控制层,生产环境总是固定为一组网络资源,预生产环境总是固定为另一组网络资源,往后端接入时,根据切换映射到不同的实际资源。

类似某些主备数据库集群里常用的做法,A 有固定 IP 1 ,B 有固定 IP 2 ,两者一个是可读可写的主库,一个是只读的备库从主库同步数据过来。当现任主库挂了时从库提升,运维人员去修复主库。浮动 IP 3 永远飘到现任主库上,浮动 IP 4 永远飘到现任备库上,当主库降级修复时 3 和 4 都在新的主库上。这样,不论 A 和 B 角色怎么调整,应用程序要访问主库就用 IP 3 ,访问备库就用 IP 4 。当然你这个场景是切换整套业务系统,那可能需要自己写一些逻辑来在接入层控制。
james2013
2022-12-01 10:30:47 +08:00
觉得这种切换逻辑总会出问题的
正常来说,A 固定长期是生产环境,B 是预生产.在 B 环境没有问题,将流量切到 B,在 A 上线代码后,将流量重新切回到 A
oneisall8955
2022-12-01 10:31:54 +08:00
生产和预发布同一个库?
opengps
2022-12-01 10:41:18 +08:00
就不应该用切流量的方式,测试一般是完全隔离,单独部署一套测试环境的域名等信息:单独的测试公众号,单独的测试网址,单独的测试环境等等
zhouyg
2022-12-01 10:50:27 +08:00
不应该切服务器,应该把生产环境固化下来
itechnology
2022-12-01 11:26:30 +08:00
@rekulas 目前就是你说的这种模式。现在其实有四套环境,开发环境、测试环境、预生产环境和生产环境。

开发环境是用于后端开发人员和前端开发人员联调用的;联调完没问题后更新到测试环境给测试测,测试测完没问题之后,更新到预生产环境,预生产测试没问题后切换为生产。
itechnology
2022-12-01 11:27:19 +08:00
@oneisall8955 不是同一个数据库,但是预生产的数据库是从生产数据库数据拉出来的一个临时库
Jooooooooo
2022-12-01 11:49:46 +08:00
为啥是这种模式, 正常来讲预发不应该和线上轮换呀. 一般配置也不一样.
itechnology
2022-12-01 12:55:52 +08:00
@Jooooooooo 这个是领导定的方案,我们没法改变
Yuesh1
2022-12-01 12:58:58 +08:00
像 JVM 里面的 s1 和 s2 ,标记复制算法

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/899247

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX