Zadig 自测模式支持一套环境多人协同,释放开发者创造力!

原创
01/08 10:42
阅读数 458

在日常开发中,研发工程师经常遇到环境不足、环境管理混乱以及互相抢占环境的问题,这种情况不仅使得研发工程在等待环境准备和切换中花费大量宝贵的工作时间,无法充分发挥创造性,还直接影响了项目的进度和质量。对于业务架构简单、服务数量较少的情况,往往会选择扩展出一套完整的新环境来满足不同研发同时自测联调的诉求,减少不必要的等待时间。而面对复杂的业务场景,一套测试环境中可能包含成千上百个服务,额外搭建这样一套完整的环境成本极高,甚至由于一些服务的基础架构的原因,复制多套环境几乎不可能。

为了应对上述痛点问题,Zadig 提出了一种低成本搭建子环境的解决方案。在 Zadig 自测模式的子环境中,只需部署少量服务,并与基准服务进行交互,实现了更为高效的开发和联调流程。

在本文中,我们将深入探讨 Zadig 自测模式的基本原理、应用场景、管理员操作细节和工程师在日常使用中的实际操作等。

 

基本原理

自测模式是 Zadig 为降低环境管理复杂度和部署成本而推出的一种面向开发者的功能模块。当开启了环境的自测模式后,该环境则成为基准环境,该环境拥有完整的服务调用链。没有灰度标的请求会在基准环境中进行调用,调用链路为 A -> B -> C

当开发者需要进行开发、联调时,比如涉及到到 A 和 C 两个服务的变更,可以基于基准环境新建 dev1 子环境,该子环境中仅部署变更后的 A 和 C 服务,即 A' 和 C'。联调时请求加上灰度标,如在 http header 中设定 x-env=dev1 的灰度标,此时请求会按照 A' -> B -> C' 进行。

同理,当开发、联调时仅涉及到 B 和 C 两个服务的变更时,可以基于基准环境新建 dev2 子环境,该子环境仅部署变更后的 B 和 C 服务,即 B'' 和 C''。联调时加上灰度标 x-env=dev2,这样请求按照 A -> B'' -> C'' 进行。

 

应用场景

Zadig 的自测模式支持用较低成本快速拉起包括部分服务的子环境,在子环境中开发、变更目标服务,并和包括全量服务的基准环境交互来实现自测联调,企业可使用自测模式解决的问题包括但不限于:

1. 开发频率快,业务验证需求旺盛,亟需小快跑的方式迭代业务,但缺乏相关工程底座建设。

2. 微服务的数量大,业务复杂度高,导致建设一套完整的环境成本高,代价大。

3. 部分微服务因基础技术架构等原因,无法完整地复制出多套完整环境,导致多个团队绑定在一个环境中,环境稳定性难保障。

4. ......

 

如何使用

下面以 simple-service 为例来说明如何配置和使用 Zadig 自测模式。项目背景以及自测联调需求说明如下:

1. 项目中共包括 3 个微服务 a、b、c,服务调用链路:a -> b -> c

2.dev 环境为日常完整稳定的测试环境,包括全部微服务 a、b、c

3. 日常会对 a 服务进行高频改动,希望能对 a 服务进行充分自测,确保其变更可交付

 

管理员:配置自测模式

步骤1:开启自测模式

访问 dev 环境 > 更多 > 点击开启自测模式

这时会对自测模式的依赖条件做检查:

1. 业务架构实现全链路数据透传能力或者使用 Tracing 组件。系统无法自动检查,需要管理员自行确保,此处支持较为广泛应用的 SkyWalking、Zipkin、Jaeger 等。

2. 系统会对 Istio 是否安装做自动检查,如果没有请在环境所在集群进行安装

3. 服务调用链自动检查,主要依据是有 K8s Service 类型的资源和服务 a、b、c 对应

当开启自测模式后,dev 环境即成为基准环境。

 

步骤2:配置入口服务

若需要在子环境中添加并联调入口服务,即本项目中 服务,则需要在基准环境中,配置入口服务的 Istio 网关。并将配置的访问地址解析到集群 istio-ingressgateway service 的外网访问地址上,如下图所示。

 

工程师:日常自测联调

创建子环境

在 dev 基准环境中通过点击 创建子环境,选择 a 服务可创建包含 a 服务的子环境 dev-subenv1

 

请求验证

当需要请求服务 a 时,在请求头部加入 x-env=dev-subenv1 即可将请求流量转发到子环境 dev-subenv1 中,实现子环境和 dev 环境的自测联调。测试效果如下所示:

1. 增加 x-env=dev-subenv1 请求头访问服务 a,子环境中的服务 a 会接收到请求并给出响应,对于请求链路上的 b 和 c 服务,dev 环境中的服务会给出正常响应。

子环境 dev-subenv1 中 a 服务的日志:

2. 执行不带任何头部信息的请求,直接请求服务 a,dev 环境中的服务 a、b、c 会处理请求,子环境中无请求流量输入。

基准环境 dev 中 a 服务的日志:

Zadig 的自测模式是为开发者量身定制的解决方案,适用于多人协同开发、业务规模大、服务相互关联、日常变更频繁的场景。传统测试环境所带来的有限资源、高成本、复杂性等问题,在 Zadig 的自测模式下迎刃而解。

通过低成本搭建子环境、灵活部署少量服务,Zadig 的自测模式使开发者能够在独立的测试环境中进行高效工作,摆脱了对同一测试环境的争夺,提升了开发流程的质量和效率。

欢迎大家下载试用,体验更高效的开发方式!

 

立即体验 Zadig V2.0 新架构,开启高效交付之旅!🚀 

Zadig 开放,链接,专业

阅读原文 / Zadig 在 Github / Zadig 在 Gitee

推荐阅读 : 只有大厂才可以有 DevOps 平台? / Zadig vs. Jenkins 详细比对:时代的选择与开发者之选 / 基于 Istio + Zadig,零负担实现云原生全链路灰度发布 / 阿里云 MSE + Zadig,面向开发者的全链路灰度发布解决方案 / ZADIG 专家版倾情上线:一键高效发布,119元/人月起,社区老友享年终福利!

 
展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
3 收藏
0
分享
返回顶部
顶部