database - 如何在一个由多个应用程序组成的平台上实现持续交付,这些应用程序都依赖于一个数据库并且相互依赖?

标签 database architecture gitlab devops gitlab-ci

我们正在开发旧项目,该项目由多个应用程序组成,这些应用程序都使用相同的数据库并且彼此强烈依赖。由于项目的规模,我们无法重构代码,因此他们都使用 API 作为单个数据库源。该平台包含以下应用程序:

  • 网站
  • 管理/CMS
  • API
  • 定时任务

现在我们想要开始使用 Gitlab 实现 CI/CD 管道。我们目前遇到了问题,因为我们无法在不破坏所有其他应用程序的情况下更新部署一个应用程序的数据库(除非我们部署所有应用程序)。

我正在考虑一种解决方案,其中一个管道触发所有其他管道。每个管道将执行所有新添加的数据库迁移,并测试管道是否仍在正常工作。如果所有管道都成功,则将启动所有应用程序的部署。

我怀疑这是否是一个好的解决方案,因为这种更改只会增加我们的应用程序之间已经很高的耦合度。有人知道如何为我们的平台实现 CI/CD 的更好解决方案吗?

最佳答案

您必须停止将它们视为单独的应用程序。您拥有一个包含多个模块的整体应用程序,但在它们可以解耦之前,它们都是一个应用程序,并且必须如此部署。

通过假装它们不是来对抗这个问题可能是浪费时间,你的努力最好花在实际解耦这些系统上。

关于database - 如何在一个由多个应用程序组成的平台上实现持续交付,这些应用程序都依赖于一个数据库并且相互依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55811433/

相关文章:

.net - 为 dll 设置单独的配置文件是否是好的设计?

git克隆一个与我的linux用户不同的用户的存储库

windows - Gitlab 工件上传好慢

python - 如何将文件的所有 git 版本保存到磁盘?

c# - 根据数据库查找表中的值自动创建枚举?

iPhone Dev - 尝试按顺序访问 sqlite3 表的每一行

database - PL SQL 查找表字段的依赖关系

mysql - "FIELDS TERMINATED BY"和 "LINES TERMINATED BY"有什么问题?

caching - Akamai 与 CloudFront

c# - 具有不断变化的数据类型的管道在架构上是否合理?