持续交付管道:环境、安全与非功能测试全解析
在软件交付的过程中,持续交付管道是确保软件高效、稳定发布的关键。本文将深入探讨持续交付管道中的各个环节,包括不同环境的作用、环境安全保障以及非功能测试的重要性和方法。
1. 系统架构与物理位置考量
用户通过负载均衡器访问服务,负载均衡器会选择具体的机器。如果应用在多个物理位置发布,通常会使用基于 DNS 的地理负载均衡器。在每个位置,会有一组服务器。若使用 Docker 和 Kubernetes,意味着每个位置至少有一个 Kubernetes 集群。
机器的物理位置很重要,因为请求 - 响应时间会因物理距离而显著不同。此外,数据库和其他依赖服务应部署在靠近服务部署的机器上。更重要的是,数据库应进行分片,以最小化不同位置之间的复制开销,否则可能会花费大量时间等待数据库实例达成共识。
虽然容器化和虚拟化让我们可以将服务器视为无限资源,但物理位置等方面仍然至关重要。
2. 不同环境的作用
- 预发布环境(Staging):预发布环境用于在正式上线前部署候选版本,进行最终测试。理想情况下,该环境应是生产环境的镜像。在持续交付过程中,所有自动化的功能和非功能验收测试都在该环境中运行。大多数功能测试通常不需要与生产环境完全相同的基础设施,但非功能(尤其是性能)测试则必须如此。为节省成本,预发布环境的基础设施可能与生产环境不同(通常机器数量较少),但这可能导致许多生产问题。
- QA 环境:QA 环境(也称为测试环境)供 QA 团队进行探索性测试,以及外部依赖应用进行集成测试。与预发布环境不