我尝试解决有趣的理论家 - 关于事件源,事件版本控制和A / B测试的哲学问题,并希望从实践中获得一些建议和解决方案。
事件回归的主要好处之一是将应用程序轻松简单地过渡到即将发布的版本。在新版本中创建事件并为其编写事件处理程序就足够了,应用程序将与旧事件和新事件一样工作。它节省了数据迁移的需要,是事件采购的主要特征。
但实际上更复杂的问题会遇到。让新的应用程序版本准备好,但是为所有用户发布它是危险的,希望通过传统的A / B测试来检查稳定性和不正确的工作容量。起初,最少的用户被转移到新版本,如果没有负面反馈,那么越来越多的用户逐渐升级到新版本。
现在,有权访问升级版本的用户开始工作,并且创建了旧版本无法理解的新类型的基础事件。似乎根据一个事件的理论,但是在实践中它会带来严重的问题。
假设我们的应用程序是论坛,井或信使。升级版本的用户携带活动,发送某人消息,但旧版本的用户将看不到它们。消息会在任何地方消失,并且无法使用产品。实际上,事件的更新非常少,例如,为消息添加了一个表情符号。从商业价值的角度来看,一切都应该对用户没有任何问题。
是否有一些众所周知的方法可以解决这个问题?是的,它可能与意识形态和事件采购理论略有不同,但对最终用户/客户来说,这种优势更为重要。
答案 0 :(得分:0)
我看到两种变体:
第一个变体是为您的事件添加另一个version
字段。在旧投影中,您必须转换消息,删除新符号或其他。在新投影中,您使用原始邮件而不进行转换。
第二个变体是在事件中添加新的message
字段。因此,在网络上(在论坛的情况下),您生成具有两个消息字段的事件 - 用于新版本和旧版本。
对于cource,这两种变体都是临时的,将来你可以改变事件的格式。