使用相同的数据/源代码同步多个服务器和本地计算机

时间:2015-07-23 21:31:09

标签: database git postgresql docker virtual-machine

背景:

与2名开发人员组成的团队构建Web应用程序。通过Flask提供RESTful后端。使用Linux,Apache,Redis和Postgres。

  • 3台服务器:
    • 1 for production
    • 1 for development
    • 1 for UAT
  • 4个数据库:
    • 1表示PROD / UAT服务器
    • 1用于DEV服务器
    • 1用于本地计算机上的开发人员
    • 1用于本地计算机上的开发人员B
  • 2台本地机器/开发商

除了4个数据库之外,开发人员还有一个额外的数据库用于测试。在两个开发人员之间,此测试数据库必须始终完全相同。

开发人员B拥有自己的数据分支,将拉取请求发送到主仓库,由开发人员A处理。

问题:

我们没有真正的协议来轻松地在每个数据库之间传输数据。例如,开发人员测试数据库通常是不同的,这会导致混乱。将数据从DEV移动到UAT / PROD是手动完成的。

开发人员在不同的环境和不同的叉子上工作。我们在github中使用pull请求将代码传输到Developer A的主要仓库。

问题

您建议什么作为我们的数据库困境的解决方案?有没有更好的方式来共享数据?是否有更好的方法让开发人员A和开发人员B共享他们的环境和源代码?

1 个答案:

答案 0 :(得分:0)

我一直在为今年类似规模的环境解决这个问题。技术不同,但简而言之:

  • 2-3名开发人员
  • 每个开发人员都有一个完整的环境
  • 集成,UAT和生产服务器对(所有VM)。
  • Linux,Mongodb,Django和Angular

<强>代码 经过一些错误的开始,我们已经确定了功能分支方法和良好的工作主张。见http://nvie.com/posts/a-successful-git-branching-model/。目前,我们拥有生产和开发分支的硕士学位。只有一个人使用&#39;功能&#39; (或我们配对)。功能应该是短暂的。必要时,我们可以在多个功能之间切换。我们可以在需要时从一个功能合并到另一个功能。当我们合并回开发时,这一切都非常干净。开销很小,我们很少互相踩到脚趾。当我们做差异时,清楚地说明了我们需要手动修复的内容。一个好的GIT用户界面工具有帮助。

<强>数据库 您可以使用共享数据库进行开发。我们没有。每个开发人员都有独立的环境。我们可能需要收藏品,但通常来自UAT或prod而不是彼此。我创建了一个全面的管理页面。在任何环境中,我们都可以导出集合集。有必要的机制可以发送此导出。这用于获取prod数据并将其放在UAT中以进行问题复制。然后我们可以回到Integration和dev进行修复。同样,开发人员可以使用相同的应用程序管理页面共享数据。

<强>版本 从dev开始上链 - &gt;整合 - &gt; uat - &gt; prod也由应用程序管理页面处理。任何系统都可以导出,但只能导出到下一个阶段。它不会自动导入。导入不是自动化的。目标环境的管理员被告知可用的版本。他们可以从管理页面导入它。我们对代码和数据库集合也这样做。

将其集成而不是知道要运行哪个脚本是很有用的。如果它在您的环境中起作用,它可能是一个单独的应用程序。