Zadig 作为一款先进的开源云原生软件交付平台,为开发者提供云原生运行环境,支持开发者本地联调、微服务并行构建和部署、集成测试等。
环境管理在日常的研发过程中基础问题,开发自测、联调均需在环境中进行。Zadig 针对环境管理,当前提供了如下能力:
- 创建/销毁环境
- 复制环境
- 托管环境
- 自测模式(自 v1.11.0 版本推出)
通过创建/销毁环境,开发者可以便利使用隔离的环境。
通过复制环境,开发者可以快速复制出存量环境,在隔离的相同环境中进行开发、联调。
通过托管环境,开发者可以将已经存在的 namespace 及该 namespace 中的应用纳入到 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 组件,