Zadig,从环境管理工具起步,已成长为一个全面的云原生 CI/CD 平台,而今为企业提供综合性的 DevOps 解决方案。社区小伙伴一致赞誉它为「中小型企业的得力助手,大型企业的利器」。在环境方面有众多核心优势:
- 全面的服务接入:Kubernetes YAML、Helm Chart 及传统主机服务均支持一键接入,实现高效环境管理。
- 先进的运行时管理:提供环境配置、服务重启与更新、配置管理,以及实时日志和容器内调试工具。
- 简便的多环境管理:基于单一配置,Zadig 几分钟内快速复制和创建多环境,支持版本回溯和环境个性化配置。
- 高效的环境更新:支持多服务多环境并行更新,智能选择更新时机,避免资源浪费。
- 资源节约的环境:自测模式创建子环境,降低多环境协作成本,加速开发流程。
过往社区也沉淀了大量的最佳实践供大家参考:
- Zadig 托管项目支持上千开发者、多业务线、多环境协作 ,搞得定 (opens new window)
- 揭秘 Zadig 多环境配置最佳实践 - K8s YAML 篇 (opens new window)
- 揭秘 Zadig 多环境配置最佳实践 - Helm Chart 篇 (opens new window)
- Zadig 自测模式:破解研发环境困境,激发开发新效能 (opens new window)
- 在星云科技,我们使用 Zadig 实现多环境并行发布,上千次周部署 (opens new window)
# 降本增效:推出环境睡眠和唤醒功能
随着越来越多的企业深度采用 Zadig,我们在关注着环境的易用性、变更效率以及维护负担等基础能力的同时,也在积极努力降低环境资源成本。事实上某些环境工程师并非 24 小时都需要使用,因此一直在线的环境就会导致资源浪费和企业成本增加。
在 Zadig 的新版本中,我们引入了环境睡眠/唤醒功能,使环境管理更具智能性。这一功能能够自动缩减服务的运行数量以节省云资源成本。环境睡眠/唤醒适用于多种场景,包括但不限于:
- 日常开发和测试: 工程师进行自测、联调和集成验收时,根据使用频率,可以轻松设置环境的睡眠和唤醒,以合理利用资源。
- 不经常迭代的项目: 对于不经常迭代但仍提供在线服务的项目,需要保留多套完整可验证的开发、测试和预发布环境。通过定期设置睡眠,唤起使用时,可以及时释放资源到公共资源池。
- 定时按需控制: 您可以设置环境的定时睡眠和唤醒,尤其适用于弹性节点资源。例如每天晚上自动睡眠,早上自动唤醒,或者在节假日休息时自动睡眠,工作日自动唤醒,以避免无人使用时仍然占用资源。
这一新功能将使您能够更智能地管理环境,更有效地利用资源,从而降低成本。
# 关于环境使用的成本优化测算
实际资源取决于应用本身的占用及环境使用频率,Zadig 环境睡眠主张从源头减少浪费。
以一个典型的微服务项目为例,该项目由 5 名前后端工程师协同,包含 10 个 Java 服务,平均资源 Request 1C 2G;1 个 Vue 前端服务,资源 Request 1C 0.5G;项目迭代过程共包含开发环境 2 套,测试环境 1 套,预发环境 1 套。平均每个服务每人每天构建 2 次;构建时长 6 分钟。
- 正常使用资源消耗:研发阶段大致需要消耗资源 44C 82G ( 前端 4C 2G,后端 40C 80G);
- 配置环境睡眠策略后:该项目在不同迭代频率下,平均节约 22C 41G 约一半资源;
项目场景描述 | 配置策略 | 预计节约资源 |
---|---|---|
每周一次或多次发版本;开发环境每天使用;测试环境每天使用;预发环境 1 周使用 2 天 | 预发环境配置开发测试阶段睡眠,发布期唤醒 | 预发环境可释放 11C 20G 资源可供研发过程使用,为服务构建增加 8 个并发量(释放闲置资源),减少验证高峰期服务构建部署排队时间。 |
固定两周发一次版本;开发环境每天使用,测试环境 2 周使用 5 天,预发环境 2 周使用 3 天 | 测试环境配置开发阶段睡眠,提测后唤醒;预发环境配置研发阶段睡眠,发布期唤醒 | 开发期间,两套环境共释放资源 22C 41G , 可支持再拉起一套完整环境,同时为服务构建增加 8 个并发量。可减少开发环境使用的等待,减少验证高峰期服务构建部署排队时间。 |
基本不做迭代,偶尔修复 bug,3 个月发布一次版本;开发环境按需使用,测试环境每周使用 1 次,预发环境 3 个月使用 5 天 | 开发环境配置日常睡眠,需要时一键唤醒;测试环境配置开发阶段睡眠,提测后唤醒;预发环境配置开发测试阶段睡眠,发布期唤醒 | 日常可以释放 33C 61G 计算资源可供其他计算业务使用。 |
下面将展开介绍如何配置环境睡眠及效果的展示。
# 如何启用环境睡眠能力
# 配置一键睡眠/唤醒
进入环境,点击睡眠与唤醒 -> 立即睡眠即可将环境一键睡眠。
需要使用环境时,进入睡眠的环境,点击睡眠与唤醒 -> 立即唤醒即可将环境唤醒恢复可用。
# 配置定时睡眠/唤醒
进入环境,点击睡眠与唤醒 -> 配置定时睡眠和唤醒 Cron 表达式即可。比如,下图示例中每天 22:00 定时睡眠环境,每天 8:00 环境将定时唤醒恢复可用。
# 使用效果一览
睡眠后,环境中所有服务实例副本数将会自动调整为 0,CronJob 会被挂起,节省环境所使用云资源成本。
唤醒后,环境中的所有服务会根据服务编排顺序恢复到睡眠之前的状态。