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

Database 使用相同的数据/源代码同步多台服务器和本地计算机,database,git,postgresql,docker,virtual-machine,Database,Git,Postgresql,Docker,Virtual Machine,背景: 与2名开发人员一起构建web应用程序。RESTful后端通过烧瓶。使用Linux、Apache、Redis和Postgres 3台服务器: 1用于生产 1.促进发展 1用于UAT 4个数据库: 1个用于PROD/UAT服务器 1用于开发服务器 1为本地计算机上的开发人员A 1用于开发人员B在其本地计算机上 2台本地计算机/开发人员 除了这4个数据库之外,开发人员每个人都有一个用于测试的附加数据库。两个开发人员之间的测试数据库需要始终完全相同 开发人员B有自己的数据分支,向主r

背景:

与2名开发人员一起构建web应用程序。RESTful后端通过烧瓶。使用Linux、Apache、Redis和Postgres

  • 3台服务器:
    • 1用于生产
    • 1.促进发展
    • 1用于UAT
  • 4个数据库:
    • 1个用于PROD/UAT服务器
    • 1用于开发服务器
    • 1为本地计算机上的开发人员A
    • 1用于开发人员B在其本地计算机上
  • 2台本地计算机/开发人员
除了这4个数据库之外,开发人员每个人都有一个用于测试的附加数据库。两个开发人员之间的测试数据库需要始终完全相同

开发人员B有自己的数据分支,向主repo发送pull请求,主repo由开发人员A处理

问题:

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

开发人员在不同的环境和不同的分支上工作。我们在github中使用pull请求将代码传输到开发人员A的主repo

问题


对于我们的数据库问题,您推荐什么解决方案?有没有更好的方法来共享数据?开发人员a和开发人员B有没有更好的方法来共享他们的环境和源代码?

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

  • 2-3名开发商
  • 每个开发人员都有一个完整的环境
  • 集成、UAT和生产服务器对(所有虚拟机)
  • Linux、Mongodb、Django和Angular
代码 经过几次错误的开始,我们已经确定了功能分支方法和一个良好的工作建议。看见目前,我们有一个生产和开发部门。只有一个人处理“功能”(或我们配对)。功能应该是短期的。必要时,我们可以在多个功能之间切换。我们可以在需要时从一个功能合并到另一个功能。当我们重新融入到开发中时,一切都变得非常清晰。开销很小,我们很少互相踩脚趾头。当我们这样做的时候,diff清楚地表明我们需要手动修复什么。一个好的GIT UI工具很有帮助

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

发布 从dev->integration->uat->prod向上的链也由应用程序管理页面处理。任何系统都可以导出,但只能导出到下一阶段。它不是自动导入的。进口不是automagic。目标环境的管理员被告知有可用的版本。他们可以从管理页面导入它。我们对代码和数据库集合也这样做


将其集成起来,而不是知道要运行哪个脚本,这是非常有用的。如果它在您的环境中工作得更好,那么它可能是一个单独的应用程序。

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

  • 2-3名开发商
  • 每个开发人员都有一个完整的环境
  • 集成、UAT和生产服务器对(所有虚拟机)
  • Linux、Mongodb、Django和Angular
代码 经过几次错误的开始,我们已经确定了功能分支方法和一个良好的工作建议。看见目前,我们有一个生产和开发部门。只有一个人处理“功能”(或我们配对)。功能应该是短期的。必要时,我们可以在多个功能之间切换。我们可以在需要时从一个功能合并到另一个功能。当我们重新融入到开发中时,一切都变得非常清晰。开销很小,我们很少互相踩脚趾头。当我们这样做的时候,diff清楚地表明我们需要手动修复什么。一个好的GIT UI工具很有帮助

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

发布 从dev->integration->uat->prod向上的链也由应用程序管理页面处理。任何系统都可以导出,但只能导出到下一阶段。它不是自动导入的。进口不是automagic。目标环境的管理员被告知有可用的版本。他们可以从管理页面导入它。我们对代码和数据库集合也这样做

将其集成起来,而不是知道要运行哪个脚本,这是非常有用的。如果它在您的环境中工作得更好,那么它可以是一个单独的应用程序