您如何在 blue/green 部署中管理共享数据库?
How do you manage a shared database in blue/green deployments?
我们有一个托管应用程序,我们正开始 blue/green 部署。该应用程序有 3 个不参与 blue/green 切面的后台服务。它们中只有一个实例在任何给定时间运行。我们在 tomcat 下有两个网络应用程序作为我们的 public 面向应用程序。一个是用户界面,另一个是我们的 restful api。我们前面有一个代理服务器,所以我们可以进行 blue/green 切换。所有这些服务共享一个数据库。
我的问题是您如何管理 blue/green 部署而不对共享数据库创建向后不兼容的更改?我担心的是我们的蓝色应用程序启动并进行数据库更改,这会把绿色应用程序打得落花流水。
顺便说一句,我们的应用程序 spring 休眠 java 应用程序使用 flyway 在启动时迁移数据库。
您可以使用 Refactoring Practices 中介绍的做法。
这些做法可以帮助您以向后兼容的方式迁移数据库。例如,当您想重命名蓝色部署中的列时,您必须拥有旧列,直到绿色可用。
此外,spring 有一个 good example,其中包含 FlyWayDB 的详细信息。
我们有一个托管应用程序,我们正开始 blue/green 部署。该应用程序有 3 个不参与 blue/green 切面的后台服务。它们中只有一个实例在任何给定时间运行。我们在 tomcat 下有两个网络应用程序作为我们的 public 面向应用程序。一个是用户界面,另一个是我们的 restful api。我们前面有一个代理服务器,所以我们可以进行 blue/green 切换。所有这些服务共享一个数据库。
我的问题是您如何管理 blue/green 部署而不对共享数据库创建向后不兼容的更改?我担心的是我们的蓝色应用程序启动并进行数据库更改,这会把绿色应用程序打得落花流水。
顺便说一句,我们的应用程序 spring 休眠 java 应用程序使用 flyway 在启动时迁移数据库。
您可以使用 Refactoring Practices 中介绍的做法。 这些做法可以帮助您以向后兼容的方式迁移数据库。例如,当您想重命名蓝色部署中的列时,您必须拥有旧列,直到绿色可用。
此外,spring 有一个 good example,其中包含 FlyWayDB 的详细信息。