现在,Addison 和 Austen 已经获得许可,可以迁移到分布式架构 ,并拆分单体的 Sysops Squad 应用程序,他们需要确定如何开始的最佳方法。
"这个应用程序太大了,我都不知道从何说起。它有一头大象那么大!"艾迪生感叹道。
"好吧,"奥斯汀说。"大象怎么吃?"
"哈,我以前听过这个笑话,奥斯汀。当然是一口一个!"爱迪生笑道。
"没错。那么,让我们用同样的原则来处理 Sysops 小队的应用程序吧,"奥斯汀说。"我们为什么不一次一口地把它拆开呢?还记得我说过,报告是导致应用程序冻结的原因之一吗?也许我们应该从这里开始"。
"艾迪森说:"这也许是个好的开始,但数据怎么办?仅仅将报告作为一项单独的服务并不能解决问题。我们还需要将数据拆分开来,甚至创建一个单独的报告数据库,并用数据泵为其提供数据。我认为,从一开始就这样做,代价太大了。
"你说得对,"奥斯汀说。"嘿,知识库功能怎么样?那是相当独立的,可能更容易提取。"
"没错。那调查功能呢?这应该也很容易分离出来。"艾迪森说。"问题是,我不禁觉得我们应该更有条不紊地解决这个问题,而不是一口一口地吃掉大象。"
"奥斯汀说:"也许洛根能给我们一些建议。
Addison 和 Austen 与 Logan 会晤,讨论了他们正在考虑的如何拆分应用程序的一些方法。他们向 Logan 解释说,他们想从知识库和调查功能入手,但不确定之后该怎么做。
"洛根说:"你建议的方法就是所谓的大象迁移反模式。一口一口地吃掉大象在开始时可能看起来是个好方法,但在大多数情况下,这会导致一种无序的方法,从而形成一大团分布式泥浆,也有人称之为分布式巨石。我不建议采用这种方法。
"那么,还有其他方法吗?有什么模式可以用来拆分应用程序吗?"艾迪生问道。
"洛根说:"你需要从整体上看待应用程序,并应用战术分叉或基于组件的分解。"据我所知,这是两种最有效的方法。
艾迪生和奥斯汀看着罗根。"但我们怎么知道用哪个呢?"