在Kevin Goldsmith 2015年关于Spotify微服务(15:25-17:43)的讨论中,他提到当他们创建一个新版本的API时,他们只需创建一个新服务器,并保持旧服务器运行旧版本只要还有客户呼叫它(在这种情况下,嵌入了Spotify的智能灯).
我很困惑他们将如何能够维护和提供旧版本的潜在年份,当时在这段时间内肯定会有数据库架构更改?
我可以看到一些可能的解决方案,但它们似乎都不合理:
解决方案1听起来会引起太多的代码味道,遗留代码无处不在(在我看来,凯文似乎暗示他们当然不这样做).
对于其他服务或报告,解决方案2听起来像是一场噩梦.如果您想要的实体信息在您要求的实体的另一个版本的数据库中,该怎么办?
解决方案3听起来更像是一场噩梦,因为您必须编写代码来将您的版本请求迁移到您上面和下面的版本.这意味着您不能在创建新版本时保留现有(当前正在生产的版本)版本,因为您需要添加迁移以向前和向后移动请求,以便所有版本都接收到正确的请求参数.
希望我在这里错过了一些简单的东西,并且有一个神奇的解决方案可以让这个问题变得更容易,但我真的看不出它们是如何实现这一目标的?
谢谢!