【问题标题】:How do you manage a shared database in blue/green deployments?您如何管理蓝/绿部署中的共享数据库?
【发布时间】:2015-04-26 20:40:33
【问题描述】:

我们有一个托管应用程序,我们开始使用它开始蓝/绿部署。该应用程序有 3 个不参与蓝/绿方面的后台服务。它们中只有一个实例在任何给定时间运行。我们在 tomcat 下有两个 Web 应用程序作为我们面向公众的应用程序。一个是用户界面,另一个是我们的restful api。我们前面有一个代理服务器,所以我们可以进行蓝/绿切换。所有这些服务共享一个数据库。

我的问题是如何管理蓝/绿部署,而不是对共享数据库创建向后不兼容的更改?我担心我们的蓝色应用程序会启动并进行数据库更改,从而将绿色应用程序从水中吹走。

顺便说一下,我们的应用程序是 spring hibernate java 应用程序,它们使用 flyway 在启动时迁移数据库。

【问题讨论】:

  • 很抱歉,这个问题在本网站上是题外话;您可以尝试使用 serverfault,并邀请您在area51.stackexchange.com/proposals/66151/devops 上将其作为示例问题发布(因为这确实是一个好问题)
  • 您可以考虑将两个应用程序合二为一,或者让用户界面通过 API 连接而不是直接连接到数据库。你不一定想要martinfowler.com/bliki/IntegrationDatabase.html
  • 感谢该文章的链接。 Martin Fowler 似乎总是能很好地表达我对设计的不良感受。我们目前正朝着微服务的方向发展,其中应用程序的每个部分都将拥有自己的数据库。

标签: java spring hibernate deployment flyway


【解决方案1】:

您可以使用Refactoring Practices 中介绍的做法。 这些做法可以帮助您迁移具有向后兼容性的数据库。例如,当您要重命名蓝色部署中的列时,您必须拥有旧列,直到绿色可用为止。

另外,spring 有一个 good example 与 FlyWayDB 的详细信息。

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
  • @theblindprophet 对不起。我同意你的看法。我编辑了我的答案。
  • 好文章!对不起,我这么晚才回复。实际上,我们从一开始就在 spring 和 flyway 上这样做了,而且效果出奇的好。我希望有一种神奇的方式可以帮助防止不兼容的更改。很高兴看到其他人也这样做。
猜你喜欢
  • 2019-01-28
  • 2018-06-01
  • 2015-07-21
  • 2019-01-01
  • 2021-07-18
  • 1970-01-01
  • 2017-03-16
  • 2017-07-10
  • 1970-01-01
相关资源
最近更新 更多