Zadig 环境睡眠,平均节省一半测试资源

Zadig 环境睡眠,企业降本增效的实践利器

Zadig,从环境管理工具起步,已成长为一个全面的云原生 CI/CD 平台,而今为企业提供综合性的 DevOps 解决方案。社区小伙伴一致赞誉它为「中小型企业的得力助手,大型企业的利器」。在环境方面有众多核心优势:

  • 全面的服务接入:Kubernetes YAML、Helm Chart 及传统主机服务均支持一键接入,实现高效环境管理。
  • 先进的运行时管理:提供环境配置、服务重启与更新、配置管理,以及实时日志和容器内调试工具。
  • 简便的多环境管理:基于单一配置,Zadig 几分钟内快速复制和创建多环境,支持版本回溯和环境个性化配置。
  • 高效的环境更新:支持多服务多环境并行更新,智能选择更新时机,避免资源浪费。
  • 资源节约的环境:自测模式创建子环境,降低多环境协作成本,加速开发流程。

过往社区也沉淀了大量的最佳实践供大家参考:

# 降本增效:推出环境睡眠和唤醒功能

随着越来越多的企业深度采用 Zadig,我们在关注着环境的易用性、变更效率以及维护负担等基础能力的同时,也在积极努力降低环境资源成本。事实上某些环境工程师并非 24 小时都需要使用,因此一直在线的环境就会导致资源浪费和企业成本增加。

在 Zadig 的新版本中,我们引入了环境睡眠/唤醒功能,使环境管理更具智能性。这一功能能够自动缩减服务的运行数量以节省云资源成本。环境睡眠/唤醒适用于多种场景,包括但不限于:

  1. 日常开发和测试: 工程师进行自测、联调和集成验收时,根据使用频率,可以轻松设置环境的睡眠和唤醒,以合理利用资源。
  2. 不经常迭代的项目: 对于不经常迭代但仍提供在线服务的项目,需要保留多套完整可验证的开发、测试和预发布环境。通过定期设置睡眠,唤起使用时,可以及时释放资源到公共资源池。
  3. 定时按需控制: 您可以设置环境的定时睡眠和唤醒,尤其适用于弹性节点资源。例如每天晚上自动睡眠,早上自动唤醒,或者在节假日休息时自动睡眠,工作日自动唤醒,以避免无人使用时仍然占用资源。

这一新功能将使您能够更智能地管理环境,更有效地利用资源,从而降低成本。

# 关于环境使用的成本优化测算

实际资源取决于应用本身的占用及环境使用频率,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 会被挂起,节省环境所使用云资源成本。

唤醒后,环境中的所有服务会根据服务编排顺序恢复到睡眠之前的状态。

Background Image

作为一名软件工程师,我们一直给各行各业写软件提升效率,但是软件工程本身却是非常低效,为什么市面上没有一个工具可以让研发团队不这么累,还能更好、更快地满足大客户的交付需求?我们是否能够打造一个面向开发者的交付平台呢?我们开源打造 Zadig 正是去满足这个愿望。

—— Zadig 创始人 Landy