探索 Zadig 自测模式,一套环境多人协同,释开发者创造力!
在日常开发中,研发工程师经常遇到环境不足、环境管理混乱以及互相抢占环境的问题,这种情况不仅使得研发工程在等待环境准备和切换中花费大量宝贵的工作时间,无法充分发挥创造性,还直接影响了项目的进度和质量。对于业务架构简单、服务数量较少的情况,往往会选择扩展出一套完整的新环境来满足不同研发同时自测联调的诉求,减少不必要的等待时间。而面对复杂的业务场景,一套测试环境中可能包含成千上百个服务,额外搭建这样一套完整的环境成本极高,甚至由于一些服务的基础架构的原因,复制多套环境几乎不可能。
为了应对上述痛点问题,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:配置入口服务
若需要在子环境中添加并联调入口服务,即本项目中 a 服务,则需要在基准环境中,配置入口服务的 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元/人月起,社区老友享年终福利!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
2023 年中国软件名城评估结果公布:深圳、杭州、北京获得最高三星评级
工信部近日印发《工业和信息化部关于 2023 年中国软件名城评估结果的通告》,确定了 2023 年中国软件名城评估结果。 1、深圳:★★★ 2、杭州:★★★ 3、北京:★★★ 4、南京:★★ 5、上海:★★ 6、成都:★★ 7、济南:★★ 8、武汉:★★ 9、广州:★★ 10、苏州:★★ 11、青岛:★★ 12、厦门:★★ 13、福州:★★ 14、无锡:★★ 工信部 2017 年印发了《中国软件名城创建管理办法(试行)》,目前已授牌14 个名城。 申请创建中国软件名城的城市需为地级及以上。同时需具备以下条件: 一是软件和信息技术服务业基础良好、规模较大、发展潜力较强,对国民经济的贡献程度较高,拥有若干全国知名度较高的骨干软件企业和若干全国市场占有率较高的软件产品,创新能力较强,产业特色鲜明、生态较好; 二是软件和信息技术服务业带动效应明显,对拉动经济增长、促进就业、加速传统行业数字化转型,以及提升城市管理和社会服务水平具有重要支撑作用,对城市文化塑造及品牌提升具有积极影响; 三是产业政策支持力度较大,具有较为丰富的科技、教育、人才等资源条件和良好的城市人文环境,具有较为完善的适合软件和...
- 下一篇
网易有道Qanything开源:探索个性化问答的新纪元
网易有道最新开源力作:QAnything引擎。是基于RAG(Retrieval Augmentated Generation)的引擎,可以用于建立本地知识库做问答,解锁本土ChatGPT般的问答体验。☝ 「Qaynthing」是一个成熟的系统,有着准确率高、速度快、纯离线,易于使用(一键部署),占用资源小(只要16G显存即可)的特点。 目前,「Qaynthing」已经在有道的多个产品中落地应用,包括有道词典的文档问答,有道速读,以及有道课程业务(高中、少儿围棋等)的客服系统等,在有道合作的2B客户的场景中已经落地应用。 chatgpt的大模型能力很强,但其训练耗时很长,无法利用用户的私有数据,且有胡乱编造的幻觉问题。 与ChatGPT相比,有道自研的「Qaynthing」有自己的突出优势。它能够快速塞入各种格式的文档,如doc、ppt、excel、图片、pdf等,系统将在很短的时间内对这些文档进行处理并根据语义建立知识库,用户可以基于这样的知识库做各种问答。系统将理解用户的意图,在全库中寻找相关的内容,理解、提取用户关心的要点,并加以总结后呈现给用户。 「Qaynthing」包含的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7