【发布时间】:2018-12-16 23:55:03
【问题描述】:
我有一个使用关系 DBMS 的现有系统。由于各种内部原因,我无法使用 NoSQL 数据库。
该系统将获得一些将使用 Kubernetes 和 Docker 部署的微服务,目的是进行滚动升级以减少停机时间。后端数据层将使用现有的关系 DBMS。微服务将遵循良好实践并在 DBMS 上“拥有”它们的数据存储。与此有关的一个大问题似乎是如何处理跨此管理数据库的结构。我已经完成了我的研究:
- https://blog.philipphauer.de/databases-challenge-continuous-delivery/
- http://www.grahambrooks.com/continuous%20delivery/continuous%20deployment/zero%20down-time/2013/08/29/zero-down-time-relational-databases.html
- http://blog.dixo.net/2015/02/blue-turquoise-green-deployment/
- https://spring.io/blog/2016/05/31/zero-downtime-deployment-with-a-database
- https://www.rainforestqa.com/blog/2014-06-27-zero-downtime-database-migrations/
所有讨论似乎都围绕添加/删除列和数据迁移这一点而停止。没有讨论如何管理存储过程、视图、触发器等。
应用程序使用 .NET Full 和 .NET Core 编写,Entity Framework 作为 ORM。
有没有人对如何使用关系 DBMS 进行连续交付有任何见解,它是一个完整的生产系统?是不是又回到了这里的绘图板?使用关系 DBMS 对于滚动更新来说“太难”了?
PS。尽管这是一个持续的交付问题,但我也标记了 Kubernetes 和 Docker,因为这将是用于事物的编排/容器方面的底层技术。
【问题讨论】:
-
您可以使用蓝绿部署流程 - martinfowler.com/bliki/BlueGreenDeployment.html 正如您所说您使用的是 docker,因此这将很容易部署
标签: docker kubernetes relational-database continuous-deployment