我们有一个供旧式整体Web应用程序使用的数据库,该数据库通常由数据库开发人员团队进行更改。其他开发团队的任务是将旧版Web应用程序的许多功能引入ASP.NET Core 2.1 WebApi微服务中。每个微服务都使用该数据库和“数据库优先”方法。因此,我们的微服务中有很多模型。但是,传统的Web应用程序本身就是生活,数据库开发人员通常会修改它。因此,这打破了我们的微服务模型。我们无法使用迁移,因为它会破坏我们目前无法关闭的旧版Web应用程序。
因此,我们决定使用“模型优先”方法和自定义SQL视图,该方法实现了自定义EF Core 2.1 QueryType和数据库表之间的这种约定。因此,如果数据库开发人员将更改数据库表,例如删除列或更改列类型等,他们将收到一条消息,告知该列存在一个视图,因此您不能简单地删除它。这种方法为我们提供了一种保护级别,用于修改微服务模型中使用的架构部分。
因此,由于业务需求,具有Web数据库的遗留Web应用程序应该可以进行修改。因此,具有其数据库的旧式整体式Web应用程序是优先的。但是这些修改打破了我们的微服务模型,但是我们当然不想要它。
处理这种情况的最佳实践是什么?
这是一个很好的问题,这个问题很多。
一种选择是文化性的:实施代码审查过程,数据库开发人员需要创建“ 拉取请求”,并且在没有获得应用程序开发人员至少2次批准的情况下,不能推送/合并数据库修改脚本和/或执行发布。
如果数据库开发人员没有通过版本控制来循环更改,和/或他们不愿意意识到您的需求,和/或他们不愿意在文化和流程更改过程中进行合作(就像敏捷/ DevOps的奉献者应该这样做) ,那么是的,您将需要考虑其他选项。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。