
开发网站、软件或应用程序,就像制作一部百老汇演出。
在戏剧的开发阶段,编剧和导演会起草剧本,规划好每一个转折。接下来则是舞台设计、排练、编舞、服装试穿等事宜。
对于你的网站来说,暂存环境(staging environment)就像是彩排。当演出准备就绪,就该面向公众亮相了。聚光灯亮起:这就是生产环境(production environment),成品在这里正式登台,供真实用户体验。
在软件开发领域,尤其是电商网站中,暂存和生产是两个至关重要的阶段,它们可能决定你是获得满堂喝彩(转化率飙升),还是收到恶评(关于结账流程“太复杂搞不懂”的一星差评)。
以下是关于暂存和生产在软件开发旅程中的作用及其关键区别的更多信息。
暂存 vs. 生产:有什么区别?
- 代码部署
- 数据管理
- 风险管理
- 用户访问
暂存环境和生产环境服务于不同的目的:暂存环境用于在生产环境部署更改之前测试其副本。而另一方面,生产环境是活跃的电商商店,客户在此购物、进行购买并实时互动。此生产环境中的代码应无错误,受到监控,并针对性能进行了优化。
以下是预发布环境和生产环境在部署代码、管理数据、执行电商测试以及处理风险、用户访问和安全性方面的主要差异:
代码部署
在预发布环境中,代码会部署到实际 Web 应用程序的镜像中,以便在新功能和代码更新上线前进行测试。在对最终代码进行测试后,您再部署网站的正式生产版本供用户访问。
数据管理
预发布环境使用测试数据库或生产数据库的副本,确保在测试期间不会影响真实数据。
相比之下,生产环境依赖于来自终端用户的实时数据,因此实施适当的安全措施——例如数据输入验证、严格的访问控制列表和加密——对于保护数据完整性至关重要。
风险管理
在预发布环境中,集成测试可检测错误或性能不佳的问题,软件开发周期可以暂停并退回给开发人员以进行进一步改进。
另一方面,正式的生产环境需要严格的风险管理,因为性能或安全问题可能会直接损害用户和业务运营。对生产环境的任何突然更改都可能导致重大问题,必须仔细控制和监控。
强大的安全协议——如加密、防火墙及入侵检测/预防、安全审计和渗透测试、多因素身份验证、安全的支付网关、定期备份和安全更新——在维持业务连续性和保护用户信任方面发挥着关键作用。
用户访问权限
暂存环境仅对开发人员和测试人员开放。它是用于测试功能开发并获取反馈的内部暂存区域。一旦您的软件或网站进入生产阶段,公众即可使用。
暂存和生产如何融入Web开发流程
- 开发
- 质量保证
- 暂存
- 生产
暂存和生产是软件开发生命周期的不同阶段。以下是该流程的概述:
1. 开发
在这一初始阶段,开发人员编写代码,并使用版本控制系统(例如 Git)合并来自多个开发人员的代码更改。工程师采用一种称为持续集成的流程,自动执行这些合并和测试,以便尽早发现错误。
为了在开发环境中测试代码,开发人员会使用带有虚假客户数据的本地数据库(有时也称为模拟数据库)。
2. 质量保证
接下来,代码将进入质量保证(QA)阶段,也称为测试环境。在此阶段,开发人员会对新代码运行测试,以识别并修复缺陷。质量保证依赖于自动化测试(无需人工输入即可执行脚本)和单元测试(针对各个组件进行的隔离测试),以便在代码进入暂存环境之前发现缺陷。例如,您可以测试购物车功能,以确保其正常运行。
3. 暂存环境
暂存环境是工程师组装并在一个镜像生产网站的环境中进行测试的地方。在重大版本更新后,此阶段环境有助于在发布前捕获任何可能出现的重大问题。例如,您可以一起测试登录、购物车和支付系统,以验证它们之间的顺畅交互。
用于暂存环境测试的数据与开发环境中使用的数据配置不同。暂存环境是一个受控环境,使用真实数据的副本复制生产网站。可以将其视为一个虚假的生产环境——但比开发数据测试更真实,因为它使用与生产环境相同的硬件、服务器、数据库和缓存。这种设置允许在代码发布到供公众使用的生产环境之前进行全站质量保证。
4. 生产环境
生产环境(也称为部署环境)是最终批准的代码向用户发布的地方。
如何使用暂存环境
- 功能测试
- 回归测试
- 内容管理系统 (CMS) 测试
- 第三方集成
- 性能测试
- 数据库集成测试
- 安全测试
- 用户验收测试 (UAT)
- 跨浏览器和设备测试
暂存环境用于在将网站、软件或应用程序发布给公众之前进行最终测试和质量保证。暂存环境提供了一个受控空间,用于全面的测试和验证,确保网络软件已完全准备好进行实时部署。以下是暂存环境的用例:
功能测试
暂存包括详细的测试场景,这些场景模拟真实世界的用户交互,以定位功能缺陷、用户界面和用户体验不一致以及性能限制。例如,在测试新的购物车功能时,您可以模拟将商品添加到购物车、应用折扣并进入结账流程,以确保一切按预期工作。
回归测试
回归是指在软件更新或配置调整后出现的错误,导致意外的副作用,如加载时间变慢、崩溃和数据损坏。
回归测试确保新代码更新不会破坏关键功能,如登录、搜索和产品浏览。开发人员通过重新运行测试用例并将结果与之前的结果进行比较来识别差异。
内容管理系统 (CMS) 测试
Shopify 等平台帮助您管理在线商店的内容、产品和客户体验,而无需具备广泛的编码知识。暂存环境是您在部署之前测试主题更新、插件安装和内容更改的地方。借助 Shopify,您可以使用重复主题、功能完整的开发商店和主题预览,以确保所有内容在上线前按预期工作。
Shopify的主题预览链接允许店主在主题上线前分享未发布的主题以获取反馈。访客预览链接无需身份验证,且在创建后两天过期;而商家预览链接需要管理员身份验证,并保持活跃30天。两种预览类型均可用于添加到商店的任何主题(无论是否已发布),为团队提供了一种在不影响在线站点的情况下测试更改的方法。
第三方集成
电子商务网站通常结合使用第三方支付网关、应用程序编程接口、内容分发网络 (CDNs)。暂存环境为开发人员提供了一个逼真的环境,以便在影响在线服务或用户数据之前测试这些集成。它确保您的商店能够正确且安全地与这些工具进行通信。在测试期间,模拟各种场景:测试成功和失败的支付,检查高流量下的性能问题,并确保来自不同国家的客户收到正确的内容且支付处理正常。
性能测试
在暂存阶段,您可以使用负载测试工具来模拟真实世界的流量并监控 Web 性能在压力下的表现,并识别负载问题(如加载时间过长或服务器崩溃),以免它们影响真实用户。
数据库集成测试
电子商务应用依赖数据库来提供内容,例如产品详情、客户信息和订单历史记录,因此在暂存环境中测试数据以防止错误和数据损坏非常重要。在这里,您可以测试数据库迁移(对数据库结构进行的有组织、自动化的更新)以及前端交互(用户如何与Web应用的可见部分进行交互)。
安全测试
预发布环境用于验证安全措施在应对黑客和恶意软件威胁方面的有效性。这包括渗透测试(模拟网络攻击)、漏洞扫描(自动检查系统、网络或应用程序)、安全审计以及身份验证和授权测试(用户登录和访问控制机制)。
用户验收测试 (UAT)
用户验收测试 (UAT) 涉及最终用户在预发布环境中测试您的网站副本,以确认其符合他们的期望。通过收集他们的反馈,您可以识别并解决任何剩余问题。
跨浏览器和设备测试
跨浏览器和移动设备测试可确保在各种浏览器(例如 Chrome、Firefox、Safari、Edge)和移动设备(例如 iPhone、Android 手机、平板电脑)上的响应能力和功能正常,从而保证所有访问者的可访问性和一致的用户体验。
如何使用生产环境
- 用户访问
- 数据收集与分析
- 性能监控
- 实时交易处理
- 计划更新与部署
- 安全事件响应
在生产环境中,随着最终代码的部署和在线平台对最终用户的开放,正式演出拉开帷幕。
在此阶段,经过充分测试的代码从预发布环境传输到在线服务器。如果有数据库更改,开发人员将执行迁移以确保数据一致性,并更新配置文件。同时设置实时监控工具和警报,以跟踪性能和运行状况。最后,最终用户可以访问更新后的 Web 应用程序。
在此阶段,可靠性、稳定性和最佳性能至关重要。
企业根据自身项目的规模和复杂性,以各自的方式在生产环境中实施用例。以下是一些示例:
用户访问
在实时的生产环境中,用户搜索产品、管理购物车并完成结账流程。您可以优化产品和分类页面,并使用 CDN 快速交付图像和静态内容。安全且符合 PCI DSS 标准的支付网关可确保顺畅的结账体验。为了衡量用户满意度,您可以分析诸如跳出率、退出页面、页面停留时间、转化率、购物车放弃率、热力图、错误跟踪以及客户流失率等指标。
数据收集与分析
像 Shopify Analytics 和 Google Analytics 这样的分析工具会收集生产环境中关于用户行为、流量模式和转化率的数据,提供有价值的见解以优化网站性能和用户体验。
性能监控
监控性能问题和错误以维持在线访问。这包括实时跟踪网站速度、错误率和用户行为,从而能够快速解决新出现的问题,将干扰降至最低。
实时交易处理
生产环境处理所有销售交易,包括下单、支付处理和库存更新。
计划内更新和部署
为了在计划内的维护窗口期内实现平稳过渡并将对用户的干扰降至最低,Web 开发人员会将经过测试和验证的代码更改从暂存环境部署到生产环境。
安全事件响应
在生产环境中,您需要通过快速隔离受影响的系统、遏制损害、消除威胁、恢复数据并分析事件以防止再次发生,来应对数据泄露或网络攻击。
暂存环境与生产环境的常见问题解答
暂存环境是否与预生产环境相同?
是的,暂存环境与预生产环境是同义词。暂存环境是生产环境的副本,用于部署前的集成测试。
暂存环境与 UAT(用户验收测试)是否相同?
用户验收测试(UAT)与暂存环境并不完全相同,尽管 UAT 通常在暂存环境中进行。可以将暂存环境视为环境本身,而 UAT 是在其中进行的特定测试类型。在这种情况下,最终用户测试可确保 Web 应用符合用户需求和期望。
UAT 是否在生产环境中进行?
通常不建议在生产环境中进行 UAT。然而,一些公司可能会向部分用户在生产环境中部署新功能以收集真实世界的反馈——这种方法称为金丝雀测试,犹如煤矿中的金丝雀。但这存在风险。必须实施强大的监控和回滚计划,以最大限度地降低对用户体验造成干扰的风险。

