本文将从敏捷研发团队的环境需求与痛点出发,分享如何基于云构建可弹性伸缩的自动化生成式多测试环境;更在经济效益层面,提供了多种成本优化方案,以满足研发团队低成本、高效益的多测试环境运行目标。
一、当前遇到的环境问题
初期,根据实际研发需要,LigaAI主要应用了以下四套环境:
- Dev环境是开发环境,专供前/后端开发人员进行功能开发自测、联调等;
- Sit环境为测试环境,供测试成员进行迭代功能验收;
- Pre环境为预发布环境,主要承担整体测试、回归测试等;
- 最后,Prod环境为生产环境。
随着团队规模不断扩大、业务组划分走向清晰,以及微服务拆分愈发精细,环境资源开始逐步缩紧,资源紧张带来的冲突频繁制约着团队发展。
- 对迭代有风险的复杂需求需要剥离迭代,进行单独测试;
- 开发人员需要不同的Dev环境进行联调;
- 迭代小组的迭代进度各异,需要分批提测;
- 紧急Hotfix急需测试,但环境已被占用;
- 需要进行系统压测,却缺乏一套压测环境;
为缓解环境资源紧张问题,LigaAI对原有的Dev环境和Sit环境做了如下扩展。
如此虽一定程度上满足了不断增加的环境需求,但不可避免地导致了其他问题。因此,针对以下环境需求痛点,LigaAI着手搭建了一套高弹性、可伸缩的测试环境。
二、测试环境的改造目标
开始正式改造前,LigaAI结合研发流程和环境需求,对目标测试环境提出了几点要求:
- 多环境:针对不同的测试场景,可以提供不同的测试环境。
- 互相区隔:数据、配置信息和应用访问在不同环境之间要相互隔离。
- 高效稳定:环境要保持稳定且高效地运转,不能影响正常迭代进度。
- 低成本:产生尽可能较低的额外成本,任何时期都要将资源用在刀刃上。
- 可复用:针对特殊需求可快速扩展新环境;简化测试环境维护,让团队聚焦研发与测试。
第一步:测试环境的标准化改造
Step 1:搭建底层基础设施
围绕弹性、扩展和部署等关键词,LigaAI最终选用Amazon EKS作为环境伸缩的底层基础设施。
Amazon EKS即Amazon Elastic Kubernetes Service,是一项完全托管的服务。无需安装、操作或维护集群也可轻松运行Kubernetes,而其内置的控制面板则为LigaAI的集群管理提供了便利。
Step 2:规范中间件资源
为方便应用接入,我们梳理了系统中需要改造或命名规范化的基础资源和中间件,包括域名命名、数据库地址、消息队列、Redis和Ela