【问题标题】:Any reason NOT to use subdomain for development?有什么理由不使用子域进行开发?
【发布时间】:2011-01-18 14:46:45
【问题描述】:

我最初计划使用我们网络上的本地计算机作为开发服务器。

然后我有了使用子域的想法。

因此,如果该站点位于 www.example.com,则可以在 dev.example.com 进行开发。

如果我这样做,我会知道整个软件堆栈的配置与开发和生产完全相同。此外,开发可以使用与生产相同的数据库,从而消除同步数据的麻烦。我什至可以使用相同的媒体(图片、视频等)

我从来没有听说过其他人这样做,而对于所有这些专业人士,我想知道为什么不这样做?

这种方法有什么缺点?


更新

好的,所以这种方法的主要禁忌似乎是使用相同的数据库进行开发和生产。如果你把它排除在等式之外,这仍然是一个糟糕的主意吗?

【问题讨论】:

  • 使用子域如何等同于拥有相同的环境?你的意思是子域将指向生产?在这种情况下,为什么不直接在生产上进行开发呢?缺点:您正在开发生产。将生产数据库用于开发也是如此。

标签: subdomain


【解决方案1】:

您提到的明显优点是:无需复制文件、数据库甚至软件堆栈。明显的骗局要大一些:您使用的是完全相同的文件、数据库,甚至是软件堆栈。不用说:如果您的开发工作不正常(无限循环,等等),生产将与它一起被拉下。显然,有可能在操作系统中监禁这两种环境,但在这种情况下,你又回到了原点。

我的建议:使用专用的开发机器,而不是生产服务器进行开发。您想将其拆分以保持稳定性。

PS:很明显,如果开发环境错过了“WHERE id = ?”,生产数据库中的所有信息都会被删除。这听起来像个大问题,不是吗? :)

【讨论】:

    【解决方案2】:

    人们这样做。

    但是,针对生产数据库运行开发是个坏主意。
    如果您的开发代码不小心覆盖了某个字段会怎样?

    【讨论】:

    • 您为什么要针对生产基地运行您的开发代码?艰难,我还年轻,我从没见过有人这样做。开发代码始终针对开发/测试数据库进行部署。
    【解决方案3】:

    按照您的建议,我们使用生产域的子域进行开发,但是开发代码接触产品数据库的想法有点令人毛骨悚然。

    【讨论】:

      【解决方案4】:

      根据我的经验,使用相同的数据库进行生产和开发是无稽之谈。您将如何在不更改代码的情况下更改数据模型? 还有两件事:

      1. 明智的做法是在 SQL 脚本中准备所有更改,即在从不同环境而不是您的控制台进行测试后运行。实时系统的一些意外更新让我头疼了好几个星期。
      2. 曾经发生在我身上,由于无序的查询结果,恢复的备份没有重现实时系统问题。这种奇怪的备份方式后来帮助我们找到了真正的问题,比在实时系统上重试更简单。

      【讨论】:

        【解决方案5】:

        使用生产机器进行开发会剥夺您的实验能力。在实际环境中尝试新的模块/配置可能非常危险。如果我在 apache conf 中出现错误而弄乱了我们的开发机器,我只会给我的开发伙伴带来些许不便。当人们试图给你钱时,你将关闭实时服务器。

        不仅如此,您还将与现场环境共享资源。当开发服务器还必须与实际客户打交道时,您可以忘记压力测试。任何可能导致开发服务器出现问题的错误(无限循环占用整个 CPU、HDD 空间不足等)都会突然成为真正的问题。

        【讨论】:

          猜你喜欢
          • 2012-03-03
          • 1970-01-01
          • 2015-04-23
          • 2010-09-29
          • 2013-09-27
          • 2011-11-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多