我试图避免做出假设并提出错误的问题。我将描述我所处的情况以及问题是什么。
我目前有一台运行开发和测试数据库的开发服务器。开发人员在本地运行 Apache,但连接到测试服务器数据库,以便每个人都在同一页面上。随着时间的推移,这台服务器的职责越来越大。它通常用作客户签署变更的暂存区。同时,客户端和数据库的数量也在增长。今天,开发服务器陷入停顿。这对开发团队今天的工作流程造成了真正的干扰。
测试期间设置的活跃开发和 CRON 任务最终导致服务器速度变慢,以至于无法使用。我认为服务器的磁盘访问是瓶颈。
我之前曾要求升级硬件,但遗憾的是管理层没有提供。硬件升级也只能起到有限的作用。我想知道是否有更好的方法来实现我们想要的效果,并希望在新服务器到达时以正确的方式进行设置。
理想情况下,我希望有一个系统,当网站未处于积极开发状态时,可以轻松“停止”网站,包括其 cron 广告,使其暂存 URL 无法访问。同样重要的是,我需要一种简单的方法来再次“启动”它们,最好是通过 UI,以便我们的非技术人员可以做到这一点。
我喜欢基于 docker/vm 的解决方案,但我并不 100% 确定如何维护它。使用这类解决方案的最大障碍可能是我不确定如何设置它们以用作暂存环境。
答案1
您可以为每个测试项目分配自己的高端口,而不是使用普通的 SQL 端口,并将这些端口转发到 1433 上的真实 SQL 服务器(或任何位置)。然后,您就可以控制端口转发。您可以对 HTTP 端口执行相同操作。
它们可以在服务器本身上转发(使用 iptables 或firewalld),也可以在客户端上转发(使用防火墙、ssh 隧道或它们平台上可以使用的任何东西)。
如果在客户端完成此操作,您就不必向所有开发人员授予服务器上的 root 访问权限来重新打开他们的端口。另一个好处是,如果服务器由于负载过大而完全无法使用,您仍然可以关闭客户端上的端口转发,直到负载变得更容易管理并且您可以再次访问服务器。
答案2
将开发与用户验收测试隔离开来会很有用。有几种方法可以做到这一点。
将资源拆分为单独的 dev 和 uat VM。只有当另一位开发人员确认不会影响性能或其他方面的问题时,才能从 dev 转移到 uat。
让开发人员在自己的工作站上运行自己的更改。使用部署工具,可以使用暂存数据库的本地副本及其代码修订启动虚拟机。合并该分支后,继续在暂存/uat 系统上进行集成测试。