Rails系统重构:从单一复杂系统到多个小应用集群
2010-10-09 08:15:34 来源:WEB开发网核心提示: 难以测试与部署复杂的业务代码不仅会增加写测试代码的难度,运行测试的时间也必然会随之增加,Rails系统重构:从单一复杂系统到多个小应用集群(2),大量的fixtures不仅难以管理,还经常会造成互相干扰,由于每一个应用都是独立的Rails程序,而一个较为复杂的业务流程可能要在多个应用间跳转,复杂
难以测试与部署
复杂的业务代码不仅会增加写测试代码的难度,运行测试的时间也必然会随之增加。大量的fixtures不仅难以管理,还经常会造成互相干扰。
复杂的系统也增加了部署的风险,一个小错误可能会导致整个系统的崩溃。为了降低这种风险,需要延长系统部署的周期,只在特定的时间或系统有重大更新时才部署,这样就在一定程度上弱化了Rails系统根据用户需求快速升级迭代的优点。
影响团队建设
除了技术上的问题,复杂的Rails系统对团队建设也会产生不利影响。首先如果某个开发人员提交了测试无法通过的代码,会对其他人的工作产生影响,降低开发效率;其次对于复杂的系统,增加新功能或修复bug都变得比较困难,久而久之程序员就会产生惰性,代码能少改的就少改,严重阻碍了系统的快速进化;最后在团队有新人加入时,会担心由于其不熟悉系统造成系统崩溃,而不敢放手让他真正参与进来,这样对新人的成长是十分不利的。
轻量级应用集群
为解决复杂的Rails系统产生的一系列问题,我们将单一系统按照业务功能进行划分,每一部分用一个独立的Rails应用来实现,从而形成若干个轻量Rails应用集群,这些应用相互协作,共同实现整体业务逻辑。
拆分后每一个Rails应用具有如下特征:
有独立的数据库,可以独立运行;
程序代码量比较小,一般情况下只需要一到两个程序员开发与维护;
高内聚、低耦合。
系统进行拆分后,需要解决一系列关键的问题,例如:如何保持用户体验的一致性、应用之间如何交互、如何共享用户等。下面将逐一针对这些问题介绍解决方案。
用户体验一致性
系统进行拆分后,由若干个轻量级应用共同协作来完成某项业务操作。由于每一个应用都是独立的Rails程序,而一个较为复杂的业务流程可能要在多个应用间跳转,所以首先要解决用户体验的一致性问题。
[]
更多精彩
赞助商链接